From 6f06cf80a7ff7407af40f46a0aefb4b88f926390 Mon Sep 17 00:00:00 2001 From: "Yan, Zheng" Date: Wed, 18 Jan 2017 16:23:49 +0800 Subject: [PATCH] mds: fix incorrect assertion in Server::_dir_is_nonempty() when filelock is in XLOCKDONE state. client of xlocker can rdlock the filelock. In that case, only client of xlocker can read the lock. Fixes: http://tracker.ceph.com/issues/18578 Signed-off-by: Yan, Zheng (cherry picked from commit fe4ab52b30079a785be053a9fd0197d6990737fe) --- src/mds/Server.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/mds/Server.cc b/src/mds/Server.cc index 2f29757b467..f5e88717ece 100644 --- a/src/mds/Server.cc +++ b/src/mds/Server.cc @@ -6054,7 +6054,7 @@ bool Server::_dir_is_nonempty(MDRequestRef& mdr, CInode *in) { dout(10) << "dir_is_nonempty " << *in << dendl; assert(in->is_auth()); - assert(in->filelock.can_read(-1)); + assert(in->filelock.can_read(mdr->get_client())); frag_info_t dirstat; version_t dirstat_version = in->get_projected_inode()->dirstat.version; -- 2.47.3