afs: Fix EEXIST error returned from afs_rmdir() to be ENOTEMPTY

[ Upstream commit b49194da2aff2c879dec9c59ef8dec0f2b0809ef ]

AFS servers pass back a code indicating EEXIST when they're asked to remove
a directory that is not empty rather than ENOTEMPTY because not all the
systems that an AFS server can run on have the latter error available and
AFS preexisted the addition of that error in general.

Fix afs_rmdir() to translate EEXIST to ENOTEMPTY.

Fixes: 260a980317 ("[AFS]: Add "directory write" support.")
Signed-off-by: David Howells <dhowells@redhat.com>
Link: https://lore.kernel.org/r/20241216204124.3752367-13-dhowells@redhat.com
cc: Marc Dionne <marc.dionne@auristor.com>
cc: linux-afs@lists.infradead.org
Signed-off-by: Christian Brauner <brauner@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
This commit is contained in:
David Howells 2024-12-16 20:41:02 +00:00 committed by Greg Kroah-Hartman
parent 522ca38492
commit b5ff136c67

View File

@ -1457,7 +1457,12 @@ static int afs_rmdir(struct inode *dir, struct dentry *dentry)
op->file[1].vnode = vnode;
}
return afs_do_sync_operation(op);
ret = afs_do_sync_operation(op);
/* Not all systems that can host afs servers have ENOTEMPTY. */
if (ret == -EEXIST)
ret = -ENOTEMPTY;
return ret;
error:
return afs_put_operation(op);