]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
mds: fix incorrect assertion in Server::_dir_is_nonempty() 13459/head
authorYan, Zheng <zyan@redhat.com>
Wed, 18 Jan 2017 08:23:49 +0000 (16:23 +0800)
committerYan, Zheng <zyan@redhat.com>
Thu, 16 Feb 2017 14:39:25 +0000 (22:39 +0800)
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 <zyan@redhat.com>
(cherry picked from commit fe4ab52b30079a785be053a9fd0197d6990737fe)

src/mds/Server.cc

index 555a5c472687be2737f8225da666e77a53bfe42a..6160bce430f2cc9e28ba8fbd8553133471424dda 100644 (file)
@@ -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;