]> git.apps.os.sepia.ceph.com Git - ceph.git/commit
rgw/cloud-restore: Support restoration of objects transitioned to Glacier/Tape endpoint
authorSoumya Koduri <skoduri@redhat.com>
Wed, 30 Apr 2025 20:36:21 +0000 (02:06 +0530)
committerSoumya Koduri <skoduri@redhat.com>
Thu, 10 Jul 2025 16:39:48 +0000 (22:09 +0530)
commitf6356641ae306eef3505d0c7907a18206fcc012b
tree0624a395fbf6bd0d732c37aea6f825aa7e87c936
parent593ad0947546aa0268cac803fac8892478bde126
rgw/cloud-restore: Support restoration of objects transitioned to Glacier/Tape endpoint

Restoration of objects from certain cloud services (like Glacier/Tape) could
take significant amount of time (even days). Hence store the state of such restore requests
and periodically process them.

Brief summary of changes

* Refactored existing restore code to consolidate and move all restore processing into rgw_restore* file/class

* RGWRestore class is defined to manage the restoration of objects.

* Lastly, for SAL_RADOS, FIFO is used to store and read restore entries.

Currently, this PR handles storing state of restore requests sent to cloud-glacier tier-type which need async processing.
The changes are tested with AWS Glacier Flexible Retrieval with tier_type Expedited and Standard.

Reviewed-by: Matt Benjamin <mbenjamin@redhat.com>
Reviewed-by: Adam Emerson <aemerson@redhat.com>
Reviewed-by: Jiffin Tony Thottan <thottanjiffin@gmail.com>
Reviewed-by: Daniel Gryniewicz <dang@redhat.com>
Signed-off-by: Soumya Koduri <skoduri@redhat.com>
(cherry picked from commit ef96bb0d6137bacf45b9ee2f99ad5bcd8b3b6add)
36 files changed:
src/common/options/rgw.yaml.in
src/common/subsys.h
src/rgw/.rgw_op.cc.swn [new file with mode: 0644]
src/rgw/CMakeLists.txt
src/rgw/driver/daos/rgw_sal_daos.cc
src/rgw/driver/daos/rgw_sal_daos.h
src/rgw/driver/motr/rgw_sal_motr.cc
src/rgw/driver/motr/rgw_sal_motr.h
src/rgw/driver/posix/rgw_sal_posix.cc
src/rgw/driver/posix/rgw_sal_posix.h
src/rgw/driver/rados/rgw_lc_tier.cc
src/rgw/driver/rados/rgw_lc_tier.h
src/rgw/driver/rados/rgw_rados.cc
src/rgw/driver/rados/rgw_rados.h
src/rgw/driver/rados/rgw_sal_rados.cc
src/rgw/driver/rados/rgw_sal_rados.h
src/rgw/driver/rados/rgw_zone.h
src/rgw/radosgw-admin/radosgw-admin.cc
src/rgw/rgw_appmain.cc
src/rgw/rgw_lc.h
src/rgw/rgw_object_expirer.cc
src/rgw/rgw_op.cc
src/rgw/rgw_realm_reloader.cc
src/rgw/rgw_rest_s3.cc
src/rgw/rgw_restore.cc [new file with mode: 0644]
src/rgw/rgw_restore.h [new file with mode: 0644]
src/rgw/rgw_sal.cc
src/rgw/rgw_sal.h
src/rgw/rgw_sal_dbstore.cc
src/rgw/rgw_sal_dbstore.h
src/rgw/rgw_sal_filter.cc
src/rgw/rgw_sal_filter.h
src/rgw/rgw_sal_fwd.h
src/rgw/rgw_sal_store.h
src/rgw/rgw_zone.cc
src/test/rgw/rgw_cr_test.cc