]> git.baikalelectronics.ru Git - kernel.git/commit
Revert "gfs2: Don't demote a glock until its revokes are written"
authorBob Peterson <rpeterso@redhat.com>
Fri, 8 May 2020 20:01:25 +0000 (15:01 -0500)
committerBob Peterson <rpeterso@redhat.com>
Fri, 8 May 2020 20:01:25 +0000 (15:01 -0500)
commitded3e00619e5371d19e4f3ea5e95afde80de26e9
treea23eee19c631f558dd07854604c8f07bc923adf5
parentd63585f23f3e9b9d541bd319c8bce780c8a29ea9
Revert "gfs2: Don't demote a glock until its revokes are written"

This reverts commit 6ac54cc8acd8d79211700709b61b1302ea001124.

This patch fixes a regression: patch 6ac54cc8acd8d allowed function
run_queue() to bypass its call to do_xmote() if revokes were queued for
the glock. That's wrong because its call to do_xmote() is what is
responsible for calling the go_sync() glops functions to sync both
the ail list and any revokes queued for it. By bypassing the call,
gfs2 could get into a stand-off where the glock could not be demoted
until its revokes are written back, but the revokes would not be
written back because do_xmote() was never called.

It "sort of" works, however, because there are other mechanisms like
the log flush daemon (logd) that can sync the ail items and revokes,
if it deems it necessary. The problem is: without file system pressure,
it might never deem it necessary.

Signed-off-by: Bob Peterson <rpeterso@redhat.com>
fs/gfs2/glock.c