Remove duplicate subop submit/fail code
This commit is contained in:
@@ -366,6 +366,7 @@ class osd_t
|
|||||||
osd_rmw_stripe_t *stripes, const uint64_t* osd_set, osd_op_t *cur_op, int subop_idx, int zero_read);
|
osd_rmw_stripe_t *stripes, const uint64_t* osd_set, osd_op_t *cur_op, int subop_idx, int zero_read);
|
||||||
void submit_primary_subop(osd_op_t *cur_op, osd_op_t *subop,
|
void submit_primary_subop(osd_op_t *cur_op, osd_op_t *subop,
|
||||||
osd_rmw_stripe_t *si, bool wr, inode_t inode, uint64_t op_version);
|
osd_rmw_stripe_t *si, bool wr, inode_t inode, uint64_t op_version);
|
||||||
|
bool submit_to_osd(osd_op_t *subop, osd_num_t osd_num);
|
||||||
void submit_primary_del_subops(osd_op_t *cur_op, uint64_t *cur_set, uint64_t set_size, pg_osd_set_t & loc_set);
|
void submit_primary_del_subops(osd_op_t *cur_op, uint64_t *cur_set, uint64_t set_size, pg_osd_set_t & loc_set);
|
||||||
void submit_primary_del_batch(osd_op_t *cur_op, obj_ver_osd_t *chunks_to_delete, int chunks_to_delete_count);
|
void submit_primary_del_batch(osd_op_t *cur_op, obj_ver_osd_t *chunks_to_delete, int chunks_to_delete_count);
|
||||||
void submit_primary_sync_subops(osd_op_t *cur_op);
|
void submit_primary_sync_subops(osd_op_t *cur_op);
|
||||||
|
|||||||
+1
-10
@@ -214,17 +214,8 @@ bool osd_t::submit_flush_op(pool_id_t pool_id, pg_num_t pg_num, pg_flush_batch_t
|
|||||||
handle_flush_op(op->req.hdr.opcode == OSD_OP_SEC_ROLLBACK, pool_id, pg_num, fb, peer_osd, op->reply.hdr.retval);
|
handle_flush_op(op->req.hdr.opcode == OSD_OP_SEC_ROLLBACK, pool_id, pg_num, fb, peer_osd, op->reply.hdr.retval);
|
||||||
delete op;
|
delete op;
|
||||||
};
|
};
|
||||||
auto peer_it = msgr.osd_peers.find(peer_osd);
|
if (!submit_to_osd(op, peer_osd))
|
||||||
if (peer_it != msgr.osd_peers.end())
|
|
||||||
{
|
{
|
||||||
op->client_id = peer_it->second->client_id;
|
|
||||||
msgr.outbox_push(op);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
// Fail it immediately
|
|
||||||
op->reply.hdr.retval = -EPIPE;
|
|
||||||
op->callback(op);
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -318,19 +318,7 @@ int osd_t::submit_bitmap_subops(osd_op_t *cur_op, pg_t & pg)
|
|||||||
}
|
}
|
||||||
handle_primary_subop(subop, cur_op);
|
handle_primary_subop(subop, cur_op);
|
||||||
};
|
};
|
||||||
auto peer_it = msgr.osd_peers.find(subop_osd_num);
|
submit_to_osd(subop, subop_osd_num);
|
||||||
if (peer_it != msgr.osd_peers.end())
|
|
||||||
{
|
|
||||||
subop->client_id = peer_it->second->client_id;
|
|
||||||
msgr.outbox_push(subop);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
// Fail it immediately
|
|
||||||
subop->client_id = 0;
|
|
||||||
subop->reply.hdr.retval = -EPIPE;
|
|
||||||
ringloop->set_immediate([subop]() { std::function<void(osd_op_t*)>(subop->callback)(subop); });
|
|
||||||
}
|
|
||||||
subop_idx++;
|
subop_idx++;
|
||||||
}
|
}
|
||||||
prev = i+1;
|
prev = i+1;
|
||||||
|
|||||||
@@ -270,22 +270,29 @@ void osd_t::submit_primary_subop(osd_op_t *cur_op, osd_op_t *subop,
|
|||||||
{
|
{
|
||||||
handle_primary_subop(subop, cur_op);
|
handle_primary_subop(subop, cur_op);
|
||||||
};
|
};
|
||||||
auto peer_it = msgr.osd_peers.find(si->osd_num);
|
submit_to_osd(subop, si->osd_num);
|
||||||
if (peer_it != msgr.osd_peers.end())
|
|
||||||
{
|
|
||||||
subop->client_id = peer_it->second->client_id;
|
|
||||||
msgr.outbox_push(subop);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
// Fail it immediately
|
|
||||||
subop->client_id = 0;
|
|
||||||
subop->reply.hdr.retval = -EPIPE;
|
|
||||||
ringloop->set_immediate([subop]() { std::function<void(osd_op_t*)>(subop->callback)(subop); });
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool osd_t::submit_to_osd(osd_op_t *subop, osd_num_t osd_num)
|
||||||
|
{
|
||||||
|
auto peer_it = msgr.osd_peers.find(osd_num);
|
||||||
|
if (peer_it != msgr.osd_peers.end())
|
||||||
|
{
|
||||||
|
subop->client_id = peer_it->second->client_id;
|
||||||
|
msgr.outbox_push(subop);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// Fail it immediately
|
||||||
|
subop->client_id = 0;
|
||||||
|
subop->reply.hdr.retval = -EPIPE;
|
||||||
|
ringloop->set_immediate([subop]() { std::function<void(osd_op_t*)>(subop->callback)(subop); });
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
static uint64_t bs_op_to_osd_op[] = {
|
static uint64_t bs_op_to_osd_op[] = {
|
||||||
0,
|
0,
|
||||||
OSD_OP_SEC_READ, // BS_OP_READ = 1
|
OSD_OP_SEC_READ, // BS_OP_READ = 1
|
||||||
@@ -616,19 +623,7 @@ void osd_t::submit_primary_del_batch(osd_op_t *cur_op, obj_ver_osd_t *chunks_to_
|
|||||||
{
|
{
|
||||||
handle_primary_subop(subop, cur_op);
|
handle_primary_subop(subop, cur_op);
|
||||||
};
|
};
|
||||||
auto peer_it = msgr.osd_peers.find(chunk.osd_num);
|
submit_to_osd(&subops[i], chunk.osd_num);
|
||||||
if (peer_it != msgr.osd_peers.end())
|
|
||||||
{
|
|
||||||
subops[i].client_id = peer_it->second->client_id;
|
|
||||||
msgr.outbox_push(&subops[i]);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
// Fail it immediately
|
|
||||||
subops[i].client_id = 0;
|
|
||||||
subops[i].reply.hdr.retval = -EPIPE;
|
|
||||||
ringloop->set_immediate([subop = &subops[i]]() { std::function<void(osd_op_t*)>(subop->callback)(subop); });
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -739,19 +734,7 @@ void osd_t::submit_primary_stab_subops(osd_op_t *cur_op)
|
|||||||
{
|
{
|
||||||
handle_primary_subop(subop, cur_op);
|
handle_primary_subop(subop, cur_op);
|
||||||
};
|
};
|
||||||
auto peer_it = msgr.osd_peers.find(stab_osd.osd_num);
|
submit_to_osd(&subops[i], stab_osd.osd_num);
|
||||||
if (peer_it != msgr.osd_peers.end())
|
|
||||||
{
|
|
||||||
subops[i].client_id = peer_it->second->client_id;
|
|
||||||
msgr.outbox_push(&subops[i]);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
// Fail it immediately
|
|
||||||
subops[i].client_id = 0;
|
|
||||||
subops[i].reply.hdr.retval = -EPIPE;
|
|
||||||
ringloop->set_immediate([subop = &subops[i]]() { std::function<void(osd_op_t*)>(subop->callback)(subop); });
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -837,8 +820,7 @@ void osd_t::submit_primary_rollback_subops(osd_op_t *cur_op, const uint64_t* osd
|
|||||||
op_data->oid.inode, op_data->oid.stripe | role, op_data->target_ver-1
|
op_data->oid.inode, op_data->oid.stripe | role, op_data->target_ver-1
|
||||||
);
|
);
|
||||||
#endif
|
#endif
|
||||||
subop->client_id = msgr.osd_peers.at(osd_set[role])->client_id;
|
submit_to_osd(subop, osd_set[role]);
|
||||||
msgr.outbox_push(subop);
|
|
||||||
}
|
}
|
||||||
i++;
|
i++;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user