cluster: RHEL56 - fsck.gfs2: should use the libgfs2 is_system_directory
Bob Peterson
rpeterso at fedoraproject.org
Sat Apr 10 04:53:06 UTC 2010
Gitweb: http://git.fedorahosted.org/git/cluster.git?p=cluster.git;a=commitdiff;h=ac9968edda6cd6d42e91adc6dc8440f8ed480011
Commit: ac9968edda6cd6d42e91adc6dc8440f8ed480011
Parent: 5a2b3a48aea599e441cfb893884c14e41336ae8e
Author: Bob Peterson <bob at ganesha.peterson>
AuthorDate: Thu Jan 21 17:55:59 2010 -0600
Committer: Bob Peterson <rpeterso at redhat.com>
CommitterDate: Fri Apr 9 23:35:18 2010 -0500
fsck.gfs2: should use the libgfs2 is_system_directory
The fsck.gfs2 program had its own implementation of the standard
function to determine if a dinode in memory was one of the system
dinodes. The difference was that the fsck.gfs2 version ignored
the journal inodes and instead checked the lost+found dinode.
This has been standardized.
rhbz#455300
---
gfs2/fsck/metawalk.c | 38 +++++++++++---------------------------
1 files changed, 11 insertions(+), 27 deletions(-)
diff --git a/gfs2/fsck/metawalk.c b/gfs2/fsck/metawalk.c
index 8fc20d0..79b4bdd 100644
--- a/gfs2/fsck/metawalk.c
+++ b/gfs2/fsck/metawalk.c
@@ -29,30 +29,6 @@
#define COMFORTABLE_BLKS 5242880 /* 20GB in 4K blocks */
-static struct gfs2_inode *get_system_inode(struct gfs2_sbd *sbp,
- uint64_t block)
-{
- if (block == sbp->md.inum->i_di.di_num.no_addr)
- return sbp->md.inum;
- if (block == sbp->md.statfs->i_di.di_num.no_addr)
- return sbp->md.statfs;
- if (block == sbp->md.jiinode->i_di.di_num.no_addr)
- return sbp->md.jiinode;
- if (block == sbp->md.riinode->i_di.di_num.no_addr)
- return sbp->md.riinode;
- if (block == sbp->md.qinode->i_di.di_num.no_addr)
- return sbp->md.qinode;
- if (block == sbp->md.pinode->i_di.di_num.no_addr)
- return sbp->md.pinode;
- if (block == sbp->md.rooti->i_di.di_num.no_addr)
- return sbp->md.rooti;
- if (block == sbp->master_dir->i_di.di_num.no_addr)
- return sbp->master_dir;
- if (lf_dip && block == lf_dip->i_di.di_num.no_addr)
- return lf_dip;
- return is_system_inode(sbp, block);
-}
-
struct duptree *dupfind(uint64_t block)
{
struct osi_node *node = dup_blocks.osi_node;
@@ -70,13 +46,21 @@ struct duptree *dupfind(uint64_t block)
return NULL;
}
+static struct gfs2_inode *fsck_system_inode(struct gfs2_sbd *sdp,
+ uint64_t block)
+{
+ if (lf_dip && lf_dip->i_di.di_num.no_addr == block)
+ return lf_dip;
+ return is_system_inode(sdp, block);
+}
+
/* fsck_load_inode - same as gfs2_load_inode() in libgfs2 but system inodes
get special treatment. */
struct gfs2_inode *fsck_load_inode(struct gfs2_sbd *sbp, uint64_t block)
{
struct gfs2_inode *ip = NULL;
- ip = get_system_inode(sbp, block);
+ ip = fsck_system_inode(sbp, block);
if (ip)
return ip;
return inode_read(sbp, block);
@@ -89,7 +73,7 @@ struct gfs2_inode *fsck_inode_get(struct gfs2_sbd *sdp,
{
struct gfs2_inode *sysip;
- sysip = get_system_inode(sdp, bh->b_blocknr);
+ sysip = fsck_system_inode(sdp, bh->b_blocknr);
if (sysip)
return sysip;
@@ -103,7 +87,7 @@ void fsck_inode_put(struct gfs2_inode **ip_in)
struct gfs2_inode *ip = *ip_in;
struct gfs2_inode *sysip;
- sysip = get_system_inode(ip->i_sbd, ip->i_di.di_num.no_addr);
+ sysip = fsck_system_inode(ip->i_sbd, ip->i_di.di_num.no_addr);
if (!sysip)
inode_put(ip_in);
}
More information about the cluster-commits
mailing list