From 73854bf47bbf7c9569b4846d2e11d5cbf513bdcf Mon Sep 17 00:00:00 2001 From: Ryan Ernst Date: Wed, 10 Jul 2024 11:35:20 -0700 Subject: [PATCH] try not passing mode --- .../nativeaccess/jna/JnaPosixCLibrary.java | 5 +++++ .../elasticsearch/nativeaccess/PosixNativeAccess.java | 2 +- .../elasticsearch/nativeaccess/lib/PosixCLibrary.java | 2 ++ .../nativeaccess/jdk/JdkPosixCLibrary.java | 10 ++++++++++ 4 files changed, 18 insertions(+), 1 deletion(-) diff --git a/libs/native/jna/src/main/java/org/elasticsearch/nativeaccess/jna/JnaPosixCLibrary.java b/libs/native/jna/src/main/java/org/elasticsearch/nativeaccess/jna/JnaPosixCLibrary.java index 47821196515db..401c13e593c87 100644 --- a/libs/native/jna/src/main/java/org/elasticsearch/nativeaccess/jna/JnaPosixCLibrary.java +++ b/libs/native/jna/src/main/java/org/elasticsearch/nativeaccess/jna/JnaPosixCLibrary.java @@ -204,6 +204,11 @@ public int ftruncate(int fd, long length) { return functions.ftruncate(fd, new NativeLong(length)); } + @Override + public int open(String pathname, int flags) { + return functions.open(pathname, flags); + } + @Override public int open(String pathname, int flags, int mode) { return functions.open(pathname, flags, mode); diff --git a/libs/native/src/main/java/org/elasticsearch/nativeaccess/PosixNativeAccess.java b/libs/native/src/main/java/org/elasticsearch/nativeaccess/PosixNativeAccess.java index f3f0b4a71bbb6..2ce09e567c284 100644 --- a/libs/native/src/main/java/org/elasticsearch/nativeaccess/PosixNativeAccess.java +++ b/libs/native/src/main/java/org/elasticsearch/nativeaccess/PosixNativeAccess.java @@ -131,7 +131,7 @@ public OptionalLong allocatedSizeInBytes(Path path) { assert Files.isRegularFile(path) : path; var stats = libc.newStat64(constants.statStructSize(), constants.statStructSizeOffset(), constants.statStructBlocksOffset()); - int fd = libc.open(path.toAbsolutePath().toString(), O_RDONLY, 0); + int fd = libc.open(path.toAbsolutePath().toString(), O_RDONLY); if (fd == -1) { logger.warn("Could not open file [" + path + "] to get allocated size: " + libc.strerror(libc.errno())); return OptionalLong.empty(); diff --git a/libs/native/src/main/java/org/elasticsearch/nativeaccess/lib/PosixCLibrary.java b/libs/native/src/main/java/org/elasticsearch/nativeaccess/lib/PosixCLibrary.java index c0773561cdde2..0e7d07d0ad623 100644 --- a/libs/native/src/main/java/org/elasticsearch/nativeaccess/lib/PosixCLibrary.java +++ b/libs/native/src/main/java/org/elasticsearch/nativeaccess/lib/PosixCLibrary.java @@ -66,6 +66,8 @@ interface Stat64 { int open(String pathname, int flags, int mode); + int open(String pathname, int flags); + int close(int fd); int fstat64(int fd, Stat64 stats); diff --git a/libs/native/src/main21/java/org/elasticsearch/nativeaccess/jdk/JdkPosixCLibrary.java b/libs/native/src/main21/java/org/elasticsearch/nativeaccess/jdk/JdkPosixCLibrary.java index 45a75f98853bc..6b719b25fb704 100644 --- a/libs/native/src/main21/java/org/elasticsearch/nativeaccess/jdk/JdkPosixCLibrary.java +++ b/libs/native/src/main21/java/org/elasticsearch/nativeaccess/jdk/JdkPosixCLibrary.java @@ -166,6 +166,16 @@ public int ftruncate(int fd, long length) { } } + @Override + public int open(String pathname, int flags) { + try (Arena arena = Arena.ofConfined()) { + MemorySegment nativePathname = MemorySegmentUtil.allocateString(arena, pathname); + return (int) open$mh.invokeExact(errnoState, nativePathname, flags); + } catch (Throwable t) { + throw new AssertionError(t); + } + } + @Override public int open(String pathname, int flags, int mode) { try (Arena arena = Arena.ofConfined()) {