cout << " usage trim trim usage (by user, date range)\n";
cout << " gc list dump expired garbage collection objects (specify\n";
cout << " --include-all to list all entries, including unexpired)\n";
- cout << " gc process manually process garbage\n";
+ cout << " gc process manually process garbage (specify\n";
+ cout << " --include-all to process all entries, including unexpired)\n";
cout << " lc list list all bucket lifecycle progress\n";
cout << " lc process manually process lifecycle\n";
cout << " metadata get get metadata info\n";
}
if (opt_cmd == OPT_GC_PROCESS) {
- int ret = store->process_gc();
+ int ret = store->process_gc(!include_all);
if (ret < 0) {
cerr << "ERROR: gc processing returned error: " << cpp_strerror(-ret) << std::endl;
return 1;
return 0;
}
-int RGWGC::process(int index, int max_secs)
+int RGWGC::process(int index, int max_secs, bool expired_only)
{
rados::cls::lock::Lock l(gc_index_lock_name);
utime_t end = ceph_clock_now();
do {
int max = 100;
std::list<cls_rgw_gc_obj_info> entries;
- ret = cls_rgw_gc_list(store->gc_pool_ctx, obj_names[index], marker, max, true, entries, &truncated, next_marker);
+ ret = cls_rgw_gc_list(store->gc_pool_ctx, obj_names[index], marker, max, expired_only, entries, &truncated, next_marker);
if (ret == -ENOENT) {
ret = 0;
goto done;
return 0;
}
-int RGWGC::process()
+int RGWGC::process(bool expired_only)
{
int max_secs = cct->_conf->rgw_gc_processor_max_time;
for (int i = 0; i < max_objs; i++) {
int index = (i + start) % max_objs;
- ret = process(index, max_secs);
+ int ret = process(index, max_secs, expired_only);
if (ret < 0)
return ret;
}
do {
utime_t start = ceph_clock_now();
dout(2) << "garbage collection: start" << dendl;
- int r = gc->process();
+ int r = gc->process(true);
if (r < 0) {
dout(0) << "ERROR: garbage collection process() returned error r=" << r << dendl;
}
int list(int *index, string& marker, uint32_t max, bool expired_only, std::list<cls_rgw_gc_obj_info>& result, bool *truncated);
void list_init(int *index) { *index = 0; }
- int process(int index, int process_max_secs);
- int process();
+ int process(int index, int process_max_secs, bool expired_only);
+ int process(bool expired_only);
bool going_down();
void start_processor();
return gc->list(index, marker, max, expired_only, result, truncated);
}
-int RGWRados::process_gc()
+int RGWRados::process_gc(bool expired_only)
{
- return gc->process();
+ return gc->process(expired_only);
}
int RGWRados::list_lc_progress(const string& marker, uint32_t max_entries, map<string, int> *progress_map)
int gc_operate(string& oid, librados::ObjectReadOperation *op, bufferlist *pbl);
int list_gc_objs(int *index, string& marker, uint32_t max, bool expired_only, std::list<cls_rgw_gc_obj_info>& result, bool *truncated);
- int process_gc();
- bool process_expire_objects();
+ int process_gc(bool expired_only);
+ int process_expire_objects();
int defer_gc(void *ctx, const RGWBucketInfo& bucket_info, const rgw_obj& obj);
int process_lc();
usage trim trim usage (by user, date range)
gc list dump expired garbage collection objects (specify
--include-all to list all entries, including unexpired)
- gc process manually process garbage
+ gc process manually process garbage (specify
+ --include-all to process all entries, including unexpired)
lc list list all bucket lifecycle progress
lc process manually process lifecycle
metadata get get metadata info