]> git.pld-linux.org Git - packages/kernel.git/commitdiff
fitrim xfs fix
authorArkadiusz Miśkiewicz <arekm@maven.pl>
Fri, 27 Jan 2012 07:33:31 +0000 (07:33 +0000)
committercvs2git <feedback@pld-linux.org>
Sun, 24 Jun 2012 12:13:13 +0000 (12:13 +0000)
Changed files:
    kernel-small_fixes.patch -> 1.43.2.16

kernel-small_fixes.patch

index 3eec20792046c82861b30db3622b26e48888d392..c3daa509b541e5f09a574be3af70678b76c34c72 100644 (file)
@@ -905,3 +905,51 @@ index c2917ffa..34767a6 100644
 1.7.4.1
 
 
+From: Dave Chinner <dchinner@redhat.com>
+
+commit b1c770c273a4787069306fc82aab245e9ac72e9d upstream
+
+When finding the longest extent in an AG, we read the value directly
+out of the AGF buffer without endian conversion. This will give an
+incorrect length, resulting in FITRIM operations potentially not
+trimming everything that it should.
+
+Note, for 3.0-stable this has been modified to apply to
+fs/xfs/linux-2.6/xfs_discard.c instead of fs/xfs/xfs_discard.c.  -bpm
+
+Signed-off-by: Dave Chinner <dchinner@redhat.com>
+Reviewed-by: Christoph Hellwig <hch@lst.de>
+Signed-off-by: Ben Myers <bpm@sgi.com>
+---
+ fs/xfs/linux-2.6/xfs_discard.c |    4 ++--
+ 1 files changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/fs/xfs/linux-2.6/xfs_discard.c b/fs/xfs/linux-2.6/xfs_discard.c
+index 244e797..572494f 100644
+--- a/fs/xfs/linux-2.6/xfs_discard.c
++++ b/fs/xfs/linux-2.6/xfs_discard.c
+@@ -68,7 +68,7 @@ xfs_trim_extents(
+        * Look up the longest btree in the AGF and start with it.
+        */
+       error = xfs_alloc_lookup_le(cur, 0,
+-                                  XFS_BUF_TO_AGF(agbp)->agf_longest, &i);
++                          be32_to_cpu(XFS_BUF_TO_AGF(agbp)->agf_longest), &i);
+       if (error)
+               goto out_del_cursor;
+@@ -84,7 +84,7 @@ xfs_trim_extents(
+               if (error)
+                       goto out_del_cursor;
+               XFS_WANT_CORRUPTED_GOTO(i == 1, out_del_cursor);
+-              ASSERT(flen <= XFS_BUF_TO_AGF(agbp)->agf_longest);
++              ASSERT(flen <= be32_to_cpu(XFS_BUF_TO_AGF(agbp)->agf_longest));
+               /*
+                * Too small?  Give up.
+-- 
+1.7.8.rc4
+
+_______________________________________________
+xfs mailing list
+xfs@oss.sgi.com
+http://oss.sgi.com/mailman/listinfo/xfs
This page took 0.064162 seconds and 4 git commands to generate.