summaryrefslogtreecommitdiffstats
path: root/src/crimson (follow)
Commit message (Collapse)AuthorAgeFilesLines
* crimson: remove unused OpsExecuter::rollback_obc_if_modified overloadSamuel Just2024-10-151-31/+0
| | | | Signed-off-by: Samuel Just <sjust@redhat.com>
* crimson: OpsExecuter no longer needs to be a lw shared ptrSamuel Just2024-10-155-20/+18
| | | | | | | ClientRequest and InternalClientRequest can declare them as auto variables. Signed-off-by: Samuel Just <sjust@redhat.com>
* crimson: remove now unused PG::do_osd_ops* and log_replySamuel Just2024-10-152-342/+1
| | | | Signed-off-by: Samuel Just <sjust@redhat.com>
* crimson: clarify ops_executer.h commentSamuel Just2024-10-151-7/+3
| | | | Signed-off-by: Samuel Just <sjust@redhat.com>
* crimson: convert InternalClientRequest::do_request to use *_executer rather ↵Samuel Just2024-10-151-16/+19
| | | | | | than do_osd_ops* Signed-off-by: Samuel Just <sjust@redhat.com>
* crimson: factor out InternalClientRequest::do_processSamuel Just2024-10-152-18/+29
| | | | Signed-off-by: Samuel Just <sjust@redhat.com>
* crimson: switch ClientRequest::do_request to use *_executer rather than ↵Samuel Just2024-10-151-24/+117
| | | | | | do_osd_ops Signed-off-by: Samuel Just <sjust@redhat.com>
* crimson: introduce PG::run_executer,submit_executerSamuel Just2024-10-152-0/+106
| | | | | | | | | | | | 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>
* crimson: PG::submit_error_log returns eversion_t rather than optionalSamuel Just2024-10-152-4/+8
| | | | | | | | | | 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>
* crimson: introduce rollback_obc_if_modified without an error argumentSamuel Just2024-10-151-0/+28
| | | | Signed-off-by: Samuel Just <sjust@redhat.com>
* crimson: futures from flush_changes_n_do_ops_effects must not failSamuel Just2024-10-152-19/+45
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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>
* crimson: OpsExecutor::flush_clone_metadata no longer needs to return a futureSamuel Just2024-10-152-10/+4
| | | | | | Snapmapper updates happen during log commit now. Signed-off-by: Samuel Just <sjust@redhat.com>
* crimson: remove the eagain error from PG::do_osd_opsSamuel Just2024-10-153-13/+19
| | | | | | | | | | | | | | | | | | | | | | 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>
* crimson/osd: move pipelines to osd_operation.hSamuel Just2024-10-156-49/+31
| | | | | | | | | 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>
* crimson: eliminate get_obc stageSamuel Just2024-10-157-19/+4
| | | | | | | 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>
* crimson/.../internal_client_request: convert with_interruption to coroutineSamuel Just2024-10-151-62/+61
| | | | Signed-off-by: Samuel Just <sjust@redhat.com>
* crimson/.../internal_client_request: factor out with_interruptionSamuel Just2024-10-152-66/+74
| | | | Signed-off-by: Samuel Just <sjust@redhat.com>
* crimson/.../internal_client_request: remove unnecessary system_shutdown guardSamuel Just2024-10-151-76/+74
| | | | Signed-off-by: Samuel Just <sjust@redhat.com>
* crimson: fix typo OpsExecutor->OpsExecuterSamuel Just2024-10-153-7/+7
| | | | Signed-off-by: Samuel Just <sjust@redhat.com>
* crimson: add missing field to SUBLOGDPPI and LOGDPPISamuel Just2024-10-151-2/+2
| | | | | | SUBLOGDPPI and LOGDPPI need an extra {} for the interrupt_cond. Signed-off-by: Samuel Just <sjust@redhat.com>
* crimson: remove watchers upon object deletionSamuel Just2024-10-151-10/+26
| | | | | Fixes: https://tracker.ceph.com/issues/68538 Signed-off-by: Samuel Just <sjust@redhat.com>
* Merge pull request #59914 from xxhdx1985126/wip-68174Matan Breizman2024-10-142-5/+12
|\ | | | | | | | | 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>
| * crimson/osd/pg: correct log messages for ↵Xuehan Xu2024-09-251-1/+1
| | | | | | | | | | | | ShardServices::dispatch_context_messages Signed-off-by: Xuehan Xu <xuxuehan@qianxin.com>
| * crimson/osd/pg: also trigger callbacks for empty peering transactionsXuehan Xu2024-09-251-3/+9
| | | | | | | | Signed-off-by: Xuehan Xu <xuxuehan@qianxin.com>
| * crimson/osd/pg: remove snapmapper objects when eventually removingXuehan Xu2024-09-211-1/+2
| | | | | | | | | | | | | | 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>
* | Merge pull request #59572 from xxhdx1985126/wip-67874Matan Breizman2024-10-145-11/+40
|\ \ | | | | | | | | | | | | crimson/osd/backfill_state: add the object to be pushed in the peer missing set of PeeringState Reviewed-by: Samuel Just <sjust@redhat.com>
| * | crimson/osd/backfill_state: add the object to be pushed in the peerXuehan Xu2024-10-085-11/+40
| | | | | | | | | | | | | | | | | | | | | missing set of PeeringState Fixes: https://tracker.ceph.com/issues/67874 Signed-off-by: Xuehan Xu <xuxuehan@qianxin.com>
* | | Merge pull request #59878 from xxhdx1985126/wip-68147Matan Breizman2024-10-141-1/+4
|\ \ \ | | | | | | | | | | | | | | | | 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>
| * | | crimson/osd/backfill_state: push peer pg infos' last_backfills only whenXuehan Xu2024-09-191-1/+4
| | |/ | |/| | | | | | | | | | | | | | | | all objects before them are backfilled Fixes: https://tracker.ceph.com/issues/68147 Signed-off-by: Xuehan Xu <xuxuehan@qianxin.com>
* | | Merge pull request #59916 from xxhdx1985126/wip-68175Matan Breizman2024-10-131-23/+29
|\ \ \ | | | | | | | | | | | | | | | | 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>
| * | | crimson/osd/backfill_state: do at least one time of replica scanning ifXuehan Xu2024-09-271-23/+29
| | | | | | | | | | | | | | | | | | | | | | | | | | | | necessary in the Enqueuing state Fixes: https://tracker.ceph.com/issues/68175 Signed-off-by: Xuehan Xu <xuxuehan@qianxin.com>
* | | | Merge pull request #59776 from xxhdx1985126/wip-68061Matan Breizman2024-10-132-15/+9
|\ \ \ \ | | | | | | | | | | | | | | | | | | | | crimson/osd/backfill_state: always go to Enqueuing when object is pushed during Waiting Reviewed-by: Samuel Just <sjust@redhat.com>
| * | | | crimson/osd/backfill_state: always go to Enqueuing when object is pushedXuehan Xu2024-09-202-15/+9
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | during Waiting Fixes: https://tracker.ceph.com/issues/68061 Signed-off-by: Xuehan Xu <xuxuehan@qianxin.com>
* | | | | Merge pull request #59853 from xxhdx1985126/wip-crimson-pg-purge-straysMatan Breizman2024-10-134-3/+53
|\ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | crimson/osd: purge strays when PGs go clean Reviewed-by: Matan Breizman <mbreizma@redhat.com>
| * | | | | crimson/osd: purge strays when PGs go cleanXuehan Xu2024-09-184-3/+53
| |/ / / / | | | | | | | | | | | | | | | Signed-off-by: Xuehan Xu <xuxuehan@qianxin.com>
* | | | | Merge pull request #59720 from myoungwon/wip-fix-overlapped-writeYingxin2024-10-113-3/+38
|\ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | crimson/os/seastore: fix data inconsistency during ool writes Reviewed-by: Yingxin Cheng <yingxin.cheng@intel.com>
| * | | | | crimson/os/seastore: fix data inconsistency during ool writesmyoungwon oh2024-09-273-3/+38
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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>
* | | | | | crimson/os/seastore/transaction_manager: refine logsYingxin Cheng2024-10-083-90/+122
| | | | | | | | | | | | | | | | | | | | | | | | Signed-off-by: Yingxin Cheng <yingxin.cheng@intel.com>
* | | | | | crimson/os/seastore/transaction_manager: misc cleanupsYingxin Cheng2024-10-082-82/+74
| | | | | | | | | | | | | | | | | | | | | | | | Signed-off-by: Yingxin Cheng <yingxin.cheng@intel.com>
* | | | | | crimson/os/seastore: workaround log linkage issue under clang14Yingxin Cheng2024-10-082-132/+210
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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>
* | | | | | crimson/os/seastore: refine logs of seastore.h/ccYingxin Cheng2024-10-082-144/+263
| | | | | | | | | | | | | | | | | | | | | | | | Signed-off-by: Yingxin Cheng <yingxin.cheng@intel.com>
* | | | | | crimson/os/seastore: adjust op namesYingxin Cheng2024-10-082-21/+21
| | | | | | | | | | | | | | | | | | | | | | | | Signed-off-by: Yingxin Cheng <yingxin.cheng@intel.com>
* | | | | | crimson/os/seastore: convert length logs to the hex formatYingxin Cheng2024-10-084-16/+20
| | | | | | | | | | | | | | | | | | | | | | | | Signed-off-by: Yingxin Cheng <yingxin.cheng@intel.com>
* | | | | | crimson/os/seastore: misc cleanupsYingxin Cheng2024-10-083-163/+154
| | | | | | | | | | | | | | | | | | | | | | | | Signed-off-by: Yingxin Cheng <yingxin.cheng@intel.com>
* | | | | | Merge pull request #59815 from athanatos/sjust/wip-68068Samuel Just2024-09-303-41/+7
|\ \ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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>
| * | | | | | crimson/osd: remove CommonClientRequest::should_abort_request, no callersSamuel Just2024-09-172-29/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | Signed-off-by: Samuel Just <sjust@redhat.com>
| * | | | | | crimson/osd: InternalClientRequests should not be repeated after interval changeSamuel Just2024-09-171-12/+7
| |/ / / / / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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>
* | | | | | Merge pull request #59723 from myoungwon/wip-remove-copy-overhead-ool-writeYingxin2024-09-247-26/+30
|\ \ \ \ \ \ | |_|_|/ / / |/| | | | | | | | | | | | | | | | | crimson/os/seastore: remove unnecessary memory copy during ool write Reviewed-by: Yingxin Cheng <yingxin.cheng@intel.com>
| * | | | | crimson/os/seastore/rbm: add assert to check if bptr is page-alignedmyoungwon oh2024-09-161-0/+2
| | | | | | | | | | | | | | | | | | | | | | | | Signed-off-by: Myoungwon Oh <myoungwon.oh@samsung.com>
| * | | | | crimson/os/seastore/rbm: remove unnecessary copy during ool writemyoungwon oh2024-09-157-14/+12
| | | | | | | | | | | | | | | | | | | | | | | | Signed-off-by: Myoungwon Oh <myoungwon.oh@samsung.com>