This avoid trigger the assertion of path traverse return value
in Server::handle_slave_rmdir_prep. (Other witness mds may release
the inode before receiving the slave rmdir prepare)
Signed-off-by: Yan, Zheng <zyan@redhat.com>
if (in->is_dir() && in->has_subtree_root_dirfrag()) {
// subtree root auths need to be witnesses
set<mds_rank_t> witnesses;
- in->list_replicas(witnesses);
+
+ list<CDir*> dfls;
+ in->get_subtree_dirfrags(dfls);
+ for (auto p : dfls) {
+ if (mds->get_nodeid() != p->get_dir_auth().first)
+ witnesses.insert(p->get_dir_auth().first);
+ }
+
dout(10) << " witnesses " << witnesses << ", have " << mdr->more()->witnessed << dendl;
for (set<mds_rank_t>::iterator p = witnesses.begin();