]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
mds: don't ask peer to traverse old backtrace after encountering error
authorYan, Zheng <zyan@redhat.com>
Thu, 23 Feb 2017 03:56:58 +0000 (11:56 +0800)
committerYan, Zheng <zyan@redhat.com>
Thu, 30 Mar 2017 01:46:05 +0000 (09:46 +0800)
Signed-off-by: "Yan, Zheng" <zyan@redhat.com>
src/mds/MDCache.cc
src/messages/MMDSOpenIno.h

index 347751392172f60e8b5999cd9a686aa5fc586f55..c8f21e21f21b7f793a7584e23b51f322a9b76fb0 100644 (file)
@@ -8614,7 +8614,11 @@ void MDCache::do_open_ino_peer(inodeno_t ino, open_ino_info_t& info)
     }
   } else {
     info.checking = peer;
-    mds->send_message_mds(new MMDSOpenIno(info.tid, ino, info.ancestors), peer);
+    vector<inode_backpointer_t> *pa = NULL;
+    // got backtrace from peer or backtrace just fetched
+    if (info.discover || !info.fetch_backtrace)
+      pa = &info.ancestors;
+    mds->send_message_mds(new MMDSOpenIno(info.tid, ino, pa), peer);
   }
 }
 
index b98f023fa7b1cc9aebba200f5a7c6f255c9bbe57..667e685030069ff095280a939817b8bf4cfee91b 100644 (file)
@@ -22,9 +22,11 @@ struct MMDSOpenIno : public Message {
   vector<inode_backpointer_t> ancestors;
 
   MMDSOpenIno() : Message(MSG_MDS_OPENINO) {}
-  MMDSOpenIno(ceph_tid_t t, inodeno_t i, vector<inode_backpointer_t>a) :
-    Message(MSG_MDS_OPENINO), ino(i), ancestors(a) {
+  MMDSOpenIno(ceph_tid_t t, inodeno_t i, vector<inode_backpointer_t>* pa) :
+    Message(MSG_MDS_OPENINO), ino(i) {
     header.tid = t;
+    if (pa)
+      ancestors = *pa;
   }
 
   const char *get_type_name() const override { return "openino"; }