]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
rgw: only update last_trim marker on ENODATA 26641/head
authorCasey Bodley <cbodley@redhat.com>
Tue, 29 Jan 2019 15:43:58 +0000 (10:43 -0500)
committerPrashant D <pdhange@redhat.com>
Mon, 25 Feb 2019 23:07:39 +0000 (18:07 -0500)
if cls_log_trim() returns 0, it may have stopped after 1000 entries
before trimming all the way to to_marker. only update last_trim on
ENODATA, so we continue trimming until done

Fixes: http://tracker.ceph.com/issues/38075
Signed-off-by: Casey Bodley <cbodley@redhat.com>
(cherry picked from commit f25e85696c40d19e02c2cdeab4148c5751966068)

Conflicts:
src/rgw/rgw_cr_rados.cc : Resolved for compat.h

src/rgw/rgw_cr_rados.cc

index 8c4b1e52930b0f6c90a6decc99d635e39e389059..d8f34cde83edfc55b7778aa0a82ebd884e74c783 100644 (file)
@@ -1,3 +1,4 @@
+#include "include/compat.h"
 #include "rgw_rados.h"
 #include "rgw_coroutine.h"
 #include "rgw_cr_rados.h"
@@ -799,9 +800,10 @@ RGWSyncLogTrimCR::RGWSyncLogTrimCR(RGWRados *store, const std::string& oid,
 int RGWSyncLogTrimCR::request_complete()
 {
   int r = RGWRadosTimelogTrimCR::request_complete();
-  if (r < 0 && r != -ENODATA) {
+  if (r != -ENODATA) {
     return r;
   }
+  // nothing left to trim, update last_trim_marker
   if (*last_trim_marker < to_marker) {
     *last_trim_marker = to_marker;
   }