]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
mds: fix purge_queue's _calculate_ops is inaccurate 37481/head
authorYanhu Cao <gmayyyha@gmail.com>
Tue, 8 Sep 2020 06:20:12 +0000 (14:20 +0800)
committerNathan Cutler <ncutler@suse.com>
Tue, 29 Sep 2020 19:19:59 +0000 (21:19 +0200)
No need to account for removing (or zeroing) backtrace,
because if item.size is 0, num is already set to 1.

Fixes: https://tracker.ceph.com/issues/47353
Signed-off-by: Yanhu Cao <gmayyyha@gmail.com>
(cherry picked from commit 8a54e03f29e19af2072751fe2816b5313ff18abe)

src/mds/PurgeQueue.cc

index f730e4b076050e1925343998a195a651e5f51096..24a870c64979382d93d64254d9c4bac023204415 100644 (file)
@@ -363,14 +363,12 @@ uint32_t PurgeQueue::_calculate_ops(const PurgeItem &item) const
     ops_required = 1 + leaves.size();
   } else {
     // File, work out concurrent Filer::purge deletes
+    // Account for removing (or zeroing) backtrace
     const uint64_t num = (item.size > 0) ?
       Striper::get_num_objects(item.layout, item.size) : 1;
 
     ops_required = std::min(num, g_conf()->filer_max_purge_ops);
 
-    // Account for removing (or zeroing) backtrace
-    ops_required += 1;
-
     // Account for deletions for old pools
     if (item.action != PurgeItem::TRUNCATE_FILE) {
       ops_required += item.old_pools.size();