]> git.apps.os.sepia.ceph.com Git - xfstests-dev.git/commitdiff
renameat2 syscall: turn EEXIST into ENOTEMPTY
authorMiklos Szeredi <mszeredi@suse.cz>
Wed, 16 Apr 2014 00:19:02 +0000 (10:19 +1000)
committerDave Chinner <david@fromorbit.com>
Wed, 16 Apr 2014 00:19:02 +0000 (10:19 +1000)
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@suse.cz>
Reviewed-by: Dave Chinner <dchinner@redhat.com>
Signed-off-by: Dave Chinner <david@fromorbit.com>
src/renameat2.c

index 2980f14fa54aca67ead762d245e5f3297f07bb72..5ac093628d7178ab0f1bdcd7c09872d2f51b9ee5 100644 (file)
@@ -92,6 +92,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;
        }