osdmap_epoch is the latest osdmap of the client, it is not the minimum
osdmap epoch required to serve the request from the client with this
osdmap.
as a matter of fact, `MOSDOp` inherits from `MOSDFastDispatchOp`.
the `MOSDFastDispatchOp::get_min_epoch()` returns `get_map_epoch()`, and
`MOSDOp` does not override `get_min_epoch()`.
`ClientRequest` is designed to handle `MOSDOp`. so, there is no need
to wait for `m->get_map_epoch()` osdmap before moving further, and more
importantly, we should wait until PG is updated with min_epoch osdmap.
Signed-off-by: Kefu Chai <kchai@redhat.com>
handle.enter(pp(pg).await_map)
).then([this, &pg]() mutable {
return with_blocking_future(
- pg.osdmap_gate.wait_for_map(m->get_map_epoch()));
+ pg.osdmap_gate.wait_for_map(m->get_min_epoch()));
}).then([this, &pg](auto map) mutable {
return with_blocking_future(
handle.enter(pp(pg).wait_for_active));