]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
os/FileStore: fix mount/remount force_sync race
authorSage Weil <sage@redhat.com>
Sat, 16 Aug 2014 19:42:33 +0000 (12:42 -0700)
committerSage Weil <sage@redhat.com>
Sat, 16 Aug 2014 19:42:33 +0000 (12:42 -0700)
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>
src/os/FileStore.cc

index 4481c93f56b65f409a6dbeadc864118ba5bc84eb..06eca20284f4ca5c0de82de605dfdc4df7078b37 100644 (file)
@@ -1615,6 +1615,8 @@ int FileStore::umount()
     basedir_fd = -1;
   }
 
+  force_sync = false;
+
   delete backend;
   backend = NULL;