If we have found inode in peer mds' cache, but failed to discover
the inode. The path to inode must have changed. we should check
peer again, instead of fetching backtrace, because inode's backtrace
may haven't been stored.
Fixes: http://tracker.ceph.com/issues/20806
Signed-off-by: "Yan, Zheng" <zyan@redhat.com>
info.last_err = err;
}
- if (info.check_peers) {
+ if (info.check_peers || info.discover) {
+ if (info.discover) {
+ // got backtrace from peer, but failed to find inode. re-check peers
+ info.discover = false;
+ info.ancestors.clear();
+ info.checked.clear();
+ }
info.check_peers = false;
info.checking = MDS_RANK_NONE;
do_open_ino_peer(ino, info);