diff --git a/fs/gfs2/incore.h b/fs/gfs2/incore.h
index c741016..62f109e 100644
--- a/fs/gfs2/incore.h
+++ b/fs/gfs2/incore.h
@@ -532,7 +532,6 @@
 	struct inode *sd_qc_inode;
 	struct inode *sd_rindex;
 	struct inode *sd_quota_inode;
-	struct inode *sd_root_dir;
 
 	/* Inum stuff */
 
diff --git a/fs/gfs2/inode.c b/fs/gfs2/inode.c
index ea9e996..cd1de61 100644
--- a/fs/gfs2/inode.c
+++ b/fs/gfs2/inode.c
@@ -288,7 +288,7 @@
  * Returns: errno
  */
 
-static int inode_create(struct gfs2_glock *i_gl, struct gfs2_inum *inum,
+static int inode_create(struct gfs2_glock *i_gl, const struct gfs2_inum *inum,
 			struct gfs2_glock *io_gl, unsigned int io_state,
 			struct gfs2_inode **ipp)
 {
@@ -354,8 +354,8 @@
  * Returns: errno
  */
 
-int gfs2_inode_get(struct gfs2_glock *i_gl, struct gfs2_inum *inum, int create,
-		   struct gfs2_inode **ipp)
+int gfs2_inode_get(struct gfs2_glock *i_gl, const struct gfs2_inum *inum,
+		   int create, struct gfs2_inode **ipp)
 {
 	struct gfs2_sbd *sdp = i_gl->gl_sbd;
 	struct gfs2_glock *io_gl;
@@ -718,6 +718,7 @@
 int gfs2_lookupi(struct inode *dir, struct qstr *name, int is_root,
 		 struct inode **inodep)
 {
+	struct super_block *sb = dir->i_sb;
 	struct gfs2_inode *ipp;
 	struct gfs2_inode *dip = dir->u.generic_ip;
 	struct gfs2_sbd *sdp = dip->i_sbd;
@@ -733,7 +734,7 @@
 		return -ENAMETOOLONG;
 
 	if (gfs2_filecmp(name, ".", 1) ||
-	    (gfs2_filecmp(name, "..", 2) && dir == sdp->sd_root_dir)) {
+	    (gfs2_filecmp(name, "..", 2) && dir == sb->s_root->d_inode)) {
 		gfs2_inode_hold(dip);
 		ipp = dip;
 		goto done;
@@ -1466,8 +1467,8 @@
 
 int gfs2_ok_to_move(struct gfs2_inode *this, struct gfs2_inode *to)
 {
-	struct gfs2_sbd *sdp = this->i_sbd;
 	struct inode *dir = to->i_vnode;
+	struct super_block *sb = dir->i_sb;
 	struct inode *tmp;
 	struct qstr dotdot;
 	int error = 0;
@@ -1483,7 +1484,7 @@
 			error = -EINVAL;
 			break;
 		}
-		if (dir == sdp->sd_root_dir) {
+		if (dir == sb->s_root->d_inode) {
 			error = 0;
 			break;
 		}
diff --git a/fs/gfs2/inode.h b/fs/gfs2/inode.h
index 069f0e2..c3fa6cf 100644
--- a/fs/gfs2/inode.h
+++ b/fs/gfs2/inode.h
@@ -35,7 +35,7 @@
 int gfs2_inode_refresh(struct gfs2_inode *ip);
 
 int gfs2_inode_get(struct gfs2_glock *i_gl,
-		   struct gfs2_inum *inum, int create,
+		   const struct gfs2_inum *inum, int create,
 		   struct gfs2_inode **ipp);
 void gfs2_inode_hold(struct gfs2_inode *ip);
 void gfs2_inode_put(struct gfs2_inode *ip);
diff --git a/fs/gfs2/ops_export.c b/fs/gfs2/ops_export.c
index d149584..a346943 100644
--- a/fs/gfs2/ops_export.c
+++ b/fs/gfs2/ops_export.c
@@ -64,8 +64,8 @@
 			  int connectable)
 {
 	struct inode *inode = dentry->d_inode;
+	struct super_block *sb = inode->i_sb;
 	struct gfs2_inode *ip = inode->u.generic_ip;
-	struct gfs2_sbd *sdp = ip->i_sbd;
 
 	if (*len < 4 || (connectable && *len < 8))
 		return 255;
@@ -80,7 +80,7 @@
 	fh[3] = cpu_to_be32(fh[3]);
 	*len = 4;
 
-	if (!connectable || ip == sdp->sd_root_dir->u.generic_ip)
+	if (!connectable || inode == sb->s_root->d_inode)
 		return *len;
 
 	spin_lock(&dentry->d_lock);
diff --git a/fs/gfs2/ops_fstype.c b/fs/gfs2/ops_fstype.c
index 4c4115f..c3b830b 100644
--- a/fs/gfs2/ops_fstype.c
+++ b/fs/gfs2/ops_fstype.c
@@ -280,27 +280,30 @@
 	return error;
 }
 
-int gfs2_lookup_root(struct gfs2_sbd *sdp)
+static struct inode *gfs2_lookup_root(struct gfs2_sbd *sdp,
+				      const struct gfs2_inum *inum)
 {
         int error;
 	struct gfs2_glock *gl;
 	struct gfs2_inode *ip;
+	struct inode *inode;
 
-	error = gfs2_glock_get(sdp, sdp->sd_sb.sb_root_dir.no_addr,
+	error = gfs2_glock_get(sdp, inum->no_addr,
                                &gfs2_inode_glops, CREATE, &gl);
         if (!error) {
-               	error = gfs2_inode_get(gl, &sdp->sd_sb.sb_root_dir,
+               	error = gfs2_inode_get(gl, inum,
 				       CREATE, &ip);
 		if (!error) {
 			if (!error) 
 				gfs2_inode_min_init(ip, DT_DIR);
-			sdp->sd_root_dir = gfs2_ip2v(ip);
+			inode = gfs2_ip2v(ip);
 			gfs2_inode_put(ip);
+			return inode;
 		}
                 gfs2_glock_put(gl);
         }
 
-        return error;
+        return ERR_PTR(error);
 }
 
 static int init_sb(struct gfs2_sbd *sdp, int silent, int undo)
@@ -311,7 +314,6 @@
 	int error = 0;
 
 	if (undo) {
-		iput(sdp->sd_master_dir);
 		return 0;
 	}
 	
@@ -351,35 +353,24 @@
 	sb_set_blocksize(sb, sdp->sd_sb.sb_bsize);
 
 	/* Get the root inode */
-	error = gfs2_lookup_root(sdp);
-	if (error) {
+	inode = gfs2_lookup_root(sdp, &sdp->sd_sb.sb_root_dir);
+	if (IS_ERR(inode)) {
+		error = PTR_ERR(inode);
 		fs_err(sdp, "can't read in root inode: %d\n", error);
 		goto out;
 	}
 
-	/* Get the root inode/dentry */
-	inode = sdp->sd_root_dir;
-	if (!inode) {
-		fs_err(sdp, "can't get root inode\n");
-		error = -ENOMEM;
-		goto out_rooti;
-	}
-
-	igrab(inode);
 	sb->s_root = d_alloc_root(inode);
 	if (!sb->s_root) {
 		fs_err(sdp, "can't get root dentry\n");
 		error = -ENOMEM;
-		goto out_rooti;
+		iput(inode);
 	}
 
 out:
 	gfs2_glock_dq_uninit(&sb_gh);
 
 	return error;
-out_rooti:
-	iput(sdp->sd_root_dir);
-	goto out;
 }
 
 static int init_journal(struct gfs2_sbd *sdp, int undo)
@@ -529,15 +520,18 @@
 {
 	int error = 0;
 	struct gfs2_inode *ip;
+	struct inode *inode;
 
 	if (undo)
 		goto fail_qinode;
 
-	error = gfs2_lookup_master_dir(sdp);
-	if (error) {
+	inode = gfs2_lookup_root(sdp, &sdp->sd_sb.sb_master_dir);
+	if (IS_ERR(inode)) {
+		error = PTR_ERR(inode);
 		fs_err(sdp, "can't read in master directory: %d\n", error);
 		goto fail;
 	}
+	sdp->sd_master_dir = inode;
 
 	error = init_journal(sdp, undo);
 	if (error)
diff --git a/fs/gfs2/ops_super.c b/fs/gfs2/ops_super.c
index 10f70ee..f7349c0 100644
--- a/fs/gfs2/ops_super.c
+++ b/fs/gfs2/ops_super.c
@@ -103,7 +103,6 @@
 	iput(sdp->sd_statfs_inode);
 	iput(sdp->sd_rindex);
 	iput(sdp->sd_quota_inode);
-	iput(sdp->sd_root_dir);
 
 	gfs2_glock_put(sdp->sd_rename_gl);
 	gfs2_glock_put(sdp->sd_trans_gl);
diff --git a/fs/gfs2/super.c b/fs/gfs2/super.c
index 9ccf0b9..fff5a96 100644
--- a/fs/gfs2/super.c
+++ b/fs/gfs2/super.c
@@ -447,25 +447,6 @@
 	return error;
 }
 
-int gfs2_lookup_master_dir(struct gfs2_sbd *sdp)
-{
-	struct inode *inode = NULL;
-	struct gfs2_glock *gl;
-	int error;
-
-	error = gfs2_glock_get(sdp,
-			       sdp->sd_sb.sb_master_dir.no_addr,
-			       &gfs2_inode_glops, CREATE, &gl);
-	if (!error) {
-		error = gfs2_lookup_simple(sdp->sd_root_dir, ".gfs2_admin",
-					   &inode);
-		sdp->sd_master_dir = inode;
-		gfs2_glock_put(gl);
-	}
-
-	return error;
-}
-
 /**
  * gfs2_make_fs_rw - Turn a Read-Only FS into a Read-Write one
  * @sdp: the filesystem
diff --git a/fs/gfs2/super.h b/fs/gfs2/super.h
index cc1a3df..6abb7b5 100644
--- a/fs/gfs2/super.h
+++ b/fs/gfs2/super.h
@@ -33,7 +33,6 @@
 struct gfs2_jdesc *gfs2_jdesc_find_dirty(struct gfs2_sbd *sdp);
 int gfs2_jdesc_check(struct gfs2_jdesc *jd);
 
-int gfs2_lookup_master_dir(struct gfs2_sbd *sdp);
 int gfs2_lookup_in_master_dir(struct gfs2_sbd *sdp, char *filename,
 			      struct gfs2_inode **ipp);
 
