For jouranl-aio-mode when closing journal, the write_finish_thread_entry may exit before
write_thread_entry. This cause no one wait last aios to complete.
On some platform, after that the journal-header on journal corrupted.
To avoid this, when closing jouranl we don't use aio.
Fixes: 9073
Reported-by: Mark Kirkwood <mark.kirkwood@catalyst.net.nz>
Tested-by: Mark Kirkwood <mark.kirkwood@catalyst.net.nz>
Signed-off-by: Ma Jianpeng <jianpeng.ma@intel.com>
(cherry picked from commit
e870fd09ce846e5642db268c33bbe8e2e17ffef2)
}
#ifdef HAVE_LIBAIO
- if (aio) {
+ //We hope write_finish_thread_entry return until the last aios complete
+ //when set write_stop. But it can't. So don't use aio mode when shutdown.
+ if (aio && !write_stop) {
Mutex::Locker locker(aio_lock);
// should we back off to limit aios in flight? try to do this
// adaptively so that we submit larger aios once we have lots of
}
#ifdef HAVE_LIBAIO
- if (aio)
+ if (aio && !write_stop)
do_aio_write(bl);
else
do_write(bl);