X-Git-Url: https://git.proxmox.com/?a=blobdiff_plain;f=ceph%2Fsrc%2Frgw%2Fdriver%2Frados%2Frgw_rados.h;h=75a5e1b5455890d11b898b5f1e57bcf09049d4ef;hb=aee94f6923ba628a85d855d0c5316d0da78bfa2a;hp=3c6b8bc25ddf2bc19718cb686d56ea8edd52f76e;hpb=27f45121cc74e31203777ad565f78d8aad9b92a2;p=ceph.git diff --git a/ceph/src/rgw/driver/rados/rgw_rados.h b/ceph/src/rgw/driver/rados/rgw_rados.h index 3c6b8bc25..75a5e1b54 100644 --- a/ceph/src/rgw/driver/rados/rgw_rados.h +++ b/ceph/src/rgw/driver/rados/rgw_rados.h @@ -382,12 +382,7 @@ class RGWRados librados::IoCtx root_pool_ctx; // .rgw - double inject_notify_timeout_probability = 0; - unsigned max_notify_retries = 0; - - friend class RGWWatcher; - - ceph::mutex bucket_id_lock = ceph::make_mutex("rados_bucket_id"); + ceph::mutex bucket_id_lock{ceph::make_mutex("rados_bucket_id")}; // This field represents the number of bucket index object shards uint32_t bucket_index_max_shards; @@ -1260,7 +1255,8 @@ public: int set_attrs(const DoutPrefixProvider *dpp, RGWObjectCtx* ctx, RGWBucketInfo& bucket_info, const rgw_obj& obj, std::map& attrs, std::map* rmattrs, - optional_yield y); + optional_yield y, + ceph::real_time set_mtime = ceph::real_clock::zero()); int get_obj_state(const DoutPrefixProvider *dpp, RGWObjectCtx *rctx, RGWBucketInfo& bucket_info, const rgw_obj& obj, RGWObjState **state, RGWObjManifest** manifest, bool follow_olh, optional_yield y, bool assume_noent = false); @@ -1511,6 +1507,17 @@ public: std::map *existing_stats, std::map *calculated_stats); int bucket_rebuild_index(const DoutPrefixProvider *dpp, RGWBucketInfo& bucket_info); + + // Search the bucket for encrypted multipart uploads, and increase their mtime + // slightly to generate a bilog entry to trigger a resync to repair any + // corrupted replicas. See https://tracker.ceph.com/issues/46062 + int bucket_resync_encrypted_multipart(const DoutPrefixProvider* dpp, + optional_yield y, + rgw::sal::RadosStore* driver, + RGWBucketInfo& bucket_info, + const std::string& marker, + RGWFormatterFlusher& flusher); + int bucket_set_reshard(const DoutPrefixProvider *dpp, const RGWBucketInfo& bucket_info, const cls_rgw_bucket_instance_entry& entry); int remove_objs_from_index(const DoutPrefixProvider *dpp, RGWBucketInfo& bucket_info,