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 <aaptel@xxxxxxxx> wrote: > > Shyam Prasad N <nspmangalore@xxxxxxxxx> writes: > > Going by the documentation of d_revalidate: > >> 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