}
return false; //this message needs to go through preparation
case POOL_OP_DELETE_SNAP:
- //it's a snap deletion request if we make it here
if (!snap_exists) {
_pool_op(m, -ENOENT, pending_inc.epoch);
return true; //done with this message
}
return false;
+ case POOL_OP_DELETE: //can't delete except on master
+ return false;
default:
assert(0);
break;
{
if (m->op == POOL_OP_CREATE) {
return prepare_pool_op_create(m);
+ } else if (m->op == POOL_OP_DELETE) {
+ return prepare_pool_op_delete(m);
}
const pg_pool_t *p = osdmap.get_pg_pool(m->pool);
pg_pool_t* pp = 0;
return true;
}
+bool OSDMonitor::prepare_pool_op_delete (MPoolOp *m)
+{
+ pending_inc.old_pools.insert(m->pool);
+ paxos->wait_for_commit(new OSDMonitor::C_PoolOp(this, m, 0, pending_inc.epoch));
+ return true;
+}
+
void OSDMonitor::_pool_op(MPoolOp *m, int replyCode, epoch_t epoch)
{
MPoolOpReply *reply = new MPoolOpReply(m->fsid, m->get_tid(),
bool preprocess_pool_op_create ( class MPoolOp *m);
bool prepare_pool_op (MPoolOp *m);
bool prepare_pool_op_create (MPoolOp *m);
+ bool prepare_pool_op_delete(MPoolOp *m);
void _pool_op(MPoolOp *m, int replyCode, epoch_t epoch);
struct C_Booted : public Context {