]> git-server-git.apps.pok.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>
Tue, 26 Aug 2014 15:20:04 +0000 (08:20 -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>
(cherry picked from commit dd11042f969b94f7a461d02e1475794031c79f61)

Conflicts:
src/os/FileStore.cc

src/os/FileStore.cc

index 38b7f03cf02417d3105e9fe2e946d827b526dbd1..1a3f95788763762a22cca69ee22d5aea1ea21b4b 100644 (file)
@@ -1558,6 +1558,8 @@ int FileStore::umount()
     backend = generic_backend;
   }
 
+  force_sync = false;
+
   object_map.reset();
 
   {