Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 3a90983d authored by Yan, Zheng's avatar Yan, Zheng Committed by Chris Mason
Browse files

Btrfs: Fix page count calculation



take offset of start position into account when calculating page count.

Signed-off-by: default avatarYan, Zheng <zheng.z.yan@intel.com>
Signed-off-by: default avatarChris Mason <chris.mason@oracle.com>
parent 8e4eef7a
Loading
Loading
Loading
Loading
+4 −4
Original line number Diff line number Diff line
@@ -991,8 +991,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);
@@ -1022,7 +1022,7 @@ 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) >>
		dirty_pages = (copied + offset + PAGE_CACHE_SIZE - 1) >>
				PAGE_CACHE_SHIFT;

		if (num_pages > dirty_pages) {