GFS2: Fix incorrent statfs consistency check
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>
This commit is contained in:
parent
8ff22a6f9b
commit
6b94617024
1 changed files with 3 additions and 11 deletions
|
@ -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)
|
||||
|
|
Loading…
Reference in a new issue