]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
tools/ceph_dedup: Add const qualifiers and reference parameters 63289/head
authorKefu Chai <tchaikov@gmail.com>
Thu, 15 May 2025 07:41:07 +0000 (15:41 +0800)
committerKefu Chai <tchaikov@gmail.com>
Fri, 16 May 2025 13:31:36 +0000 (21:31 +0800)
Improve code quality in ceph_dedup tool by:

- Adding const qualifiers to member functions and parameters where appropriate
- Converting parameter passing to use references instead of value copies
  for complex objects

These changes enhance code readability, better express intent through
const-correctness, and improve performance by avoiding unnecessary deep
copies.

Signed-off-by: Kefu Chai <tchaikov@gmail.com>
src/tools/ceph_dedup/ceph_dedup_daemon.cc

index 45b67fc201cbecd845e807f3a437aec1b1e53cb8..a82b0227b32af5dc34967ff88656d1e71888f3c3 100644 (file)
@@ -190,13 +190,13 @@ public:
       }
     }
 
-    bool contains(std::string& fp) {
+    bool contains(const std::string& fp) {
       std::shared_lock lock(fingerprint_lock);
       return fp_map.contains(fp);
     }
 
     // return true if the chunk is duplicate
-    bool add(chunk_t& chunk) {
+    bool add(const chunk_t& chunk) {
       std::unique_lock lock(fingerprint_lock);
       auto entry = fp_map.find(chunk.fingerprint);
       total_bytes += chunk.size;
@@ -246,7 +246,7 @@ public:
       fp_store(chunk_threshold, report_period, fpstore_threshold),
       sampling_ratio(static_cast<double>(sampling_ratio) / 100) { }
 
-    bool is_all_stop() {
+    bool is_all_stop() const {
       std::shared_lock l{glock};
       return all_stop;
     }
@@ -319,14 +319,14 @@ private:
     ObjectCursor end,
     size_t max_object_count);
   std::vector<size_t> sample_object(size_t count);
-  void try_dedup_and_accumulate_result(ObjectItem &object, snap_t snap = 0);
+  void try_dedup_and_accumulate_result(const ObjectItem &object, snap_t snap = 0);
   int do_chunk_dedup(chunk_t &chunk, snap_t snap);
-  bufferlist read_object(ObjectItem &object);
+  bufferlist read_object(const ObjectItem &object);
   std::vector<std::tuple<bufferlist, std::pair<uint64_t, uint64_t>>> do_cdc(
-    ObjectItem &object,
-    bufferlist &data);
-  std::string generate_fingerprint(bufferlist chunk_data);
-  AioCompRef do_async_evict(std::string oid);
+    const ObjectItem &object,
+    const bufferlist &data) const;
+  std::string generate_fingerprint(const bufferlist& chunk_data) const;
+  AioCompRef do_async_evict(const std::string& oid);
 
   IoCtx io_ctx;
   IoCtx chunk_io_ctx;
@@ -393,7 +393,7 @@ void SampleDedupWorkerThread::crawl()
   }
 }
 
-AioCompRef SampleDedupWorkerThread::do_async_evict(std::string oid)
+AioCompRef SampleDedupWorkerThread::do_async_evict(const std::string& oid)
 {
   Rados rados;
   ObjectReadOperation op_tier;
@@ -443,7 +443,7 @@ std::vector<size_t> SampleDedupWorkerThread::sample_object(size_t count)
 }
 
 void SampleDedupWorkerThread::try_dedup_and_accumulate_result(
-  ObjectItem &object, snap_t snap)
+  const ObjectItem &object, snap_t snap)
 {
   bufferlist data = read_object(object);
   if (data.length() == 0) {
@@ -504,7 +504,7 @@ void SampleDedupWorkerThread::try_dedup_and_accumulate_result(
   total_object_size += object_size;
 }
 
-bufferlist SampleDedupWorkerThread::read_object(ObjectItem &object)
+bufferlist SampleDedupWorkerThread::read_object(const ObjectItem &object)
 {
   bufferlist whole_data;
   size_t offset = 0;
@@ -527,8 +527,8 @@ bufferlist SampleDedupWorkerThread::read_object(ObjectItem &object)
 }
 
 std::vector<std::tuple<bufferlist, std::pair<uint64_t, uint64_t>>> SampleDedupWorkerThread::do_cdc(
-  ObjectItem &object,
-  bufferlist &data)
+  const ObjectItem &object,
+  const bufferlist &data) const
 {
   std::vector<std::tuple<bufferlist, std::pair<uint64_t, uint64_t>>> ret;
 
@@ -544,7 +544,7 @@ std::vector<std::tuple<bufferlist, std::pair<uint64_t, uint64_t>>> SampleDedupWo
   return ret;
 }
 
-std::string SampleDedupWorkerThread::generate_fingerprint(bufferlist chunk_data)
+std::string SampleDedupWorkerThread::generate_fingerprint(const bufferlist& chunk_data) const
 {
   std::string ret;