On Wed, 10 Sep 2025, Jeff Layton wrote: > On Wed, 2025-09-10 at 08:37 +0100, Al Viro wrote: > > > ... and see viro/vfs.git#work.persistency for the part of the queue that > > > had order already settled down (I'm reshuffling the tail at the moment; > > > hypfs commit is still in the leftovers pile - the whole thing used to > > > have a really messy topology, with most of the prep work that used to > > > be the cause of that topology already in mainline - e.g. rpc_pipefs > > > series, securityfs one, etc.) > > > > Speaking of which, nfsctl series contains the following and I'd like to > > make sure that behaviour being fixed there *is* just an accident... > > Could nfsd folks comment? > > > > [PATCH] nfsctl: don't bump st_nlink of directory when creating a symlink in it > > > > > > apparently blindly copied from mkdir... > > > > > > Signed-off-by: Al Viro <viro@xxxxxxxxxxxxxxxxxx> > > --- > > diff --git a/fs/nfsd/nfsctl.c b/fs/nfsd/nfsctl.c > > index bc6b776fc657..282b961d8788 100644 > > --- a/fs/nfsd/nfsctl.c > > +++ b/fs/nfsd/nfsctl.c > > @@ -1181,7 +1181,6 @@ static int __nfsd_symlink(struct inode *dir, struct dentry *dentry, > > inode->i_size = strlen(content); > > > > > > d_add(dentry, inode); > > - inc_nlink(dir); > > fsnotify_create(dir, dentry); > > return 0; > > } > > That is increasing the link count on the parent because it's adding a > dentry to "dir". The link count on a dir doesn't have much meaning, but > why do we need to remove it here, but keep the one in __nfsd_mkdir? The link count in an inode is the number of links *to* the inode. A symlink (or file etc) in a directory doesn't imply a link to that directory (they are links "from" the directory, but those aren't counted). A directory in a directory, on the other hand, does imply a link to the (parent) directory due to the ".." entry. In fact the link count on a directory should always be 2 plus the number of subdirectories (one for the name in the parent, one for "." in the directory itself, and one for ".." in each subdirectory). Some "find" style programs depend on that to a degree, though mostly as an optimisation. NeilBrown