diff options
-rw-r--r-- | fs/gfs2/dentry.c | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/fs/gfs2/dentry.c b/fs/gfs2/dentry.c index 022c66cd5606..91beddadd388 100644 --- a/fs/gfs2/dentry.c +++ b/fs/gfs2/dentry.c | |||
@@ -107,8 +107,26 @@ static int gfs2_dhash(struct dentry *dentry, struct qstr *str) | |||
107 | return 0; | 107 | return 0; |
108 | } | 108 | } |
109 | 109 | ||
110 | static int gfs2_dentry_delete(struct dentry *dentry) | ||
111 | { | ||
112 | struct gfs2_inode *ginode; | ||
113 | |||
114 | if (!dentry->d_inode) | ||
115 | return 0; | ||
116 | |||
117 | ginode = GFS2_I(dentry->d_inode); | ||
118 | if (!ginode->i_iopen_gh.gh_gl) | ||
119 | return 0; | ||
120 | |||
121 | if (test_bit(GLF_DEMOTE, &ginode->i_iopen_gh.gh_gl->gl_flags)) | ||
122 | return 1; | ||
123 | |||
124 | return 0; | ||
125 | } | ||
126 | |||
110 | const struct dentry_operations gfs2_dops = { | 127 | const struct dentry_operations gfs2_dops = { |
111 | .d_revalidate = gfs2_drevalidate, | 128 | .d_revalidate = gfs2_drevalidate, |
112 | .d_hash = gfs2_dhash, | 129 | .d_hash = gfs2_dhash, |
130 | .d_delete = gfs2_dentry_delete, | ||
113 | }; | 131 | }; |
114 | 132 | ||