RFR: 8316304: (fs) Add support for BasicFileAttributes.creationTime() for Linux [v8]

Severin Gehwolf sgehwolf at openjdk.org
Tue Oct 3 17:41:24 UTC 2023


> Please review this nio change which adds `BasicFileAttributes.creationTime()` support for Linux by means of the `statx` Linux specific system call. The patch does a dynamic lookup of the function and if it is available, uses it to set the support birth time capability in `UnixNativeDispatcher`. When `statx` is not available, it won't use it and fall back to the old behaviour on such systems. It should, however, compile fine on Linux systems not supporting the `statx` system call.
> 
> Testing:
> - [x] GHA (MacOS X failure seems unrelated)
> - [x] `java.nio` tests.
> - [x] Manual builds and tests on older glibc versions (2.17 => fallback, 2.28+ => works). Compiles fine and falls back to the not supported case as it was before this patch.
> 
> Thoughts?

Severin Gehwolf has updated the pull request with a new target base due to a merge or a rebase. The incremental webrev excludes the unrelated changes brought in by the merge/rebase. The pull request contains 12 additional commits since the last revision:

 - Link libCreationTimeHelper with -ldl
 - Merge branch 'master' into JDK-8316304-statx-create-time-new
 - Cleanup UnixNativeDispatcher.c
 - Refactor test so as to not use reflection
 - Fix indents
 - Check correct fieldID
 - Add copyright
 - Add support for nano seconds for btime on Linux
 - Fix style
 - Wrap copy_statx_attributes with ifdef __linux__
 - ... and 2 more: https://git.openjdk.org/jdk/compare/590d707b...83347ec1

-------------

Changes:
  - all: https://git.openjdk.org/jdk/pull/15792/files
  - new: https://git.openjdk.org/jdk/pull/15792/files/3b30596d..83347ec1

Webrevs:
 - full: https://webrevs.openjdk.org/?repo=jdk&pr=15792&range=07
 - incr: https://webrevs.openjdk.org/?repo=jdk&pr=15792&range=06-07

  Stats: 80501 lines in 2327 files changed: 31105 ins; 14997 del; 34399 mod
  Patch: https://git.openjdk.org/jdk/pull/15792.diff
  Fetch: git fetch https://git.openjdk.org/jdk.git pull/15792/head:pull/15792

PR: https://git.openjdk.org/jdk/pull/15792


More information about the nio-dev mailing list