]> git-server-git.apps.pok.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)
committerJohn Spray <john.spray@redhat.com>
Tue, 31 Oct 2017 16:37:36 +0000 (16:37 +0000)
Fixes: http://tracker.ceph.com/issues/18743
Signed-off-by: John Spray <john.spray@redhat.com>
src/mds/CInode.cc
src/mds/CInode.h
src/mds/ScrubStack.cc

index 58a47800976440a81de0367c8b6962fbb2d2df16..f1974c54ce842fec5e3e86fd45c3bd89ae204b0a 100644 (file)
@@ -3955,6 +3955,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 d0a49d1feb56d52ac7ae396a0f2d0d947bb33a39..2ced5b22b357190e35d8deb1906a5a98bafa401e 100644 (file)
@@ -1108,14 +1108,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);