Btrfs: Fix page count calculation
take offset of start position into account when calculating page count. Signed-off-by: Yan, Zheng <zheng.z.yan@intel.com> Signed-off-by: Chris Mason <chris.mason@oracle.com>
This commit is contained in:
		
							parent
							
								
									8e4eef7a60
								
							
						
					
					
						commit
						3a90983dbd
					
				| @ -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,8 +1022,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) | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user