Consider:
- mount
- sync_entry is doing some work
- umount
- set force_sync = true
- set done = true
- sync_entry exits (due to done)
- ..but does not set force_sync = false
- mount
- journal replay starts
- sync_entry sees force_sync and does a commit while op_seq == 0
...crash...
Fixes: #9144
Backport: firefly, dumpling
Signed-off-by: Sage Weil <sage@redhat.com>
(cherry picked from commit
dd11042f969b94f7a461d02e1475794031c79f61)
Conflicts:
src/os/FileStore.cc
TEMP_FAILURE_RETRY(::close(basedir_fd));
basedir_fd = -1;
}
+
+ force_sync = false;
+
object_map.reset();
{