// initialize shards
num_shards = get_num_op_shards();
for (uint32_t i = 0; i < num_shards; i++) {
- char lock_name[128] = {0};
- snprintf(lock_name, sizeof(lock_name), "OSDShard.%d::sdata_lock", i);
- char order_lock[128] = {0};
- snprintf(order_lock, sizeof(order_lock), "OSDShard.%d::sdata_op_ordering_lock", i);
OSDShard *one_shard = new OSDShard(
i,
cct,
this,
- lock_name, order_lock,
cct->_conf->osd_op_pq_max_tokens_per_priority,
cct->_conf->osd_op_pq_min_cost,
op_queue);
const unsigned shard_id;
CephContext *cct;
OSD *osd;
+
+ string shard_name;
+
+ string sdata_lock_name;
Mutex sdata_lock;
Cond sdata_cond;
+ string sdata_op_ordering_lock_name;
Mutex sdata_op_ordering_lock; ///< protects all members below
OSDMapRef osdmap;
int id,
CephContext *cct,
OSD *osd,
- string lock_name, string ordering_lock,
uint64_t max_tok_per_prio, uint64_t min_cost,
io_queue opqueue)
: shard_id(id),
cct(cct),
osd(osd),
- sdata_lock(lock_name.c_str(), false, true, false, cct),
- sdata_op_ordering_lock(ordering_lock.c_str(), false, true,
- false, cct) {
+ shard_name(string("OSDShard.") + stringify(id)),
+ sdata_lock_name(shard_name + "::sdata_lock"),
+ sdata_lock(sdata_lock_name.c_str(), false, true, false, cct),
+ sdata_op_ordering_lock_name(shard_name + "::sdata_op_ordering_lock"),
+ sdata_op_ordering_lock(sdata_op_ordering_lock_name.c_str(), false, true,
+ false, cct),
if (opqueue == io_queue::weightedpriority) {
pqueue = std::make_unique<
WeightedPriorityQueue<OpQueueItem,uint64_t>>(