Skip to content

Commit

Permalink
GFS2: Fix incorrent statfs consistency check
Browse files Browse the repository at this point in the history
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>
  • Loading branch information
Benjamin Marzinski authored and Steven Whitehouse committed Jul 30, 2009
1 parent 8ff22a6 commit 6b94617
Showing 1 changed file with 3 additions and 11 deletions.
14 changes: 3 additions & 11 deletions fs/gfs2/rgrp.c
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand Down

0 comments on commit 6b94617

Please sign in to comment.