From: Casey Bodley Date: Tue, 17 Mar 2026 16:54:18 +0000 (-0400) Subject: rgw/sal: Object::get_serializer() takes optional_yield X-Git-Tag: v21.0.0~9^2~5 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=ea634e9d19d18f650318fea45ab94a962cd93337;p=ceph.git rgw/sal: Object::get_serializer() takes optional_yield Signed-off-by: Casey Bodley --- diff --git a/src/rgw/driver/posix/rgw_sal_posix.cc b/src/rgw/driver/posix/rgw_sal_posix.cc index bb8b285c6f6..eb54567711a 100644 --- a/src/rgw/driver/posix/rgw_sal_posix.cc +++ b/src/rgw/driver/posix/rgw_sal_posix.cc @@ -3208,7 +3208,7 @@ void POSIXObject::gen_rand_obj_instance_name() state.obj.key.set_instance(gen_rand_instance_name()); } -std::unique_ptr POSIXObject::get_serializer(const DoutPrefixProvider *dpp, const std::string& lock_name) +std::unique_ptr POSIXObject::get_serializer(const DoutPrefixProvider *dpp, optional_yield y, const std::string& lock_name) { return std::make_unique(dpp, driver, this, lock_name); } diff --git a/src/rgw/driver/posix/rgw_sal_posix.h b/src/rgw/driver/posix/rgw_sal_posix.h index f38e77623f7..4e6eb0ed255 100644 --- a/src/rgw/driver/posix/rgw_sal_posix.h +++ b/src/rgw/driver/posix/rgw_sal_posix.h @@ -1061,7 +1061,7 @@ public: optional_yield y) override; virtual bool is_expired() override; virtual void gen_rand_obj_instance_name() override; - virtual std::unique_ptr get_serializer(const DoutPrefixProvider *dpp, + virtual std::unique_ptr get_serializer(const DoutPrefixProvider *dpp, optional_yield y, const std::string& lock_name) override; virtual int transition(Bucket* bucket, const rgw_placement_rule& placement_rule, diff --git a/src/rgw/driver/rados/rgw_sal_rados.cc b/src/rgw/driver/rados/rgw_sal_rados.cc index 9b05a402307..1a54761faa2 100644 --- a/src/rgw/driver/rados/rgw_sal_rados.cc +++ b/src/rgw/driver/rados/rgw_sal_rados.cc @@ -3193,7 +3193,7 @@ int RadosObject::chown(User& new_user, const DoutPrefixProvider* dpp, optional_y return 0; } -std::unique_ptr RadosObject::get_serializer(const DoutPrefixProvider *dpp, const std::string& lock_name) +std::unique_ptr RadosObject::get_serializer(const DoutPrefixProvider *dpp, optional_yield y, const std::string& lock_name) { return std::make_unique(dpp, store, this, lock_name); } diff --git a/src/rgw/driver/rados/rgw_sal_rados.h b/src/rgw/driver/rados/rgw_sal_rados.h index c2a018a56c5..0ad0bf4caf0 100644 --- a/src/rgw/driver/rados/rgw_sal_rados.h +++ b/src/rgw/driver/rados/rgw_sal_rados.h @@ -623,7 +623,7 @@ class RadosObject : public StoreObject { virtual std::unique_ptr clone() override { return std::unique_ptr(new RadosObject(*this)); } - virtual std::unique_ptr get_serializer(const DoutPrefixProvider *dpp, + virtual std::unique_ptr get_serializer(const DoutPrefixProvider *dpp, optional_yield y, const std::string& lock_name) override; virtual int transition(Bucket* bucket, const rgw_placement_rule& placement_rule, diff --git a/src/rgw/rgw_op.cc b/src/rgw/rgw_op.cc index d8bc5db2b6c..bd3cfe2a4e2 100644 --- a/src/rgw/rgw_op.cc +++ b/src/rgw/rgw_op.cc @@ -7434,7 +7434,7 @@ void RGWCompleteMultipart::execute(optional_yield y) s->cct->_conf.get_val("rgw_mp_lock_max_time"); const ceph::timespan dur = std::chrono::seconds(max_lock_secs_mp); - serializer = meta_obj->get_serializer(this, "RGWCompleteMultipart"); + serializer = meta_obj->get_serializer(this, y, "RGWCompleteMultipart"); op_ret = serializer->try_lock(this, dur, y); if (op_ret < 0) { ldpp_dout(this, 0) << "failed to acquire lock" << dendl; @@ -7724,7 +7724,7 @@ void RGWAbortMultipart::execute(optional_yield y) int max_lock_secs_mp = s->cct->_conf.get_val("rgw_mp_lock_max_time"); const ceph::timespan dur = std::chrono::seconds(max_lock_secs_mp); - auto serializer = meta_obj->get_serializer(this, "RGWCompleteMultipart"); + auto serializer = meta_obj->get_serializer(this, y, "RGWCompleteMultipart"); op_ret = serializer->try_lock(this, dur, y); if (op_ret < 0) { if (op_ret == -ENOENT) { diff --git a/src/rgw/rgw_sal.h b/src/rgw/rgw_sal.h index 5b7155868ea..efdad9d5195 100644 --- a/src/rgw/rgw_sal.h +++ b/src/rgw/rgw_sal.h @@ -1291,7 +1291,7 @@ class Object { /** Create a randomized instance ID for this object */ virtual void gen_rand_obj_instance_name() = 0; /** Get a multipart serializer for this object */ - virtual std::unique_ptr get_serializer(const DoutPrefixProvider *dpp, + virtual std::unique_ptr get_serializer(const DoutPrefixProvider *dpp, optional_yield y, const std::string& lock_name) = 0; /** Move the data of an object to new placement storage */ virtual int transition(Bucket* bucket, diff --git a/src/rgw/rgw_sal_dbstore.cc b/src/rgw/rgw_sal_dbstore.cc index 960531389a3..4d2394bf6b6 100644 --- a/src/rgw/rgw_sal_dbstore.cc +++ b/src/rgw/rgw_sal_dbstore.cc @@ -612,6 +612,7 @@ namespace rgw::sal { } std::unique_ptr DBObject::get_serializer(const DoutPrefixProvider *dpp, + optional_yield y, const std::string& lock_name) { return std::make_unique(dpp, store, this, lock_name); diff --git a/src/rgw/rgw_sal_dbstore.h b/src/rgw/rgw_sal_dbstore.h index d645a0f2b19..2994beed017 100644 --- a/src/rgw/rgw_sal_dbstore.h +++ b/src/rgw/rgw_sal_dbstore.h @@ -589,6 +589,7 @@ protected: return std::unique_ptr(new DBObject(*this)); } virtual std::unique_ptr get_serializer(const DoutPrefixProvider *dpp, + optional_yield y, const std::string& lock_name) override; virtual int transition(Bucket* bucket, const rgw_placement_rule& placement_rule, diff --git a/src/rgw/rgw_sal_filter.cc b/src/rgw/rgw_sal_filter.cc index 6103fecff5c..8e89d0ac3b3 100644 --- a/src/rgw/rgw_sal_filter.cc +++ b/src/rgw/rgw_sal_filter.cc @@ -1114,10 +1114,10 @@ void FilterObject::gen_rand_obj_instance_name() return next->gen_rand_obj_instance_name(); } -std::unique_ptr FilterObject::get_serializer(const DoutPrefixProvider *dpp, +std::unique_ptr FilterObject::get_serializer(const DoutPrefixProvider *dpp, optional_yield y, const std::string& lock_name) { - std::unique_ptr s = next->get_serializer(dpp, lock_name); + std::unique_ptr s = next->get_serializer(dpp, y, lock_name); return std::make_unique(std::move(s)); } diff --git a/src/rgw/rgw_sal_filter.h b/src/rgw/rgw_sal_filter.h index 840c1f157ca..a92da347740 100644 --- a/src/rgw/rgw_sal_filter.h +++ b/src/rgw/rgw_sal_filter.h @@ -819,7 +819,7 @@ public: optional_yield y) override; virtual bool is_expired() override; virtual void gen_rand_obj_instance_name() override; - virtual std::unique_ptr get_serializer(const DoutPrefixProvider *dpp, + virtual std::unique_ptr get_serializer(const DoutPrefixProvider *dpp, optional_yield y, const std::string& lock_name) override; virtual int transition(Bucket* bucket, const rgw_placement_rule& placement_rule,