Btrfs: check for duplicate iov_base's when doing dio reads
authorJosef Bacik <josef@redhat.com>
Wed, 6 Apr 2011 19:11:44 +0000 (15:11 -0400)
committerJosef Bacik <josef@redhat.com>
Fri, 8 Apr 2011 17:00:43 +0000 (13:00 -0400)
commit93a54bc4c28a125978cddbe2db9e347391e3522d
tree910dedd07332c4f1e25893d749fc145263b58c45
parent16d299ac7446b5a75c5683a9ae11d7907d444c86
Btrfs: check for duplicate iov_base's when doing dio reads

Apparently it is ok to submit a read to an IDE device with the same target page
for different offsets.  This is what Windows does under qemu.  The problem is
under DIO we expect them to be different buffers for checksumming reasons, and
so this sort of thing will result in checksum errors, when in reality the file
is fine.  So when reading, check to make sure that all iov bases are different,
and if they aren't fall back to buffered mode, since that will work out right.
Thanks,

Signed-off-by: Josef Bacik <josef@redhat.com>
fs/btrfs/inode.c