On Tue, May 25, 2021 at 8:57 AM David Howells <dhowells@xxxxxxxxxx> wrote: > > Fix rename of one directory over another such that the nlink on the deleted > directory is cleared to 0 rather than being decremented to 1. > > This was causing the generic/035 xfstest to fail. > > Fixes: e49c7b2f6de7 ("afs: Build an abstraction around an "operation" concept") > Signed-off-by: David Howells <dhowells@xxxxxxxxxx> > cc: linux-afs@xxxxxxxxxxxxxxxxxxx > --- > > fs/afs/dir.c | 4 +++- > 1 file changed, 3 insertions(+), 1 deletion(-) > > diff --git a/fs/afs/dir.c b/fs/afs/dir.c > index 9fbe5a5ec9bd..78719f2f567e 100644 > --- a/fs/afs/dir.c > +++ b/fs/afs/dir.c > @@ -1919,7 +1919,9 @@ static void afs_rename_edit_dir(struct afs_operation *op) > new_inode = d_inode(new_dentry); > if (new_inode) { > spin_lock(&new_inode->i_lock); > - if (new_inode->i_nlink > 0) > + if (S_ISDIR(new_inode->i_mode)) > + clear_nlink(new_inode); > + else if (new_inode->i_nlink > 0) > drop_nlink(new_inode); > spin_unlock(&new_inode->i_lock); > } Reviewed-by: Marc Dionne <marc.dionne@xxxxxxxxxxxx> Marc