linux/drivers/block
Christoph Hellwig 456be1484f loop: remove the incorrect write_begin/write_end shortcut
Currently the loop device tries to call directly into write_begin/write_end
instead of going through ->write if it can.  This is a fairly nasty shortcut
as write_begin and write_end are only callbacks for the generic write code
and expect to be called with filesystem specific locks held.

This code currently causes various issues for clustered filesystems as it
doesn't take the required cluster locks, and it also causes issues for XFS
as it doesn't properly lock against the swapext ioctl as called by the
defragmentation tools.  This in case causes data corruption if
defragmentation hits a busy loop device in the wrong time window, as
reported by RH QA.

The reason why we have this shortcut is that it saves a data copy when
doing a transformation on the loop device, which is the technical term
for using cryptoloop (or an XOR transformation).  Given that cryptoloop
has been deprecated in favour of dm-crypt my opinion is that we should
simply drop this shortcut instead of finding complicated ways to to
introduce a formal interface for this shortcut.

Signed-off-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Jens Axboe <axboe@kernel.dk>
2011-10-17 12:57:20 +02:00
..
aoe
drbd drivers/block/drbd/drbd_nl.c: use bitmap_parse instead of __bitmap_parse 2011-08-02 12:43:49 +02:00
paride block: fix mismerge of the DISK_EVENT_MEDIA_CHANGE removal 2011-06-02 05:29:19 +09:00
xen-blkback Merge branch 'stable/for-jens' of git://git.kernel.org/pub/scm/linux/kernel/git/konrad/xen into for-linus 2011-08-23 15:09:13 +02:00
amiflop.c
ataflop.c
brd.c brd: export module parameters 2011-05-26 21:06:50 +02:00
cciss_cmd.h
cciss_scsi.c atomic: use <linux/atomic.h> 2011-07-26 16:49:47 -07:00
cciss_scsi.h
cciss.c
cciss.h cciss: do not attempt to read from a write-only register 2011-07-09 09:04:12 +02:00
cpqarray.c
cpqarray.h
cryptoloop.c
DAC960.c
DAC960.h
floppy.c floppy: use del_timer_sync() in init cleanup 2011-09-21 10:22:11 +02:00
hd.c i8253: Create linux/i8253.h and use it in all 8253 related files 2011-06-09 15:01:37 +02:00
ida_cmd.h
ida_ioctl.h
Kconfig Merge branch 'stable/for-jens' of git://git.kernel.org/pub/scm/linux/kernel/git/konrad/xen into for-linus 2011-08-09 20:43:26 +02:00
loop.c loop: remove the incorrect write_begin/write_end shortcut 2011-10-17 12:57:20 +02:00
Makefile
mg_disk.c
nbd.c nbd: adjust 'max_part' according to part_shift 2011-05-28 14:44:46 +02:00
osdblk.c
pktcdvd.c kill useless checks for sb->s_op == NULL 2011-07-20 01:44:21 -04:00
ps3disk.c
ps3vram.c
rbd_types.h
rbd.c rbd: set blk_queue request sizes to object size 2011-07-26 11:29:35 -07:00
smart1,2.h
sunvdc.c
swim3.c block: swim3: fix unterminated of_device_id table 2011-08-03 15:02:55 +02:00
swim_asm.S
swim.c
sx8.c
ub.c
umem.c
umem.h
viodasd.c
virtio_blk.c drivers, block: virtio_blk: Replace cryptic number with the macro 2011-05-30 11:14:13 +09:30
xd.c
xd.h
xen-blkfront.c xen-blkfront: Fix one off warning about name clash 2011-07-14 14:19:51 -04:00
xsysace.c dt: remove extra xsysace platform_driver registration 2011-07-14 05:33:52 -06:00
z2ram.c