On Mon, Feb 29, 2016 at 4:13 PM, Zhi Zhang <zhang.david2011@xxxxxxxxx> wrote: > Hi cepher, > > Steps to reproduce this issue: > 1. reduce mds_cache_size to 200 for quick verification > 2. mount sub directory as root_directory, e.g, ceph-fuse -r /zhi_test > /mnt/cephfs > 3. create a new sub directory under /mnt/cephfs, e.g, /mnt/cephfs/sub_dir > 4. write more than 200 files into /mnt/cephfs/sub_dir/ directory > 5. client should start to trim_caps, but caps are not released. > > ceph version: 0.94.1 with some backports > fuse version: both 2.8.3 or 2.9.2 > > By further looking at the codes, ceph-fuse wants fuse to invalidate > some dentries by calling Client::_async_dentry_invalidate, which will > call dentry_invalidate_cb in fuse_ll.cc and fuse's API > fuse_lowlevel_notify_delete. > > Within these calls, the parent's inode (dirino) is our mount point's > inode (zhi_test), NOT the original default root inode ("/"), the child > inode may be a fake inode or sub directory's inode (sub_dir). > > However, fuse's API fuse_lowlevel_notify_delete returns -2, so no > ll_forget will be called on those files under sub_dir and those caps > are not released. MDS will report failing to respond to cache > pressure. > > We have changed the parent's inode to the original default root inode > ("/") in Client::_async_dentry_invalidate, but no changes on child > inode. After this, fuse can invalidate child dentry (sub_dir) > successfully and ll_forget will be called on those files under > sub_dir. > > I didn't find much information from the fuse's doc > https://fossies.org/dox/fuse-2.9.5/fuse__lowlevel_8h.html#a94893b3eb83fe2a218e80e43089670a1. > But it looks like fuse looking for the child from the head of the > tree, can't from an intermediate node? otherwise is it a bug from ceph > side? Using fuse_lowlevel_notify_delete() to invalidate dentry no longer works for 3.18+ kernel. See http://tracker.ceph.com/issues/9997 for detail Regards Yan, Zheng > Thanks. > > Regards, > Zhi Zhang (David) > Contact: zhang.david2011@xxxxxxxxx > zhangz.david@xxxxxxxxxxx -- To unsubscribe from this list: send the line "unsubscribe ceph-devel" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html