Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

nautilus: cephfs: client: unlink dentry for inode with llref=0 #29478

Merged
merged 1 commit into from Aug 19, 2019

Conversation

@xiaoxichen
Copy link
Contributor

commented Aug 5, 2019

Client: unlink dentry for inode with llref=0
when client get notification from MDS that a file has been deleted(via
getting CEPH_CAP_LINK_SHARED cap for inode with nlink = 0), if the client
hasnt touch the inode in the past, the ll_ref will be zero.

In previous code, we only call Client::unlink when ll_ref > 0, which is wrong
and will leave the dn in cache, keeping the caps and resulting the inode stays
in stray till the dn cache is dropped by kernel.

Under certain workload(write intensive and rotate intensive), this issue can cause
stray stacking to 100k+ and causeing huge space "leaking".

Fixes: http://tracker.ceph.com/issues/40960

Signed-off-by: Xiaoxi CHEN <xiaoxchen@ebay.com>
(cherry picked from commit c9ff6ab)

@xiaoxichen xiaoxichen added this to the nautilus milestone Aug 5, 2019

@xiaoxichen xiaoxichen self-assigned this Aug 5, 2019

@batrick batrick added the cephfs label Aug 5, 2019

@smithfarm smithfarm changed the title Nautilus: Client: unlink dentry for inode with llref=0 nautilus: cephfs: client: unlink dentry for inode with llref=0 Aug 15, 2019

@smithfarm smithfarm requested a review from batrick Aug 15, 2019

@yuriw

This comment has been minimized.

Copy link
Contributor

commented Aug 15, 2019

@yuriw yuriw merged commit e4b759c into ceph:nautilus Aug 19, 2019

4 checks passed

Docs: build check OK - docs built
Details
Signed-off-by all commits in this PR are signed
Details
Unmodified Submodules submodules for project are unmodified
Details
make check make check succeeded
Details
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
5 participants
You can’t perform that action at this time.