summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRobert S Peterson <rpeterso@redhat.com>2006-05-05 20:29:50 (GMT)
committerSteven Whitehouse <swhiteho@redhat.com>2006-05-05 20:29:50 (GMT)
commit5bb76af1e089ac186c15c6aa792340d22b63d4b4 (patch)
tree3568b59476b8f9df444164005cdf04b9ce7c231b
parent97a35d1e5fab9ff8de27814082b78b2fc9ad94f0 (diff)
downloadlinux-5bb76af1e089ac186c15c6aa792340d22b63d4b4.tar.xz
[GFS2] Set d_ops for root inode
Well, I managed to track down the bug in gfs2 that was causing my grief. Below is a patch for the problem. Please incorporate as you see fit. Or should I say: as you see git. The problem was basically that you never set d_ops for the root inode, so the wrong hash algorithm was being used. But only for the root directory. Turns out that if I used subdirectories, it used the proper hash and my files were found just fine. Signed-off-by: Robert S Peterson <rpeterso@redhat.com> Signed-off-by: Steven Whitehouse <swhiteho@redhat.com>
-rw-r--r--fs/gfs2/ops_fstype.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/fs/gfs2/ops_fstype.c b/fs/gfs2/ops_fstype.c
index d19d987..f252723 100644
--- a/fs/gfs2/ops_fstype.c
+++ b/fs/gfs2/ops_fstype.c
@@ -40,6 +40,8 @@
#define DO 0
#define UNDO 1
+extern struct dentry_operations gfs2_dops;
+
static struct gfs2_sbd *init_sbd(struct super_block *sb)
{
struct gfs2_sbd *sdp;
@@ -357,6 +359,7 @@ static int init_sb(struct gfs2_sbd *sdp, int silent, int undo)
error = -ENOMEM;
iput(inode);
}
+ sb->s_root->d_op = &gfs2_dops;
out:
gfs2_glock_dq_uninit(&sb_gh);
return error;