]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
rgw: Disable logging for datalog and bilog if zone doesn't export data
authorSoumya Koduri <skoduri@redhat.com>
Sat, 8 Apr 2023 12:23:24 +0000 (17:53 +0530)
committerSoumya Koduri <skoduri@redhat.com>
Fri, 21 Jun 2024 17:58:44 +0000 (23:28 +0530)
Zones (such as archive zone) which do not export data should have
sync logging disabled.

Fixes# https://tracker.ceph.com/issues/59106

Signed-off-by: Soumya Koduri <skoduri@redhat.com>
(cherry picked from commit 85f0cb592aa0d755c101d2e2845ad736a7697e3e)
(cherry picked from commit 2e411d53707986188e615b7f260e1a5a05bd8854)

src/rgw/rgw_bucket_sync.cc
src/rgw/rgw_rados.cc
src/rgw/services/svc_zone.cc

index 5fd81c53b1e7658e6260d40b2a7be54326f763d1..48cdebfcada044c250db1a61a756fb7fcfb8c7e8 100644 (file)
@@ -926,6 +926,10 @@ bool RGWBucketSyncPolicyHandler::bucket_exports_data() const
     return false;
   }
 
+  if (!zone_svc->sync_module_exports_data()) {
+    return false;
+  }
+
   if (bucket_is_sync_source()) {
     return true;
   }
index aa683b26a38b96bb5424701bbf8ff1bfbff1118c..535834547cb0a0dbb1f320cdeda6ef03358b4107 100644 (file)
@@ -7254,7 +7254,7 @@ int RGWRados::bucket_index_link_olh(const DoutPrefixProvider *dpp, const RGWBuck
                      cls_rgw_bucket_link_olh(op, key, olh_state.olh_tag,
                                               delete_marker, op_tag, meta, olh_epoch,
                                              unmod_since, high_precision_time,
-                                             svc.zone->get_zone().log_data, zones_trace);
+                                             svc.zone->need_to_log_data(), zones_trace);
                       return rgw_rados_operate(dpp, ref.pool.ioctx(), ref.obj.oid, &op, null_yield);
                     });
   if (r < 0) {
@@ -7301,7 +7301,7 @@ int RGWRados::bucket_index_unlink_instance(const DoutPrefixProvider *dpp, const
                      op.assert_exists(); // bucket index shard must exist
                      cls_rgw_guard_bucket_resharding(op, -ERR_BUSY_RESHARDING);
                      cls_rgw_bucket_unlink_instance(op, key, op_tag,
-                                                    olh_tag, olh_epoch, svc.zone->get_zone().log_data, zones_trace);
+                                                    olh_tag, olh_epoch, svc.zone->need_to_log_data(), zones_trace);
                       return rgw_rados_operate(dpp, ref.pool.ioctx(), ref.obj.oid, &op, null_yield);
                     });
   if (r < 0) {
@@ -8731,7 +8731,7 @@ int RGWRados::cls_obj_prepare_op(const DoutPrefixProvider *dpp, BucketShard& bs,
 
   cls_rgw_obj_key key(obj.key.get_index_key_name(), obj.key.instance);
   cls_rgw_guard_bucket_resharding(o, -ERR_BUSY_RESHARDING);
-  cls_rgw_bucket_prepare_op(o, op, tag, key, obj.key.get_loc(), svc.zone->get_zone().log_data, bilog_flags, zones_trace);
+  cls_rgw_bucket_prepare_op(o, op, tag, key, obj.key.get_loc(), svc.zone->need_to_log_data(), bilog_flags, zones_trace);
   return bs.bucket_obj.operate(dpp, &o, y);
 }
 
@@ -8759,10 +8759,10 @@ int RGWRados::cls_obj_complete_op(BucketShard& bs, const rgw_obj& obj, RGWModify
   cls_rgw_obj_key key(ent.key.name, ent.key.instance);
   cls_rgw_guard_bucket_resharding(o, -ERR_BUSY_RESHARDING);
   cls_rgw_bucket_complete_op(o, op, tag, ver, key, dir_meta, remove_objs,
-                             svc.zone->get_zone().log_data, bilog_flags, &zones_trace);
+                             svc.zone->need_to_log_data(), bilog_flags, &zones_trace);
   complete_op_data *arg;
   index_completion_manager->create_completion(obj, op, tag, ver, key, dir_meta, remove_objs,
-                                              svc.zone->get_zone().log_data, bilog_flags, &zones_trace, &arg);
+                                              svc.zone->need_to_log_data(), bilog_flags, &zones_trace, &arg);
   librados::AioCompletion *completion = arg->rados_completion;
   int ret = bs.bucket_obj.aio_operate(arg->rados_completion, &o);
   completion->release(); /* can't reference arg here, as it might have already been released */
@@ -9497,7 +9497,7 @@ int RGWRados::check_disk_state(const DoutPrefixProvider *dpp,
                                optional_yield y)
 {
   const rgw_bucket& bucket = bucket_info.bucket;
-  uint8_t suggest_flag = (svc.zone->get_zone().log_data ? CEPH_RGW_DIR_SUGGEST_LOG_OP : 0);
+  uint8_t suggest_flag = (svc.zone->need_to_log_data() ? CEPH_RGW_DIR_SUGGEST_LOG_OP : 0);
 
   std::string loc;
 
index 56715dc72a206f9e05c72c0d81d93966f9746544..60fffb68fd55140bcc6df32860cd1a7d12f87956 100644 (file)
@@ -1071,7 +1071,7 @@ bool RGWSI_Zone::need_to_sync() const
 
 bool RGWSI_Zone::need_to_log_data() const
 {
-  return zone_public_config->log_data;
+  return (zone_public_config->log_data && sync_module_exports_data());
 }
 
 bool RGWSI_Zone::is_meta_master() const