From: Yan, Zheng Date: Thu, 23 Feb 2017 03:56:58 +0000 (+0800) Subject: mds: don't ask peer to traverse old backtrace after encountering error X-Git-Tag: v12.0.2~112^2~13 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=ccc783818a95d8c2c23d9f1d8347b684923a04e5;p=ceph.git mds: don't ask peer to traverse old backtrace after encountering error Signed-off-by: "Yan, Zheng" --- diff --git a/src/mds/MDCache.cc b/src/mds/MDCache.cc index 347751392172..c8f21e21f21b 100644 --- a/src/mds/MDCache.cc +++ b/src/mds/MDCache.cc @@ -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 *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); } } diff --git a/src/messages/MMDSOpenIno.h b/src/messages/MMDSOpenIno.h index b98f023fa7b1..667e68503006 100644 --- a/src/messages/MMDSOpenIno.h +++ b/src/messages/MMDSOpenIno.h @@ -22,9 +22,11 @@ struct MMDSOpenIno : public Message { vector ancestors; MMDSOpenIno() : Message(MSG_MDS_OPENINO) {} - MMDSOpenIno(ceph_tid_t t, inodeno_t i, vector& a) : - Message(MSG_MDS_OPENINO), ino(i), ancestors(a) { + MMDSOpenIno(ceph_tid_t t, inodeno_t i, vector* pa) : + Message(MSG_MDS_OPENINO), ino(i) { header.tid = t; + if (pa) + ancestors = *pa; } const char *get_type_name() const override { return "openino"; }