From: Dave Kleikamp Date: Thu, 12 Apr 2012 21:44:41 +0000 (-0500) Subject: directio: account for extra page IOs for unaligned request X-Git-Tag: v2.6.39-400.9.0~426^2~17^2 X-Git-Url: https://www.infradead.org/git/?a=commitdiff_plain;h=c795b2961e57da8db9c5bb912488ec973802bf44;p=users%2Fjedix%2Flinux-maple.git directio: account for extra page IOs for unaligned request sdio_init() initializes pages_in_io to 2 for an unaligned directio request in order that a zero page may be written to the first and last block. However, __blockdev_direct_IO_bvec was setting pages_in_io to the number of pages in the request rather than adding them to the original value. Signed-off-by: Dave Kleikamp --- diff --git a/fs/direct-io.c b/fs/direct-io.c index 65ff39f39519..3c138051e585 100644 --- a/fs/direct-io.c +++ b/fs/direct-io.c @@ -1400,7 +1400,7 @@ __blockdev_direct_IO_bvec(int rw, struct kiocb *iocb, struct inode *inode, sdio_init(&sdio, inode, offset, blkbits, get_block, submit_io); - sdio.pages_in_io = bvec_len; + sdio.pages_in_io += bvec_len; for (i = 0; i < bvec_len; i++) { sdio.size += bvec[i].bv_len;