Sophie

Sophie

distrib > Scientific%20Linux > 5x > x86_64 > by-pkgid > 9383e745e23602bc45f9c92184feea59 > files > 27

gfs2-utils-0.1.62-28.el5.src.rpm

commit ac9968edda6cd6d42e91adc6dc8440f8ed480011
Author: Bob Peterson <bob@ganesha.peterson>
Date:   Thu Jan 21 17:55:59 2010 -0600

    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

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);
 }