mirror of
https://github.com/torvalds/linux.git
synced 2026-05-27 00:22:00 +02:00
gfs2: simplify finish_xmote
As a follow-up to commit a431d49243 ("gfs2: Fix request cancelation
bug"), it turns out that any call to finish_xmote() is always followed
by a call to run_queue(), either
* directly when glock_work_func() calls finish_xmote() before calling
run_queue(), or
* indirectly when do_xmote() calls finish_xmote() before calling
gfs2_glock_queue_work(), which queues a call to glock_work_func() in
work queue context,
so remove the code in finish_xmote() that duplicates the functionality
of run_queue().
In addition, the code this commit removes is missing a check for the
GLF_DEMOTE flag which indicates that no further promotes should be
performed, so if that code didn't get removed, that check would have to
be added.
Signed-off-by: Andreas Gruenbacher <agruenba@redhat.com>
Reviewed-by: Andrew Price <anprice@redhat.com>
This commit is contained in:
parent
6e417b3eb8
commit
92cef39bb3
|
|
@ -616,14 +616,6 @@ static void finish_xmote(struct gfs2_glock *gl, unsigned int ret)
|
|||
list_del_init(&gh->gh_list);
|
||||
trace_gfs2_glock_queue(gh, 0);
|
||||
gl->gl_target = gl->gl_state;
|
||||
gh = find_first_waiter(gl);
|
||||
if (gh) {
|
||||
gl->gl_target = gh->gh_state;
|
||||
if (do_promote(gl))
|
||||
goto out;
|
||||
do_xmote(gl, gh, gl->gl_target);
|
||||
return;
|
||||
}
|
||||
goto out;
|
||||
}
|
||||
/* Some error or failed "try lock" - report it */
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user