Skip to content

Commit

Permalink
Merge pull request #21804 from dillaman/wip-24000
Browse files Browse the repository at this point in the history
osdc: self-managed snapshot helper should catch decode exception

Reviewed-by: Greg Farnum <gfarnum@redhat.com>
  • Loading branch information
tchaikov committed May 12, 2018
2 parents 0fb51c9 + 43dbdb9 commit ade3bce
Show file tree
Hide file tree
Showing 2 changed files with 13 additions and 5 deletions.
10 changes: 7 additions & 3 deletions src/mon/OSDMonitor.cc
Expand Up @@ -11713,15 +11713,19 @@ bool OSDMonitor::preprocess_pool_op(MonOpRequestRef op)
if (m->op == POOL_OP_CREATE)
return preprocess_pool_op_create(op);

if (!osdmap.get_pg_pool(m->pool)) {
const pg_pool_t *p = osdmap.get_pg_pool(m->pool);
if (p == nullptr) {
dout(10) << "attempt to operate on non-existent pool id " << m->pool << dendl;
_pool_op_reply(op, 0, osdmap.get_epoch());
if (m->op == POOL_OP_DELETE) {
_pool_op_reply(op, 0, osdmap.get_epoch());
} else {
_pool_op_reply(op, -ENOENT, osdmap.get_epoch());
}
return true;
}

// check if the snap and snapname exist
bool snap_exists = false;
const pg_pool_t *p = osdmap.get_pg_pool(m->pool);
if (p->snap_exists(m->name.c_str()))
snap_exists = true;

Expand Down
8 changes: 6 additions & 2 deletions src/osdc/Objecter.cc
Expand Up @@ -3874,8 +3874,12 @@ struct C_SelfmanagedSnap : public Context {
C_SelfmanagedSnap(snapid_t *ps, Context *f) : psnapid(ps), fin(f) {}
void finish(int r) override {
if (r == 0) {
bufferlist::iterator p = bl.begin();
decode(*psnapid, p);
try {
bufferlist::iterator p = bl.begin();
decode(*psnapid, p);
} catch (buffer::error&) {
r = -EIO;
}
}
fin->complete(r);
}
Expand Down

0 comments on commit ade3bce

Please sign in to comment.