|
@@ -1047,9 +1047,13 @@ int gfs2_glock_nq(struct gfs2_holder *gh)
|
|
|
|
|
|
spin_lock(&gl->gl_spin);
|
|
spin_lock(&gl->gl_spin);
|
|
add_to_queue(gh);
|
|
add_to_queue(gh);
|
|
- if ((LM_FLAG_NOEXP & gh->gh_flags) &&
|
|
|
|
- test_and_clear_bit(GLF_FROZEN, &gl->gl_flags))
|
|
|
|
|
|
+ if (unlikely((LM_FLAG_NOEXP & gh->gh_flags) &&
|
|
|
|
+ test_and_clear_bit(GLF_FROZEN, &gl->gl_flags))) {
|
|
set_bit(GLF_REPLY_PENDING, &gl->gl_flags);
|
|
set_bit(GLF_REPLY_PENDING, &gl->gl_flags);
|
|
|
|
+ gl->gl_lockref.count++;
|
|
|
|
+ if (queue_delayed_work(glock_workqueue, &gl->gl_work, 0) == 0)
|
|
|
|
+ gl->gl_lockref.count--;
|
|
|
|
+ }
|
|
run_queue(gl, 1);
|
|
run_queue(gl, 1);
|
|
spin_unlock(&gl->gl_spin);
|
|
spin_unlock(&gl->gl_spin);
|
|
|
|
|