From: Sage Weil Date: Mon, 9 Jul 2018 21:06:57 +0000 (-0500) Subject: osd: allow multiple threads to block on wait_min_pg_epoch X-Git-Tag: v14.0.1~371^2~57 X-Git-Url: http://git.apps.os.sepia.ceph.com/?a=commitdiff_plain;h=46ba9febab1fa836288914a0917e15c6ad02abcb;p=ceph.git osd: allow multiple threads to block on wait_min_pg_epoch Signed-off-by: Sage Weil --- diff --git a/src/osd/OSD.cc b/src/osd/OSD.cc index 963afe89847e4..52b345aed10ad 100644 --- a/src/osd/OSD.cc +++ b/src/osd/OSD.cc @@ -9460,14 +9460,14 @@ epoch_t OSDShard::get_min_pg_epoch() void OSDShard::wait_min_pg_epoch(epoch_t need) { Mutex::Locker l(shard_lock); - waiting_for_min_pg_epoch = true; + ++waiting_for_min_pg_epoch; while (!pg_slots_by_epoch.empty() && pg_slots_by_epoch.begin()->epoch < need) { dout(10) << need << " waiting on " << pg_slots_by_epoch.begin()->epoch << dendl; min_pg_epoch_cond.Wait(shard_lock); } - waiting_for_min_pg_epoch = false; + --waiting_for_min_pg_epoch; } epoch_t OSDShard::get_max_waiting_epoch() diff --git a/src/osd/OSD.h b/src/osd/OSD.h index 982bb1c1bb78f..c92b1bb8d7adf 100644 --- a/src/osd/OSD.h +++ b/src/osd/OSD.h @@ -1140,7 +1140,7 @@ struct OSDShard { boost::intrusive::set_member_hook<>, &OSDShardPGSlot::pg_epoch_item>, boost::intrusive::compare> pg_slots_by_epoch; - bool waiting_for_min_pg_epoch = false; + int waiting_for_min_pg_epoch = 0; Cond min_pg_epoch_cond; /// priority queue