mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2025-01-06 05:06:29 +00:00
Reinstate "GFS2: free disk inode which is deleted by remote node -V2"
It turns out that reverting commit970343cd49
("GFS2: free disk inode which is deleted by remote node -V2") causes a regression related to evicting inodes that were unlinked on a different cluster node. We could also have simply added a call to d_mark_dontcache() to function gfs2_try_evict(), but the original pre-revert code is better tested and proven. This reverts commit445cb1277e
. Signed-off-by: Bob Peterson <rpeterso@redhat.com> Signed-off-by: Andreas Gruenbacher <agruenba@redhat.com>
This commit is contained in:
parent
e8d018dd02
commit
260595b439
@ -83,8 +83,26 @@ static int gfs2_dhash(const struct dentry *dentry, struct qstr *str)
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int gfs2_dentry_delete(const struct dentry *dentry)
|
||||
{
|
||||
struct gfs2_inode *ginode;
|
||||
|
||||
if (d_really_is_negative(dentry))
|
||||
return 0;
|
||||
|
||||
ginode = GFS2_I(d_inode(dentry));
|
||||
if (!gfs2_holder_initialized(&ginode->i_iopen_gh))
|
||||
return 0;
|
||||
|
||||
if (test_bit(GLF_DEMOTE, &ginode->i_iopen_gh.gh_gl->gl_flags))
|
||||
return 1;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
const struct dentry_operations gfs2_dops = {
|
||||
.d_revalidate = gfs2_drevalidate,
|
||||
.d_hash = gfs2_dhash,
|
||||
.d_delete = gfs2_dentry_delete,
|
||||
};
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user