linux/drivers/block
Yehuda Sadeh 1fec70932d rbd: fix split bio handling
The rbd driver currently splits bios when they span an object boundary.
However, the blk_end_request expects the completions to roll up the results
in block device order, and the split rbd/ceph ops can complete in any
order.  This patch adds a struct rbd_req_coll to track completion of split
requests and ensures that the results are passed back up to the block layer
in order.

This fixes errors where the file system gets completion of a read operation
that spans an object boundary before the data has actually arrived.  The
bug is easily reproduced with iozone with a working set larger than
available RAM.

Reported-by: Fyodor Ustinov <ufm@ufm.su>
Signed-off-by: Yehuda Sadeh <yehuda@hq.newdream.net>
Signed-off-by: Sage Weil <sage@newdream.net>
2011-05-13 13:52:57 -07:00
..
aoe drivers/block/aoe/Makefile: replace the use of <module>-objs with <module>-y 2011-01-19 08:25:02 -07:00
drbd Fix common misspellings 2011-03-31 11:26:23 -03:00
paride paride: Convert to bdops->check_events() 2011-03-09 19:54:28 +01:00
DAC960.c Fix common misspellings 2011-03-31 11:26:23 -03:00
DAC960.h
Kconfig xen: separate out frontend xenbus 2011-01-05 16:29:17 -05:00
Makefile drivers/block/Makefile: replace the use of <module>-objs with <module>-y 2011-01-19 08:25:02 -07:00
amiflop.c Merge branch 'for-2.6.39/core' of git://git.kernel.dk/linux-2.6-block 2011-03-24 10:16:26 -07:00
ataflop.c floppy,{ami|ata}flop: Convert to bdops->check_events() 2011-03-09 19:54:27 +01:00
brd.c Merge branch 'for-2.6.37/barrier' of git://git.kernel.dk/linux-2.6-block 2010-10-22 17:07:18 -07:00
cciss.c cciss: fix missed command status value CMD_UNABORTABLE 2011-03-12 10:02:30 +01:00
cciss.h cciss: fix lost command issue 2011-03-23 20:47:11 +01:00
cciss_cmd.h cciss: Inform controller we are using 32-bit tags. 2011-03-12 10:02:16 +01:00
cciss_scsi.c Revert "cciss: Add missing allocation in scsi_cmd_stack_setup and corresponding deallocation" 2011-03-12 13:47:51 +01:00
cciss_scsi.h
cpqarray.c block: remove per-queue plugging 2011-03-10 08:52:07 +01:00
cpqarray.h
cryptoloop.c
floppy.c Merge branch 'for-2.6.39/stack-plug' into for-2.6.39/core 2011-03-10 08:58:35 +01:00
hd.c Fix common misspellings 2011-03-31 11:26:23 -03:00
ida_cmd.h
ida_ioctl.h
loop.c Merge branch 'for-2.6.39/stack-plug' into for-2.6.39/core 2011-03-10 08:58:35 +01:00
mg_disk.c
nbd.c nbd: remove module-level ioctl mutex 2011-02-11 16:12:20 -08:00
osdblk.c
pktcdvd.c Merge branch 'for-2.6.39/stack-plug' into for-2.6.39/core 2011-03-10 08:58:35 +01:00
ps3disk.c Merge branch 'for-2.6.37/barrier' of git://git.kernel.dk/linux-2.6-block 2010-10-22 17:07:18 -07:00
ps3vram.c
rbd.c rbd: fix split bio handling 2011-05-13 13:52:57 -07:00
rbd_types.h rbd: introduce rados block device (rbd), based on libceph 2010-10-20 15:38:13 -07:00
smart1,2.h fix typos 'comamnd' -> 'command' in comments 2011-02-02 11:31:21 +01:00
sunvdc.c
swim.c swim[3]: Convert to bdops->check_events() 2011-03-09 19:54:28 +01:00
swim3.c swim[3]: Convert to bdops->check_events() 2011-03-09 19:54:28 +01:00
swim_asm.S
sx8.c
ub.c ub: Convert to bdops->check_events() 2011-03-09 19:54:28 +01:00
umem.c Merge branch 'for-2.6.39/stack-plug' into for-2.6.39/core 2011-03-10 08:58:35 +01:00
umem.h
viodasd.c Fix common misspellings 2011-03-31 11:26:23 -03:00
virtio_blk.c Merge branch 'for-2.6.37/barrier' of git://git.kernel.dk/linux-2.6-block 2010-10-22 17:07:18 -07:00
xd.c
xd.h
xen-blkfront.c Merge branch 'for-linus' of git://xenbits.xen.org/people/sstabellini/linux-pvhvm 2011-03-15 10:59:09 -07:00
xsysace.c Fix common misspellings 2011-03-31 11:26:23 -03:00
z2ram.c drivers/block/z2ram.c: correct printing of sector_t 2010-10-28 06:15:26 -06:00