Re: [PATCH v1] cifs: make nested cifs mount point dentries always valid to deal with signaled 'df'
From: Shyam Prasad N <hidden>
Date: 2021-02-01 16:53:41
Also in:
linux-fsdevel
I'm okay with returning valid for directory mount point. But the point that I'm trying to make here is that VFS reacts differently when d_validate returns an error VS when it just returns invalid: https://elixir.bootlin.com/linux/latest/source/fs/namei.c#L1409 Notice how it calls d_invalidate only when there's no error. And d_invalidate seems to have detach_mounts. It is likely that the umount happens there. I'm suggesting that we should return errors inside d_validate handlers, rather than just 0 or 1. Makes sense? Regards, Shyam On Mon, Feb 1, 2021 at 4:01 PM Aurélien Aptel [off-list ref] wrote:
Shyam Prasad N [off-list ref] writes:quoted
Going by the documentation of d_revalidate:quoted
This function should return a positive value if the dentry is still valid, and zero or a negative error code if it isn't.In case of error, can we try returning the rc itself (rather than 0), and see if VFS avoids a dentry put? Because theoretically, the call execution has failed, and the dentry is not found to be invalid.AFAIK mount points are pinned, you cannot rm or mv them so it seems we could make them always valid. I don't know if there are deeper and more subtle implications. The recent signal fixes are not fixing this issue. Cheers, -- Aurélien Aptel / SUSE Labs Samba Team GPG: 1839 CB5F 9F5B FB9B AA97 8C99 03C8 A49B 521B D5D3 SUSE Software Solutions Germany GmbH, Maxfeldstr. 5, 90409 Nürnberg, DE GF: Felix Imendörffer, Mary Higgins, Sri Rasiah HRB 247165 (AG München)
-- -Shyam