mirror of
https://github.com/torvalds/linux.git
synced 2026-05-25 07:33:19 +02:00
gfs2: Minor run_queue fixes
Provide a better description of why the GLF_DEMOTE_IN_PROGRESS flag cannot be set. Function do_xmote() may block, so make sure it isn't called when nonblock is true. Signed-off-by: Andreas Gruenbacher <agruenba@redhat.com> Reviewed-by: Andrew Price <anprice@redhat.com>
This commit is contained in:
parent
cd493dcf4f
commit
47faf937da
|
|
@ -832,7 +832,12 @@ __acquires(&gl->gl_lockref.lock)
|
|||
return;
|
||||
set_bit(GLF_LOCK, &gl->gl_flags);
|
||||
|
||||
/* While a demote is in progress, the GLF_LOCK flag must be set. */
|
||||
/*
|
||||
* The GLF_DEMOTE_IN_PROGRESS flag is only set intermittently during
|
||||
* locking operations. We have just started a locking operation by
|
||||
* setting the GLF_LOCK flag, so the GLF_DEMOTE_IN_PROGRESS flag must
|
||||
* be cleared.
|
||||
*/
|
||||
GLOCK_BUG_ON(gl, test_bit(GLF_DEMOTE_IN_PROGRESS, &gl->gl_flags));
|
||||
|
||||
if (test_bit(GLF_DEMOTE, &gl->gl_flags)) {
|
||||
|
|
@ -859,6 +864,8 @@ __acquires(&gl->gl_lockref.lock)
|
|||
gh = find_first_waiter(gl);
|
||||
if (!gh)
|
||||
goto out_unlock;
|
||||
if (nonblock)
|
||||
goto out_sched;
|
||||
gl->gl_target = gh->gh_state;
|
||||
if (!(gh->gh_flags & (LM_FLAG_TRY | LM_FLAG_TRY_1CB)))
|
||||
do_error(gl, 0); /* Fail queued try locks */
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user