• Bob Peterson's avatar
    gfs2: don't stop reads while withdraw in progress · 8cc67f70
    Bob Peterson authored
    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: default avatarBob Peterson <rpeterso@redhat.com>
    8cc67f70
meta_io.c 12.7 KB