GFS2: Fix incorrent statfs consistency check
authorBenjamin Marzinski <bmarzins@redhat.com>
Fri, 10 Jul 2009 23:13:26 +0000 (18:13 -0500)
committerSteven Whitehouse <swhiteho@redhat.com>
Thu, 30 Jul 2009 10:00:28 +0000 (11:00 +0100)
Since both linked and unlinked inodes are counted by rgd->rd_dinodes, It
makes no sense to count them with the used data blocks (first check that
I changed), it makes sense to count them with the linked inodes (second
check), and it makes no sense to care if there are more unlinked inodes
than linked ones. This fixes these errors.

Signed-off-by: Benjamin Marzinski <bmarzins@redhat.com>
Signed-off-by: Steven Whitehouse <swhiteho@redhat.com>
fs/gfs2/rgrp.c

index 5e5074176daae5943f30deeb92eec087c58f208e..fba795798d3a1b63f1ea10aab5342d5f044b7f21 100644 (file)
@@ -285,27 +285,19 @@ void gfs2_rgrp_verify(struct gfs2_rgrpd *rgd)
        }
 
        tmp = rgd->rd_data - rgd->rd_free - rgd->rd_dinodes;
-       if (count[1] + count[2] != tmp) {
+       if (count[1] != tmp) {
                if (gfs2_consist_rgrpd(rgd))
                        fs_err(sdp, "used data mismatch:  %u != %u\n",
                               count[1], tmp);
                return;
        }
 
-       if (count[3] != rgd->rd_dinodes) {
+       if (count[2] + count[3] != rgd->rd_dinodes) {
                if (gfs2_consist_rgrpd(rgd))
                        fs_err(sdp, "used metadata mismatch:  %u != %u\n",
-                              count[3], rgd->rd_dinodes);
+                              count[2] + count[3], rgd->rd_dinodes);
                return;
        }
-
-       if (count[2] > count[3]) {
-               if (gfs2_consist_rgrpd(rgd))
-                       fs_err(sdp, "unlinked inodes > inodes:  %u\n",
-                              count[2]);
-               return;
-       }
-
 }
 
 static inline int rgrp_contains_block(struct gfs2_rgrpd *rgd, u64 block)