Re: [ceph-fuse] fuse fails to invalidate dentry when ceph-fuse mounts sub directory as root_directory

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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



[Index of Archives]     [CEPH Users]     [Ceph Large]     [Information on CEPH]     [Linux BTRFS]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]
  Powered by Linux