| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
| |
Signed-off-by: Samuel Just <sjust@redhat.com>
|
|
|
|
|
|
|
| |
ClientRequest and InternalClientRequest can declare them
as auto variables.
Signed-off-by: Samuel Just <sjust@redhat.com>
|
|
|
|
| |
Signed-off-by: Samuel Just <sjust@redhat.com>
|
|
|
|
| |
Signed-off-by: Samuel Just <sjust@redhat.com>
|
|
|
|
|
|
| |
than do_osd_ops*
Signed-off-by: Samuel Just <sjust@redhat.com>
|
|
|
|
| |
Signed-off-by: Samuel Just <sjust@redhat.com>
|
|
|
|
|
|
| |
do_osd_ops
Signed-off-by: Samuel Just <sjust@redhat.com>
|
|
|
|
|
|
|
|
|
|
|
|
| |
These are intended to replace do_osd_ops*. The implementation
is simpler and does not involve passing success and failure
callbacks. It also moves responsibility for dealing with
the MOSDOpReply and client related error handling over to
ClientRequest.
do_osd_op* will be removed once users are switched over.
Signed-off-by: Samuel Just <sjust@redhat.com>
|
|
|
|
|
|
|
|
|
|
| |
It seems like the motivation here was to allow do_osd_ops_execute to
communicate that it didn't submit an error log by making
maybe_submit_error_log a std::optional<eversion_t>. However,
submit_error_log itself always returns a version. Fix submit_error_log
and compensate in do_osd_ops_execute.
Signed-off-by: Samuel Just <sjust@redhat.com>
|
|
|
|
| |
Signed-off-by: Samuel Just <sjust@redhat.com>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The return signature previously suggested that the second future
returned could be an error. This seemed necessary due to how
effects are handled:
template <typename MutFunc>
OpsExecuter::rep_op_fut_t
OpsExecuter::flush_changes_n_do_ops_effects(
const std::vector<OSDOp>& ops,
SnapMapper& snap_mapper,
OSDriver& osdriver,
MutFunc mut_func) &&
{
...
all_completed =
std::move(all_completed).then_interruptible([this, pg=this->pg] {
// let's do the cleaning of `op_effects` in destructor
return interruptor::do_for_each(op_effects,
[pg=std::move(pg)](auto& op_effect) {
return op_effect->execute(pg);
});
However, all of the actual execute implementations (created via
OpsExecuter::with_effect_on_obc) return a bare seastar::future and
cannot fail.
In a larger sense, it's actually critical that neither future returned
from flush_changes_n_do_ops_effects may fail -- they represent applying
the transaction locally and remotely. If either portion fails, there
would need to be an interval change to recover.
Signed-off-by: Samuel Just <sjust@redhat.com>
|
|
|
|
|
|
| |
Snapmapper updates happen during log commit now.
Signed-off-by: Samuel Just <sjust@redhat.com>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The idea here is that PG::do_osd_ops propogates an eagain after starting
a repair upon encountering an eio to indicate that the op should restart
from the top of ClientRequest::process_op.
However, InternalClientRequest's handler for this error simply ignores
it. ClientRequest's handling, while superficially reasonable, doesn't
actually work. Re-calling process_op would mean reentering previous
stages. This is problematic for at least a few reasons:
1. Reentering a prior stage with the same handler doesn't actually work
since the corresponding event entries will already be populated.
2. There might be other ops on the same object waiting on the process
stage. They'd need to be sent back as well in order to preserve
ordering.
Because this mechanism doesn't really seem to be fully baked, let's
remove it for now and try to reintroduce it later after
do_osd_ops[_execute] are a bit simpler.
Signed-off-by: Samuel Just <sjust@redhat.com>
|
|
|
|
|
|
|
|
|
| |
Each of the two existing pipelines are shared across multiple
ops. Rather than defining them in a specific op or in
osd_operations/common/pg_pipeline.h, just declare them in
osd_operation.h.
Signed-off-by: Samuel Just <sjust@redhat.com>
|
|
|
|
|
|
|
| |
f90af12d introduced check_already_complete_get_obc to replace get_obc,
but left get_obc and didn't update the other users.
Signed-off-by: Samuel Just <sjust@redhat.com>
|
|
|
|
| |
Signed-off-by: Samuel Just <sjust@redhat.com>
|
|
|
|
| |
Signed-off-by: Samuel Just <sjust@redhat.com>
|
|
|
|
| |
Signed-off-by: Samuel Just <sjust@redhat.com>
|
|
|
|
| |
Signed-off-by: Samuel Just <sjust@redhat.com>
|
|
|
|
|
|
| |
SUBLOGDPPI and LOGDPPI need an extra {} for the interrupt_cond.
Signed-off-by: Samuel Just <sjust@redhat.com>
|
|
|
|
|
| |
Fixes: https://tracker.ceph.com/issues/68538
Signed-off-by: Samuel Just <sjust@redhat.com>
|
|\
| |
| |
| |
| | |
crimson/osd/pg: remove snapmapper objects when eventually removing collections at the last moment of pg deleting, just as pg meta objects
Reviewed-by: Samuel Just <sjust@redhat.com>
|
| |
| |
| |
| |
| |
| | |
ShardServices::dispatch_context_messages
Signed-off-by: Xuehan Xu <xuxuehan@qianxin.com>
|
| |
| |
| |
| | |
Signed-off-by: Xuehan Xu <xuxuehan@qianxin.com>
|
| |
| |
| |
| |
| |
| |
| | |
collections at the last moment of pg deleting, just as pg meta objects
Fixes: https://tracker.ceph.com/issues/68174
Signed-off-by: Xuehan Xu <xuxuehan@qianxin.com>
|
|\ \
| | |
| | |
| | |
| | | |
crimson/osd/backfill_state: add the object to be pushed in the peer missing set of PeeringState
Reviewed-by: Samuel Just <sjust@redhat.com>
|
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
missing set of PeeringState
Fixes: https://tracker.ceph.com/issues/67874
Signed-off-by: Xuehan Xu <xuxuehan@qianxin.com>
|
|\ \ \
| | | |
| | | |
| | | |
| | | | |
crimson/osd/backfill_state: push peer pg infos' last_backfills only when all objects before them are backfilled
Reviewed-by: Matan Breizman <mbreizma@redhat.com>
|
| | |/
| |/|
| | |
| | |
| | |
| | |
| | | |
all objects before them are backfilled
Fixes: https://tracker.ceph.com/issues/68147
Signed-off-by: Xuehan Xu <xuxuehan@qianxin.com>
|
|\ \ \
| | | |
| | | |
| | | |
| | | | |
crimson/osd/backfill_state: do at least one time of replica scanning if necessary in the Enqueuing state
Reviewed-by: Samuel Just <sjust@redhat.com>
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
necessary in the Enqueuing state
Fixes: https://tracker.ceph.com/issues/68175
Signed-off-by: Xuehan Xu <xuxuehan@qianxin.com>
|
|\ \ \ \
| | | | |
| | | | |
| | | | |
| | | | | |
crimson/osd/backfill_state: always go to Enqueuing when object is pushed during Waiting
Reviewed-by: Samuel Just <sjust@redhat.com>
|
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
during Waiting
Fixes: https://tracker.ceph.com/issues/68061
Signed-off-by: Xuehan Xu <xuxuehan@qianxin.com>
|
|\ \ \ \ \
| | | | | |
| | | | | |
| | | | | |
| | | | | | |
crimson/osd: purge strays when PGs go clean
Reviewed-by: Matan Breizman <mbreizma@redhat.com>
|
| |/ / / /
| | | | |
| | | | |
| | | | | |
Signed-off-by: Xuehan Xu <xuxuehan@qianxin.com>
|
|\ \ \ \ \
| | | | | |
| | | | | |
| | | | | |
| | | | | | |
crimson/os/seastore: fix data inconsistency during ool writes
Reviewed-by: Yingxin Cheng <yingxin.cheng@intel.com>
|
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | | |
In RBM, seastore issues ool writes with allocated address.
If a transaction conflict occurs at this point, the allocated address is freed,
allowing the address to be reused.
However, data inconsistency can occur if seastore issues ool writes with
freed address before the preceding ool write has not been complete.
To fix this issue, this commit frees the allocated address after ool writes is
don in the event of the transaction conflict after ool write is issued.
Signed-off-by: Myoungwon Oh <myoungwon.oh@samsung.com>
|
| | | | | |
| | | | | |
| | | | | |
| | | | | | |
Signed-off-by: Yingxin Cheng <yingxin.cheng@intel.com>
|
| | | | | |
| | | | | |
| | | | | |
| | | | | | |
Signed-off-by: Yingxin Cheng <yingxin.cheng@intel.com>
|
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | | |
The logs printing lambda-captured variables cannot be linked correctly
with SeaStore::Shard::repeat_with_onode() under clang14.
Signed-off-by: Yingxin Cheng <yingxin.cheng@intel.com>
|
| | | | | |
| | | | | |
| | | | | |
| | | | | | |
Signed-off-by: Yingxin Cheng <yingxin.cheng@intel.com>
|
| | | | | |
| | | | | |
| | | | | |
| | | | | | |
Signed-off-by: Yingxin Cheng <yingxin.cheng@intel.com>
|
| | | | | |
| | | | | |
| | | | | |
| | | | | | |
Signed-off-by: Yingxin Cheng <yingxin.cheng@intel.com>
|
| | | | | |
| | | | | |
| | | | | |
| | | | | | |
Signed-off-by: Yingxin Cheng <yingxin.cheng@intel.com>
|
|\ \ \ \ \ \
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | | |
crimson: don't retain InternalClientRequest on interval change even if primary does not change
Reviewed-by: Matan Breizman <mbreizma@redhat.com>
Reviewed-by: Xuehan Xu <xuxuehan@qianxin.com>
|
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | | |
Signed-off-by: Samuel Just <sjust@redhat.com>
|
| |/ / / / /
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | | |
Normal cient requests are special in that we "requeue" them after an
interval change if the primary did not change. This behavior exists due
to a client-side optimization where the client doesn't resend the
operation unless the primary changed.
That's not true for InternalClientRequest (generally used for watch
expirations). The primary will eventually reload and re-expire the
watch once the other watchers reconnect.
If we actually did want InternalClientRequests to be able to repeat
after interval change, they'd need the same resettable handle mechanism
normal ClientRequests use -- this implementation wouldn't actually work
as it would mean the same handle reentering a previous stage.
Fixes: https://tracker.ceph.com/issues/68068
Signed-off-by: Samuel Just <sjust@redhat.com>
|
|\ \ \ \ \ \
| |_|_|/ / /
|/| | | | |
| | | | | |
| | | | | | |
crimson/os/seastore: remove unnecessary memory copy during ool write
Reviewed-by: Yingxin Cheng <yingxin.cheng@intel.com>
|
| | | | | |
| | | | | |
| | | | | |
| | | | | | |
Signed-off-by: Myoungwon Oh <myoungwon.oh@samsung.com>
|
| | | | | |
| | | | | |
| | | | | |
| | | | | | |
Signed-off-by: Myoungwon Oh <myoungwon.oh@samsung.com>
|