]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commit
os/FileStore: do not loop in sync_entry on shutdown 2630/head
authorSage Weil <sage@redhat.com>
Fri, 3 Oct 2014 15:26:11 +0000 (08:26 -0700)
committerSage Weil <sage@redhat.com>
Fri, 3 Oct 2014 15:26:11 +0000 (08:26 -0700)
commitd0ceb3ab0a0ea2cbf1bee51f025a5078ac79418a
tree8baf88c1503dac1d4dabf885494a4aac0529cf6e
parentb1ca1f23ff47857a27f6196c5a050f83f3acc9fc
os/FileStore: do not loop in sync_entry on shutdown

Normally we repeat a sync if the journal is full and asks for it or if we
have pending sync waiters.  This isn't for correctness: it's to move things
along quickly.

If we are shutting down *and* the journal is full, however, we currently
can get stuck in a loop where we repeatedly sync.  However, the journal
never gets unfull because we aren't expiring anything.

We tried to fix this in 682b9daacb1960eb60b5f0e9b40d4a3a3e9afd5b but that
didn't work because we don't tell the journal to stop before we shut down
the filestore sync thread.

I'm pretty sure there is another issue in the journal code as

 full_state == FULL_FULL
 submit_manager.op_seq = 14761
 apply_manager.committing_seq = 14761
 apply_manager.committed_seq = 14761

which seems odd.  But I have no longs.  Meanwhile, this fixes the hang.

Fixes: #9545
Signed-off-by: Sage Weil <sage@redhat.com>
src/os/FileStore.cc