]> git.apps.os.sepia.ceph.com Git - ceph-ci.git/commitdiff
rgw: fix bool/int logic error when calling get_obj_head_ioctx
authorJ. Eric Ivancich <ivancich@redhat.com>
Wed, 14 Sep 2022 16:49:27 +0000 (12:49 -0400)
committerJ. Eric Ivancich <ivancich@redhat.com>
Thu, 15 Sep 2022 02:57:35 +0000 (22:57 -0400)
get_obj_head_ioctx returns an int where 0 indicates success. When
called in RGWRados::check_disk_state the result was treated as a
booleann with inverted logic. This fixes that error.

This was already fixed in PR #44616 as part of a larger commit, but
this PR unifies the codebase, so various backports are consistent.

This also adds additional logging.

Signed-off-by: J. Eric Ivancich <ivancich@redhat.com>
src/rgw/rgw_rados.cc

index d862e83a681b1ac0466d4a94aa03e1294c66ab45..baf99c370991b6cb83a6da6deb197bbd07dad5c9 100644 (file)
@@ -2401,19 +2401,25 @@ std::string RGWRados::get_cluster_fsid(const DoutPrefixProvider *dpp, optional_y
   return svc.rados->cluster_fsid();
 }
 
-int RGWRados::get_obj_head_ioctx(const DoutPrefixProvider *dpp, const RGWBucketInfo& bucket_info, const rgw_obj& obj, librados::IoCtx *ioctx)
+int RGWRados::get_obj_head_ioctx(const DoutPrefixProvider *dpp,
+                                const RGWBucketInfo& bucket_info,
+                                const rgw_obj& obj,
+                                librados::IoCtx *ioctx)
 {
-  string oid, key;
+  std::string oid, key;
   get_obj_bucket_and_oid_loc(obj, oid, key);
 
   rgw_pool pool;
   if (!get_obj_data_pool(bucket_info.placement_rule, obj, &pool)) {
-    ldpp_dout(dpp, 0) << "ERROR: cannot get data pool for obj=" << obj << ", probably misconfiguration" << dendl;
+    ldpp_dout(dpp, 0) << "ERROR: cannot get data pool for obj=" << obj <<
+      ", probably misconfiguration" << dendl;
     return -EIO;
   }
 
   int r = open_pool_ctx(dpp, pool, *ioctx, false);
   if (r < 0) {
+    ldpp_dout(dpp, 0) << "ERROR: unable to open data-pool=" << pool.to_str() <<
+      " for obj=" << obj << " with error-code=" << r << dendl;
     return r;
   }
 
@@ -9335,8 +9341,8 @@ int RGWRados::check_disk_state(const DoutPrefixProvider *dpp,
   list_state.meta.storage_class = storage_class;
 
   librados::IoCtx head_obj_ctx; // initialize to data pool so we can get pool id
-  int ret = get_obj_head_ioctx(dpp, bucket_info, obj->get_obj(), &head_obj_ctx);
-  if (ret < 0) {
+  r = get_obj_head_ioctx(dpp, bucket_info, obj->get_obj(), &head_obj_ctx);
+  if (r < 0) {
     ldpp_dout(dpp, 0) << __func__ <<
       " WARNING: unable to find head object data pool for \"" <<
       obj << "\", not updating version pool/epoch" << dendl;