mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2024-12-28 16:53:49 +00:00
gfs2: Initialize gl_no_formal_ino earlier
Set gl_no_formal_ino of the iopen glock to the generation of the associated inode (ip->i_no_formal_ino) as soon as that value is known. This saves us from setting it later, possibly repeatedly, when queuing GLF_VERIFY_DELETE work. Signed-off-by: Andreas Gruenbacher <agruenba@redhat.com>
This commit is contained in:
parent
820ce8ed53
commit
1072b3aa68
@ -980,7 +980,6 @@ static bool gfs2_try_evict(struct gfs2_glock *gl)
|
||||
ip = NULL;
|
||||
spin_unlock(&gl->gl_lockref.lock);
|
||||
if (ip) {
|
||||
gl->gl_no_formal_ino = ip->i_no_formal_ino;
|
||||
set_bit(GIF_DEFERRED_DELETE, &ip->i_flags);
|
||||
d_prune_aliases(&ip->i_inode);
|
||||
iput(&ip->i_inode);
|
||||
|
@ -494,11 +494,18 @@ int gfs2_inode_refresh(struct gfs2_inode *ip)
|
||||
static int inode_go_instantiate(struct gfs2_glock *gl)
|
||||
{
|
||||
struct gfs2_inode *ip = gl->gl_object;
|
||||
struct gfs2_glock *io_gl;
|
||||
int error;
|
||||
|
||||
if (!ip) /* no inode to populate - read it in later */
|
||||
return 0;
|
||||
|
||||
return gfs2_inode_refresh(ip);
|
||||
error = gfs2_inode_refresh(ip);
|
||||
if (error)
|
||||
return error;
|
||||
io_gl = ip->i_iopen_gh.gh_gl;
|
||||
io_gl->gl_no_formal_ino = ip->i_no_formal_ino;
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int inode_go_held(struct gfs2_holder *gh)
|
||||
|
@ -750,6 +750,7 @@ static int gfs2_create_inode(struct inode *dir, struct dentry *dentry,
|
||||
if (error)
|
||||
goto fail_free_inode;
|
||||
gfs2_cancel_delete_work(io_gl);
|
||||
io_gl->gl_no_formal_ino = ip->i_no_formal_ino;
|
||||
|
||||
retry:
|
||||
error = insert_inode_locked4(inode, ip->i_no_addr, iget_test, &ip->i_no_addr);
|
||||
|
Loading…
Reference in New Issue
Block a user