]> err.no Git - linux-2.6/commitdiff
[XFS] Fix nused counter. It's currently getting set to -1 rather than
authorMandy Kirkconnell <alkirkco@sgi.com>
Fri, 9 Jun 2006 07:13:04 +0000 (17:13 +1000)
committerNathan Scott <nathans@sgi.com>
Fri, 9 Jun 2006 07:13:04 +0000 (17:13 +1000)
getting decremented by 1.  Since nused never reaches 0, the "if
(!free->hdr.nused)" check in xfs_dir2_leafn_remove() fails every time and
xfs_dir2_shrink_inode() doesn't get called when it should.  This causes
extra blocks to be left on an empty directory and the directory in unable
to be converted back to inline extent mode.

SGI-PV: 951958
SGI-Modid: xfs-linux-melb:xfs-kern:211382a

Signed-off-by: Mandy Kirkconnell <alkirkco@sgi.com>
Signed-off-by: Nathan Scott <nathans@sgi.com>
fs/xfs/xfs_dir2_node.c

index a8d483c0a84ceea67faef7b7980e40a59fcfc774..b1f85cc7795a43c5da072cfb71f8a35178074453 100644 (file)
@@ -972,7 +972,7 @@ xfs_dir2_leafn_remove(
                        /*
                         * One less used entry in the free table.
                         */
-                       free->hdr.nused = cpu_to_be32(-1);
+                       be32_add(&free->hdr.nused, -1);
                        xfs_dir2_free_log_header(tp, fbp);
                        /*
                         * If this was the last entry in the table, we can