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>
java: fill in stat structure correctly

Added stat filling helper function but only stat and lstat were updated.
This patch makes fstat use it. Crucially the fstat wasn't updating the
mode flags.

Signed-off-by: Noah Watkins <noahwatkins@gmail.com>
Merge pull request #2787 from ceph/fix-fstat-mode

java: fill in stat structure correctly

Reviewed-by: Sage Weil <sage@redhat.com>
common/Timer: recheck stopping before sleep if we dropped the lock

If we have safe_callbacks==false, the stopping flag may have changed while
we were doing our callback. Recheck it and exit to avoid a deadlock on
shutdown.

Signed-off-by: Sage Weil <sage@redhat.com>
osdc/Objecter: fix tick_event handling in shutdown vs tick race

If we fail to cancel the tick_event, we rely on tick() itself to clear
tick_event.  I'm not quite sure how we got this wrong in the previous
commit, but this boils down to two cases:

1) shutdown() successfully cancels the event and clears tick_event.  tick()
   never runs.  tick_event == NULL when we finish.
2) shutdown() fails to cancel the event because it has already started.  In
   this case tick itself is blocking (or about to block) waiting on the
   rlock.  When it does run it will clear tick_event itself, then see
   initiazed == 0 and exit without rescheduling.

Fixes: #9873
Signed-off-by: Sage Weil <sage@redhat.com>
Merge pull request #2795 from ceph/wip-9873

objecter: fix tick_event shutdown race (9873)

Reviewed-by: David Zafman <dzafman@redhat.com>
Revert "Fix read performance regression in ObjectCacher"

This reverts commit 65be257e9295619b960b49f6aa80ecdf8ea4d16a.

Too late for giant.

Signed-off-by: Sage Weil <sage@redhat.com>
Revert "rbd: ObjectCacher reads can hang when reading sparse files"

This reverts commit cdb7675a21c9107e3596c90c2b1598def3c6899f.

Signed-off-by: Sage Weil <sage@redhat.com>
Revert "Enforce cache size on read requests"

This reverts commit 4fc9fffc494abedac0a9b1ce44706343f18466f1.

Signed-off-by: Sage Weil <sage@redhat.com>
Merge pull request #2797 from ceph/wip-rbd-revert

rbd/objectcacher: revert recent changes for giant

Reviewed-by: Josh Durgin <josh.durgin@inktank.com>
.gitmodules: ignoring changes in rocksdb submodule

Signed-off-by: Federico Gimenez <fgimenez@coit.es>
(cherry picked from commit 60eaeca4ddccc79b29b17ad433c6569cb2a89500)
Merge pull request #2798 from athanatos/wip-9875

ReplicatedPG: writeout hit_set object with correct prior_version

Reviewed-by: Sage Weil <sage@redhat.com>
Merge pull request #2799 from athanatos/wip-9480

Wip 9480

Reviewed-by: Sage Weil <sage@redhat.com>
Merge remote-tracking branch 'upstream/wip-9545' into wip-sam-testing