Jens Axboe
f9de14bc7e
loop: handle short DIO reads
...
We ran into an issue with loop and btrfs, where btrfs would complain about
checksum errors. It turns out that is because we don't handle short reads
at all, we just zero fill the remainder. Worse than that, we don't handle
the filling properly, which results in loop trying to advance a single
bio by much more than its size, since it doesn't take chaining into
account.
Handle short reads appropriately, by simply retrying at the new correct
offset. End the remainder of the request with EIO, if we get a 0 read.
Fixes: bc07c10a36 ("block: loop: support DIO & AIO")
Reviewed-by: Ming Lei <ming.lei@redhat.com>
Signed-off-by: Jens Axboe <axboe@kernel.dk>
2018-04-14 22:34:27 -06:00
..
aoe
aoe: use ktime_t instead of timeval
2018-01-17 08:41:07 -07:00
drbd
block: Use blk_queue_flag_*() in drivers instead of queue_flag_*()
2018-03-08 14:13:48 -07:00
mtip32xx
mtip32xx: Use the blk_queue_flag_*() functions
2018-03-08 14:13:48 -07:00
paride
cdrom: do not call check_disk_change() inside cdrom_open()
2018-03-09 08:06:35 -07:00
rsxx
block: Use blk_queue_flag_*() in drivers instead of queue_flag_*()
2018-03-08 14:13:48 -07:00
xen-blkback
Merge branch 'for-4.14/block' of git://git.kernel.dk/linux-block
2017-09-07 11:59:42 -07:00
zram
Merge branch 'akpm' (patches from Andrew)
2018-04-06 14:19:26 -07:00
amiflop.c
genhd: Rename get_disk() to get_disk_and_module()
2018-02-26 09:48:42 -07:00
ataflop.c
genhd: Rename get_disk() to get_disk_and_module()
2018-02-26 09:48:42 -07:00
brd.c
block: Move SECTOR_SIZE and SECTOR_SHIFT definitions into <linux/blkdev.h>
2018-03-17 14:45:23 -06:00
cryptoloop.c
block: cryptoloop - Fix build warning
2017-09-26 07:41:22 -06:00
DAC960.c
pci-v4.16-changes
2018-02-06 09:59:40 -08:00
DAC960.h
block: DAC960: Replace PCI pool old API
2018-01-02 16:09:50 -06:00
floppy.c
genhd: Rename get_disk() to get_disk_and_module()
2018-02-26 09:48:42 -07:00
Kconfig
null_blk: remove explicit 'select FAULT_INJECTION'
2018-01-11 07:58:31 -07:00
loop.c
loop: handle short DIO reads
2018-04-14 22:34:27 -06:00
loop.h
loop: remove cmd->rq member
2018-04-14 22:34:27 -06:00
Makefile
License cleanup: add SPDX GPL-2.0 license identifier to files with no license
2017-11-02 11:10:55 +01:00
nbd.c
block: Use blk_queue_flag_*() in drivers instead of queue_flag_*()
2018-03-08 14:13:48 -07:00
null_blk.c
block: Move SECTOR_SIZE and SECTOR_SHIFT definitions into <linux/blkdev.h>
2018-03-17 14:45:23 -06:00
pktcdvd.c
block: fix a typo
2018-03-01 08:41:27 -07:00
ps3disk.c
ps3vram.c
rbd.c
The big ticket items are:
2018-04-10 12:25:30 -07:00
rbd_types.h
skd_main.c
block: Use blk_queue_flag_*() in drivers instead of queue_flag_*()
2018-03-08 14:13:48 -07:00
skd_s1120.h
skd: Use __packed only when needed
2017-08-18 08:45:29 -06:00
sunvdc.c
treewide: setup_timer() -> timer_setup()
2017-11-21 15:57:07 -08:00
swim.c
genhd: Rename get_disk() to get_disk_and_module()
2018-02-26 09:48:42 -07:00
swim3.c
treewide: Remove TIMER_FUNC_TYPE and TIMER_DATA_TYPE casts
2017-11-21 16:35:54 -08:00
swim_asm.S
sx8.c
umem.c
block: Fix a race between the cgroup code and request queue initialization
2018-02-28 12:23:35 -07:00
umem.h
virtio_blk.c
virtio, vhost: fixes, cleanups, features
2018-02-08 10:41:00 -08:00
xen-blkfront.c
for-4.17/block-20180402
2018-04-05 14:27:02 -07:00
xsysace.c
treewide: setup_timer() -> timer_setup()
2017-11-21 15:57:07 -08:00
z2ram.c
genhd: Rename get_disk() to get_disk_and_module()
2018-02-26 09:48:42 -07:00