Btrfs: Fix page count calculation
PATCH 1/1 Btrfs: Fix page count calculation
take offset of start position into account when calculating page count.
Signed-off-by Yan, Zheng <[email protected]>
---
fs/btrfs/file.c +4 -4
@@ -970,8 +970,8 @@ static ssize_t btrfs_file_aio_write(struct kiocb *iocb,size_t write_bytes =min (iov_iter_count (&i), nrptrs * (size_t )PAGE_CACHE_SIZE - offset); -size_t num_pages = (write_bytes +PAGE_CACHE_SIZE -1 ) >> -PAGE_CACHE_SHIFT ; +size_t num_pages = (write_bytes + offset + +PAGE_CACHE_SIZE -1 ) >>PAGE_CACHE_SHIFT ;WARN_ON (num_pages > nrptrs);memset (pages,0 ,sizeof (struct page *) * nrptrs);
@@ -1001,8 +1001,8 @@ static ssize_t btrfs_file_aio_write(struct kiocb *iocb, copied =btrfs_copy_from_user (pos, num_pages, write_bytes, pages, &i); - dirty_pages = (copied +PAGE_CACHE_SIZE -1 ) >> -PAGE_CACHE_SHIFT ; + dirty_pages = (copied + offset +PAGE_CACHE_SIZE -1 ) >> +PAGE_CACHE_SHIFT ;if (num_pages > dirty_pages) {if (copied >0 )
Excerpts from Yan, Zheng's message of 2011-01-18 00:34:40 -0500:
Quoted 1 line
take offset of start position into account when calculating page count.
Thanks Yan, do you have a test case that exposes this? I'd like to add it to xfsqa if it makes sense.
-chris