[xfstests PATCH] renameat2 syscall: turn EEXIST into ENOTEMPTY

Miklos Szeredi miklos at szeredi.hu
Mon Apr 14 05:49:53 CDT 2014


From: Miklos Szeredi <mszeredi at suse.cz>

XFS is returning EEXIST rather than ENOTEMPTY for several of
these rename tests. The rename man page says this about the errors:

       ENOTEMPTY or EEXIST
              newpath is a nonempty directory, that is, contains
              entries other than "." and "..".

Which implies that both errors are valid and so the test should pass
in either case.

Signed-off-by: Miklos Szeredi <mszeredi at suse.cz>
---
 src/renameat2.c |    9 +++++++++
 1 file changed, 9 insertions(+)

--- a/src/renameat2.c
+++ b/src/renameat2.c
@@ -88,6 +88,15 @@ int main(int argc, char *argv[])
 			else
 				return 0;
 		}
+		/*
+		 * Turn EEXIST into ENOTEMPTY.  E.g. XFS uses EEXIST, and that
+		 * is also accepted by the standards.
+		 *
+		 * This applies only to plain rename (flags == 0).
+		 */
+		if (!flags && errno == EEXIST)
+			errno = ENOTEMPTY;
+
 		perror("");
 		return 1;
 	}



More information about the xfs mailing list