Some of the finisher contexts would try to call into Objecter.
We mostly are protected from this by mds_lock+the stopping
flag, but at the Filer level there's no mds_lock, so in the
case of file size probing we have a problem.
Fixes: http://tracker.ceph.com/issues/19204
Signed-off-by: John Spray <john.spray@redhat.com>
(cherry picked from commit
177a97d5c55ee6a2d5dcd3cf0893546190b10f7a)
Conflicts:
src/mds/MDSRank.cc (no purge_queue.shutdown() in jewel because jewel
does not have
8ebf7d95a9071de24bb1e56a6423c505169cb4de)
// shut down cache
mdcache->shutdown();
+ mds_lock.Unlock();
+ finisher->stop(); // no flushing
+ mds_lock.Lock();
+
if (objecter->initialized.read())
objecter->shutdown();
// MDSDaemon::ms_handle_reset called from Messenger).
mds_lock.Unlock();
- finisher->stop(); // no flushing
messenger->shutdown();
mds_lock.Lock();