[GFS2] Move inode deletion out of blocking_cb
Move inode deletion code out of blocking_cb handle_callback route to avoid racy conditions that end up blocking lock_dlm1 thread. Fix bugzilla 286821. Signed-off-by: Wendy Cheng <wcheng@redhat.com> Signed-off-by: Steven Whitehouse <swhiteho@redhat.com>hifive-unleashed-5.1
parent
b4c20166dc
commit
49e61f2ef6
|
@ -716,12 +716,8 @@ static void handle_callback(struct gfs2_glock *gl, unsigned int state,
|
||||||
gl->gl_demote_time = jiffies;
|
gl->gl_demote_time = jiffies;
|
||||||
if (remote && gl->gl_ops->go_type == LM_TYPE_IOPEN &&
|
if (remote && gl->gl_ops->go_type == LM_TYPE_IOPEN &&
|
||||||
gl->gl_object) {
|
gl->gl_object) {
|
||||||
struct inode *inode = igrab(gl->gl_object);
|
gfs2_glock_schedule_for_reclaim(gl);
|
||||||
spin_unlock(&gl->gl_spin);
|
spin_unlock(&gl->gl_spin);
|
||||||
if (inode) {
|
|
||||||
d_prune_aliases(inode);
|
|
||||||
iput(inode);
|
|
||||||
}
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
} else if (gl->gl_demote_state != LM_ST_UNLOCKED &&
|
} else if (gl->gl_demote_state != LM_ST_UNLOCKED &&
|
||||||
|
|
Loading…
Reference in New Issue