]> Sergey Matveev's repositories - public-inbox.git/blobdiff - lib/PublicInbox/Syscall.pm
syscall: fallback to rename on renameat2 EINVAL
[public-inbox.git] / lib / PublicInbox / Syscall.pm
index bcfae2cbcae423ef70171c90f3e52be3932c00ad..2e3d9cb32c548a340835127f8e4c5f4757fa9fa0 100644 (file)
@@ -15,7 +15,7 @@ package PublicInbox::Syscall;
 use strict;
 use v5.10.1;
 use parent qw(Exporter);
-use POSIX qw(ENOENT EEXIST ENOSYS O_NONBLOCK);
+use POSIX qw(ENOENT EEXIST ENOSYS EINVAL O_NONBLOCK);
 use Config;
 
 # $VERSION = '0.25'; # Sys::Syscall version
@@ -324,7 +324,7 @@ sub rename_noreplace ($$) {
                my $ret = syscall($SYS_renameat2, -100, $old, -100, $new, 1);
                if ($ret == 0) {
                        1; # like rename() perlop
-               } elsif ($! == ENOSYS) {
+               } elsif ($! == ENOSYS || $! == EINVAL) {
                        undef $SYS_renameat2;
                        _rename_noreplace_racy($old, $new);
                } else {