Bug #40555
closedDisabling journal might result in assertion failure
0%
Description
In the dynamic features test, a crash was observed in the QEMU process while attempting to disable the journal.
The process of disabling the journal will flush out all IO events. However, if there was an in-flight external flush request, it's op tracking might only start after the IO work queue considers IO to be blocked (AioCompletion::start_op is only invoked after all preceeding IO has flushed). Therefore, the ImageRequestWQ::block_writes call invoked from the DisableFeatureRequest state machine will proceed even though a flush is still in-flight. When this flush completes and attempts to commit its journal entry, it will fail an assertion since ImageCtx::journal is NULL.
This 'flush' op tracking issue has been fixed in the master branch via a refactor in commit 09e4127d5d, so a smaller change should be implemented in backport branches directly.