[PATCH] reduce bmv_count in xfs_vn_fiemap

Eric Sandeen sandeen at sandeen.net
Wed Jul 15 14:33:21 CDT 2009


commit 6321e3ed2acf3ee9643cdd403e1c88605d7944ba caused
the full bmv_count's worth of getbmapx structures to get
allocated; telling it to do MAXEXTNUM was a bit insane,
resulting in ENOMEM.

Chop it down to something reasonable, the caller can
loop over this if the file has > 64 extents.

(this is a regression, FWIW)

Signed-off-by: Eric Sandeen <sandeen at sandeen.net>
---

iff --git a/fs/xfs/linux-2.6/xfs_iops.c b/fs/xfs/linux-2.6/xfs_iops.c
index 58973bb..370e9a7 100644
--- a/fs/xfs/linux-2.6/xfs_iops.c
+++ b/fs/xfs/linux-2.6/xfs_iops.c
@@ -680,8 +680,12 @@ xfs_vn_fiemap(
 	else
 		bm.bmv_length = BTOBB(length);
 
-	/* our formatter will tell xfs_getbmap when to stop. */
-	bm.bmv_count = MAXEXTNUM;
+	/*
+	 * xfs_getbmap allocates based on that; pick a count that's
+	 * not too outragous.
+	 * Our formatter will tell xfs_getbmap when to stop.
+	 */
+	bm.bmv_count = 64;
 	bm.bmv_iflags = BMV_IF_PREALLOC;
 	if (fieinfo->fi_flags & FIEMAP_FLAG_XATTR)
 		bm.bmv_iflags |= BMV_IF_ATTRFORK;




More information about the xfs mailing list