diff options
author | Robert S Peterson <rpeterso@redhat.com> | 2006-05-05 16:29:50 -0400 |
---|---|---|
committer | Steven Whitehouse <swhiteho@redhat.com> | 2006-05-05 16:29:50 -0400 |
commit | 5bb76af1e089ac186c15c6aa792340d22b63d4b4 (patch) | |
tree | 3568b59476b8f9df444164005cdf04b9ce7c231b | |
parent | 97a35d1e5fab9ff8de27814082b78b2fc9ad94f0 (diff) |
[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.c | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/fs/gfs2/ops_fstype.c b/fs/gfs2/ops_fstype.c index d19d98766aa5..f252723b37da 100644 --- a/fs/gfs2/ops_fstype.c +++ b/fs/gfs2/ops_fstype.c | |||
@@ -40,6 +40,8 @@ | |||
40 | #define DO 0 | 40 | #define DO 0 |
41 | #define UNDO 1 | 41 | #define UNDO 1 |
42 | 42 | ||
43 | extern struct dentry_operations gfs2_dops; | ||
44 | |||
43 | static struct gfs2_sbd *init_sbd(struct super_block *sb) | 45 | static struct gfs2_sbd *init_sbd(struct super_block *sb) |
44 | { | 46 | { |
45 | struct gfs2_sbd *sdp; | 47 | struct gfs2_sbd *sdp; |
@@ -357,6 +359,7 @@ static int init_sb(struct gfs2_sbd *sdp, int silent, int undo) | |||
357 | error = -ENOMEM; | 359 | error = -ENOMEM; |
358 | iput(inode); | 360 | iput(inode); |
359 | } | 361 | } |
362 | sb->s_root->d_op = &gfs2_dops; | ||
360 | out: | 363 | out: |
361 | gfs2_glock_dq_uninit(&sb_gh); | 364 | gfs2_glock_dq_uninit(&sb_gh); |
362 | return error; | 365 | return error; |