From: Casey Bodley Date: Wed, 1 Mar 2023 22:20:06 +0000 (-0500) Subject: rgw/reshard: avoid infinite loop if bi_list() returns -ENOENT X-Git-Tag: v18.1.0~250^2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=refs%2Fpull%2F50376%2Fhead;p=ceph.git rgw/reshard: avoid infinite loop if bi_list() returns -ENOENT Signed-off-by: Casey Bodley (cherry picked from commit 3e10944ff551e7bbb3d9083cb351ceb53c6b07b9) --- diff --git a/src/rgw/driver/rados/rgw_reshard.cc b/src/rgw/driver/rados/rgw_reshard.cc index 01d917022d30..2abf029080fc 100644 --- a/src/rgw/driver/rados/rgw_reshard.cc +++ b/src/rgw/driver/rados/rgw_reshard.cc @@ -837,7 +837,12 @@ int RGWBucketReshard::do_reshard(const rgw::bucket_index_layout_generation& curr while (is_truncated) { entries.clear(); int ret = store->getRados()->bi_list(dpp, bucket_info, i, null_object_filter, marker, max_entries, &entries, &is_truncated); - if (ret < 0 && ret != -ENOENT) { + if (ret == -ENOENT) { + ldpp_dout(dpp, 1) << "WARNING: " << __func__ << " failed to find shard " + << i << ", skipping" << dendl; + // break out of the is_truncated loop and move on to the next shard + break; + } else if (ret < 0) { derr << "ERROR: bi_list(): " << cpp_strerror(-ret) << dendl; return ret; }