[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]

 



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?

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