]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
mds: don't report repaired backtraces in damagetable
authorJohn Spray <john.spray@redhat.com>
Wed, 25 Oct 2017 09:24:52 +0000 (05:24 -0400)
committerPatrick Donnelly <pdonnell@redhat.com>
Tue, 6 Feb 2018 17:50:01 +0000 (09:50 -0800)
Fixes: http://tracker.ceph.com/issues/18743
Signed-off-by: John Spray <john.spray@redhat.com>
(cherry picked from commit 444382c3370bafa21564bb1e6a5c80f3e4825f6a)

src/mds/CInode.cc
src/mds/CInode.h
src/mds/ScrubStack.cc

index 1144fce1cb23584d18dbec952eed0d9b9a87dcec..3a8ae50c3c794f4f026cdb6fbe045b80448e8876 100644 (file)
@@ -3951,6 +3951,7 @@ next:
                                        << "(" << path << "), rewriting it";
         in->_mark_dirty_parent(in->mdcache->mds->mdlog->get_current_segment(),
                            false);
+        results->backtrace.repaired = true;
       }
 
       // If the inode's number was free in the InoTable, fix that
index 99f12de927f3f04e1449d1033f78fd835b004c21..658807d5a206dac8d152d844b679385fcf30049b 100644 (file)
@@ -1099,14 +1099,13 @@ public:
    */
   struct validated_data {
     template<typename T>struct member_status {
-      bool checked;
-      bool passed;
-      int ondisk_read_retval;
+      bool checked = false;
+      bool passed = false;
+      bool repaired = false;
+      int ondisk_read_retval = 0;
       T ondisk_value;
       T memory_value;
       std::stringstream error_str;
-      member_status() : checked(false), passed(false),
-          ondisk_read_retval(0) {}
     };
 
     bool performed_validation;
index 2a595acdd7a47ea9e0cd1bbaf3e821171779f7c9..7626b4e61a12fee05d7dbeac6d71b4afb0f0b5a2 100644 (file)
@@ -376,7 +376,9 @@ void ScrubStack::_validate_inode_done(CInode *in, int r,
     in->make_path_string(path, true);
   }
 
-  if (result.backtrace.checked && !result.backtrace.passed) {
+  if (result.backtrace.checked && !result.backtrace.passed
+      && !result.backtrace.repaired)
+  {
     // Record backtrace fails as remote linkage damage, as
     // we may not be able to resolve hard links to this inode
     mdcache->mds->damage_table.notify_remote_damaged(in->inode.ino, path);