]> git.baikalelectronics.ru Git - kernel.git/commit
gfs2: don't stop reads while withdraw in progress
authorBob Peterson <rpeterso@redhat.com>
Fri, 30 Jul 2021 17:41:16 +0000 (12:41 -0500)
committerBob Peterson <rpeterso@redhat.com>
Fri, 20 Aug 2021 14:03:46 +0000 (09:03 -0500)
commit647444421215661c7dbcf7002312f58e9ab53d4b
tree74eb26f2977c055e89178426c35a2dc63b40bde7
parent2848d73940f7e903b48a8fd1e7f24f53d931f301
gfs2: don't stop reads while withdraw in progress

When gfs2 withdraws a file system, it calls signal_our_withdraw which
triggers another node to replay the withdrawing node's journal. Then it
waits until it knows the journal has been replayed. Part of this wait is
to repeatedly call check_journal_clean which calls gfs2_jdesc_check,
which checks to see if the journal is sane. As part of its sanity checks
it needs to re-read its journal's metadata. But with today's code, any
attempt to re-read the metadata results in -EIO because of a check for
the file system withdraw in function gfs2_meta_wait.

This patch adds an additional check for SDF_WITHDRAW_IN_PROG, to tell
if the read is done while the withdraw is in progress. In that case
we allow the metadata read to not be rejected. Therefore the metadata
check is done properly, so the withdraw sequence can finish normally.

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