On both ReFS and removable drives, the primary path in libGetXSpace.c, (which calls `GetDiskSpaceInformationW()` API function) fails because the API call fails. When that happens, the code throws an exception, causing the test to fail.
The key change in this patch is to switch to the fallback path (of calling `GetDiskFreeSpaceExW()` to estimate the disk space) when `GetDiskSpaceInformationW()` fails, making the test pass on machines that have such non-standard volumes. This has the ancillary benefit of handling _all_ kinds of removable drives, so this patch removes the special case for handling CDROM drives (whose code shelled out to "df", which doesn't exist outside of Cygwin and MSys/MinGW). This patch also fixes the return types and their handling for both `GetDiskSpaceInformationW()` and `GetDiskFreeSpaceExW()` to match the Windows API documentation. --------- - [x] I confirm that I make this contribution in accordance with the [OpenJDK Interim AI Policy](https://openjdk.org/legal/ai). ------------- Commit messages: - Handle ReFS and removable volumes without introducing special cases Changes: https://git.openjdk.org/jdk/pull/31682/files Webrev: https://webrevs.openjdk.org/?repo=jdk&pr=31682&range=00 Issue: https://bugs.openjdk.org/browse/JDK-8387309 Stats: 103 lines in 2 files changed: 12 ins; 82 del; 9 mod Patch: https://git.openjdk.org/jdk/pull/31682.diff Fetch: git fetch https://git.openjdk.org/jdk.git pull/31682/head:pull/31682 PR: https://git.openjdk.org/jdk/pull/31682
