1
linux/drivers
Jens Axboe 9e973e64ac xen/blkfront: use blk_rq_map_sg to generate ring entries
On occasion, the request will apparently have more segments than we
fit into the ring. Jens says:

> The second problem is that the block layer then appears to create one
> too many segments, but from the dump it has rq->nr_phys_segments ==
> BLKIF_MAX_SEGMENTS_PER_REQUEST. I suspect the latter is due to
> xen-blkfront not handling the merging on its own. It should check that
> the new page doesn't form part of the previous page. The
> rq_for_each_segment() iterates all single bits in the request, not dma
> segments. The "easiest" way to do this is to call blk_rq_map_sg() and
> then iterate the mapped sg list. That will give you what you are
> looking for.

> Here's a test patch, compiles but otherwise untested. I spent more
> time figuring out how to enable XEN than to code it up, so YMMV!
> Probably the sg list wants to be put inside the ring and only
> initialized on allocation, then you can get rid of the sg on stack and
> sg_init_table() loop call in the function. I'll leave that, and the
> testing, to you.

[Moved sg array into info structure, and initialize once. -J]

Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
Signed-off-by: Jeremy Fitzhardinge <jeremy.fitzhardinge@citrix.com>
2009-02-26 10:45:48 +01:00
..
accessibility
acpi Merge branches 'release', 'bugzilla-12011', 'bugzilla-12632', 'misc' and 'suspend' into release 2009-02-21 22:01:43 -05:00
amba
ata [libata] pata_legacy: for VLB 32bit PIO don't try tricks with slop 2009-02-25 15:30:23 -05:00
atm ATM: misplaced parentheses? 2009-02-18 17:41:38 -08:00
auxdisplay
base PM: Split up sysdev_[suspend|resume] from device_power_[down|up], fix 2009-02-22 22:09:33 +01:00
block xen/blkfront: use blk_rq_map_sg to generate ring entries 2009-02-26 10:45:48 +01:00
bluetooth
cdrom
char m68k: atari - Rename "mfp" to "st_mfp" 2009-02-22 09:23:02 -08:00
clocksource
connector
cpufreq [CPUFREQ] Make ignore_nice_load setting of ondemand work as expected. 2009-02-05 12:25:26 -05:00
cpuidle
crypto
dca dca: redesign locks to fix deadlocks 2009-02-02 23:26:57 -08:00
dio
dma atmel-mci: fix initialization of dma slave data 2009-02-18 15:37:55 -08:00
edac powerpc: More printing warning fixes for the l64 to ll64 conversion 2009-01-28 17:15:52 +11:00
eisa
firewire firewire: core: Remove card from list of cards when enable fails 2009-02-01 11:17:24 +01:00
firmware Bernhard has moved 2009-02-18 15:37:56 -08:00
gpio gpiolib: fix request related issue 2009-01-29 18:04:43 -08:00
gpu drm/i915: convert DRM_ERROR to DRM_DEBUG in phys object pwrite path 2009-02-25 14:52:30 +10:00
hid HID: move tmff and zpff devices from ignore_list to blacklist 2009-02-17 13:25:01 +01:00
hwmon lis3lv02d: add axes knowledge of HP Pavilion dv5 models 2009-02-18 15:37:54 -08:00
i2c Add i2c_board_info for RiscPC PCF8583 2009-02-24 19:19:50 +01:00
ide ide: fix refcounting in device drivers 2009-02-25 20:28:24 +01:00
idle
ieee1394 ieee1394: remove superfluous assertions 2009-02-24 14:51:28 +01:00
infiniband
input
isdn ISDN: fix sc/shmem printk format warning 2009-02-20 00:54:44 -08:00
leds
lguest lguest: Fix a memory leak with the lg object during launcher close 2009-01-30 11:34:11 +10:30
macintosh
mca
md md: avoid races when stopping resync. 2009-02-25 13:18:47 +11:00
media firedtv: dvb_frontend_info for FireDTV S2, fix "frequency limits undefined" error 2009-02-24 17:58:23 +01:00
memstick
message
mfd mfd: Fix sm501_register_gpio section mismatch 2009-02-17 09:48:05 +01:00
misc sgi-xp: fix writing past the end of kzalloc()'d space 2009-02-05 12:56:49 -08:00
mmc Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/drzeus/mmc 2009-02-18 17:55:15 -08:00
mtd [ARM] 5400/1: Add support for inverted rdy_busy pin for Atmel nand device controller 2009-02-16 21:40:39 +00:00
net Fix iwlan DMA mapping direction 2009-02-25 09:30:56 -08:00
nubus
of
oprofile
parisc Documentation: move DMA-mapping.txt to Doc/PCI/ 2009-01-29 18:19:29 -08:00
parport m68k: atari - Rename "mfp" to "st_mfp" 2009-02-22 09:23:02 -08:00
pci Merge git://git.infradead.org/iommu-2.6 2009-02-25 09:31:21 -08:00
pcmcia
platform fujitsu-laptop: Use RFKILL support bitmask from firmware 2009-02-21 21:59:55 -05:00
pnp
power pcf50633_charger: Fix typo 2009-02-02 19:53:02 +03:00
ps3
rapidio
regulator leds: Fix bounds checking of wm8350->pmic.led 2009-01-30 21:50:49 +00:00
rtc rtc: t reaches -1, tested 0 2009-02-11 14:25:36 -08:00
s390 [S390] fix "mem=" handling in case of standby memory 2009-02-19 15:19:19 +01:00
sbus
scsi [SCSI] qla2xxx: Update version number to 8.03.00-k3. 2009-02-10 11:15:20 -05:00
serial 8250: fix boot hang with serial console when using with Serial Over Lan port 2009-02-20 17:57:50 -08:00
sh
sn
spi spi-gpio: sanitize MISO bitvalue 2009-02-18 15:37:56 -08:00
ssb
staging Staging: panel: fix lcd panel driver build failure 2009-02-09 11:26:18 -08:00
tc
telephony
thermal
uio
usb Merge master.kernel.org:/home/rmk/linux-2.6-arm 2009-02-19 09:52:12 -08:00
uwb
video m68k: atari - Rename "mfp" to "st_mfp" 2009-02-22 09:23:02 -08:00
virtio virtio-pci: do not oops on config change if driver not loaded 2009-02-02 19:17:56 -08:00
w1 w1: w1 temp calculation overflow fix 2009-02-11 14:25:37 -08:00
watchdog Merge master.kernel.org:/home/rmk/linux-2.6-arm 2009-02-19 09:52:12 -08:00
xen PM: Split up sysdev_[suspend|resume] from device_power_[down|up] 2009-02-22 10:33:44 -08:00
zorro
Kconfig
Makefile