From ebb2f73e48092c8d2ecf18c75ce70f1a88c9bb22 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/18708 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 555a5c472687b..6160bce430f2c 100644 --- a/src/mds/Server.cc +++ b/src/mds/Server.cc @@ -6010,7 +6010,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.39.5