浏览代码

[XFS] Do not do delalloc conversion on pages beyond EOF ever, not just sometimes

SGI Modid: xfs-linux:xfs-kern:22376a

Signed-off-by: Nathan Scott <nathans@sgi.com>
Signed-off-by: Christoph Hellwig <hch@sgi.com>
Nathan Scott 20 年之前
父节点
当前提交
775bf6c99a
共有 1 个文件被更改,包括 3 次插入5 次删除
  1. 3 5
      fs/xfs/linux-2.6/xfs_aops.c

+ 3 - 5
fs/xfs/linux-2.6/xfs_aops.c

@@ -726,7 +726,7 @@ xfs_page_state_convert(
 	pgoff_t                 end_index, last_index, tlast;
 	pgoff_t                 end_index, last_index, tlast;
 	int			len, err, i, cnt = 0, uptodate = 1;
 	int			len, err, i, cnt = 0, uptodate = 1;
 	int			flags;
 	int			flags;
-	int			page_dirty, delalloc = 0;
+	int			page_dirty;
 
 
 	/* wait for other IO threads? */
 	/* wait for other IO threads? */
 	flags = (startio && wbc->sync_mode != WB_SYNC_NONE) ? 0 : BMAPI_TRYLOCK;
 	flags = (startio && wbc->sync_mode != WB_SYNC_NONE) ? 0 : BMAPI_TRYLOCK;
@@ -807,7 +807,6 @@ xfs_page_state_convert(
 		 */
 		 */
 		} else if (buffer_delay(bh)) {
 		} else if (buffer_delay(bh)) {
 			if (!iomp) {
 			if (!iomp) {
-				delalloc = 1;
 				err = xfs_map_blocks(inode, offset, len, &iomap,
 				err = xfs_map_blocks(inode, offset, len, &iomap,
 						BMAPI_ALLOCATE | flags);
 						BMAPI_ALLOCATE | flags);
 				if (err) {
 				if (err) {
@@ -882,10 +881,9 @@ xfs_page_state_convert(
 		xfs_submit_page(page, wbc, bh_arr, cnt, 0, 1);
 		xfs_submit_page(page, wbc, bh_arr, cnt, 0, 1);
 
 
 	if (iomp) {
 	if (iomp) {
-		tlast = (iomp->iomap_offset + iomp->iomap_bsize - 1) >>
+		offset = (iomp->iomap_offset + iomp->iomap_bsize - 1) >>
 					PAGE_CACHE_SHIFT;
 					PAGE_CACHE_SHIFT;
-		if (delalloc && (tlast > last_index))
-			tlast = last_index;
+		tlast = min_t(pgoff_t, offset, last_index);
 		xfs_cluster_write(inode, page->index + 1, iomp, wbc,
 		xfs_cluster_write(inode, page->index + 1, iomp, wbc,
 					startio, unmapped, tlast);
 					startio, unmapped, tlast);
 	}
 	}