android_kernel_google_msm/fs/exofs
Boaz Harrosh 0cc70c5ec5 ore: Fix wrong math in allocation of per device BIO
commit aad560b7f6 upstream.

At IO preparation we calculate the max pages at each device and
allocate a BIO per device of that size. The calculation was wrong
on some unaligned corner cases offset/length combination and would
make prepare return with -ENOMEM. This would be bad for pnfs-objects
that would in that case IO through MDS. And fatal for exofs were it
would fail writes with EIO.

Fix it by doing the proper math, that will work in all cases. (I
ran a test with all possible offset/length combinations this time
round).

Also when reading we do not need to allocate for the parity units
since we jump over them.

Also lower the max_io_length to take into account the parity pages
so not to allocate BIOs bigger than PAGE_SIZE

Signed-off-by: Boaz Harrosh <bharrosh@panasas.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2014-02-13 11:51:11 -08:00
..
BUGS
common.h
dir.c exofs: remove the second argument of k[un]map_atomic() 2012-03-20 21:48:22 +08:00
exofs.h exofs: propagate umode_t 2012-01-03 22:55:05 -05:00
file.c fs: push i_mutex and filemap_write_and_wait down into ->fsync() handlers 2011-07-20 20:47:59 -04:00
inode.c exofs: propagate umode_t 2012-01-03 22:55:05 -05:00
Kbuild ore: RAID5 read 2011-10-24 16:55:36 -07:00
Kconfig ore: FIX breakage when MISC_FILESYSTEMS is not set 2012-01-06 16:48:14 +02:00
Kconfig.ore ore: FIX breakage when MISC_FILESYSTEMS is not set 2012-01-06 16:48:14 +02:00
namei.c vfs: check i_nlink limits in vfs_{mkdir,rename_dir,link} 2012-03-20 21:29:32 -04:00
ore.c ore: Fix wrong math in allocation of per device BIO 2014-02-13 11:51:11 -08:00
ore_raid.c ore: Fix NFS crash by supporting any unaligned RAID IO 2012-07-29 08:04:20 -07:00
ore_raid.h ore: RAID5 Write 2011-10-24 17:15:33 -07:00
super.c exofs: Fix CRASH on very early IO errors. 2012-06-10 00:36:05 +09:00
symlink.c