We can't pause the threadpools if they're blocked on a blackholed
filestore. Instead, just call _exit().
Signed-off-by: Sage Weil <sage@newdream.net>
void OSD::suicide(int exitcode)
{
+ if (g_conf->filestore_blackhole) {
+ derr << " filestore_blackhole=true, doing abbreviated shutdown" << dendl;
+ _exit(exitcode);
+ }
+
derr << " pausing thread pools" << dendl;
op_tp.pause();
disk_tp.pause();
recovery_tp.pause();
command_tp.pause();
- if (!g_conf->filestore_blackhole) {
- derr << " flushing io" << dendl;
- store->sync_and_flush();
- }
+ derr << " flushing io" << dendl;
+ store->sync_and_flush();
derr << " removing pid file" << dendl;
pidfile_remove();