]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
radosgw-admin: 'mdlog trim' loops until done 29713/head
authorCasey Bodley <cbodley@redhat.com>
Wed, 31 Jul 2019 21:06:13 +0000 (17:06 -0400)
committerCasey Bodley <cbodley@redhat.com>
Fri, 16 Aug 2019 20:55:09 +0000 (16:55 -0400)
Signed-off-by: Casey Bodley <cbodley@redhat.com>
(cherry picked from commit 91eef6712ad29d6c15907f1663e6143fc4144dec)

Conflicts: store->time_log_trim() instead of svc.cls->timelog.trim()
src/rgw/rgw_metadata.cc no null_yield

src/rgw/rgw_admin.cc
src/rgw/rgw_metadata.cc

index adbe2042844ac593b7e68c3ad83e8d1fad5dbab0..cbacc304695069a864083137f8ae97da863a5632 100644 (file)
@@ -6642,8 +6642,12 @@ next:
     }
     RGWMetadataLog *meta_log = store->meta_mgr->get_log(period_id);
 
-    ret = meta_log->trim(shard_id, start_time.to_real_time(), end_time.to_real_time(), start_marker, end_marker);
-    if (ret < 0) {
+    // trim until -ENODATA
+    do {
+      ret = meta_log->trim(shard_id, start_time.to_real_time(),
+                           end_time.to_real_time(), start_marker, end_marker);
+    } while (ret == 0);
+    if (ret < 0 && ret != -ENODATA) {
       cerr << "ERROR: meta_log->trim(): " << cpp_strerror(-ret) << std::endl;
       return -ret;
     }
index 30337dcd5b4603b88ff71bd42e70b1e758864fcd..e0d8d29ed7fa4458e61245fe83f0563412eccc65 100644 (file)
@@ -222,14 +222,8 @@ int RGWMetadataLog::trim(int shard_id, const real_time& from_time, const real_ti
   string oid;
   get_shard_oid(shard_id, oid);
 
-  int ret;
-
-  ret = store->time_log_trim(oid, from_time, end_time, start_marker, end_marker);
-
-  if (ret == -ENOENT || ret == -ENODATA)
-    ret = 0;
-
-  return ret;
+  return store->time_log_trim(oid, from_time, end_time, start_marker,
+                              end_marker, nullptr);
 }
   
 int RGWMetadataLog::lock_exclusive(int shard_id, timespan duration, string& zone_id, string& owner_id) {