summaryrefslogtreecommitdiff
path: root/src/osd/OSD.h
diff options
context:
space:
mode:
authorSamuel Just <sam.just@inktank.com>2013-03-19 09:55:19 -0700
committerSamuel Just <sam.just@inktank.com>2013-03-21 18:37:34 -0700
commit505bebbb3c5e879b375c3b55da3da8195cccfb18 (patch)
treef3c8841fb9d3ec845b87d03fd913d29628ed2ead /src/osd/OSD.h
parent9d076a0edb04e434df2bdb4566e04507a452c087 (diff)
downloadceph-505bebbb3c5e879b375c3b55da3da8195cccfb18.tar.gz
OSD: check for is_stopping after locking osd_lock or heartbeat_lock
Signed-off-by: Samuel Just <sam.just@inktank.com>
Diffstat (limited to 'src/osd/OSD.h')
-rw-r--r--src/osd/OSD.h8
1 files changed, 8 insertions, 0 deletions
diff --git a/src/osd/OSD.h b/src/osd/OSD.h
index 0a5386acacd..d41c9fec4d6 100644
--- a/src/osd/OSD.h
+++ b/src/osd/OSD.h
@@ -1099,6 +1099,10 @@ protected:
}
void _process(Command *c) {
osd->osd_lock.Lock();
+ if (osd->is_stopping()) {
+ delete c;
+ return;
+ }
osd->do_command(c->con, c->tid, c->cmd, c->indata);
osd->osd_lock.Unlock();
delete c;
@@ -1353,6 +1357,10 @@ protected:
}
void _process(MOSDRepScrub *msg) {
osd->osd_lock.Lock();
+ if (osd->is_stopping()) {
+ osd->osd_lock.Unlock();
+ return;
+ }
if (osd->_have_pg(msg->pgid)) {
PG *pg = osd->_lookup_lock_pg(msg->pgid);
osd->osd_lock.Unlock();