Andrew Dunstan <and...@dunslane.net> writes: > On 2023-04-12 We 01:48, Thomas Munro wrote: >> On Wed, Apr 12, 2023 at 3:04 PM Thomas Munro<thomas.mu...@gmail.com> wrote: >>> On Wed, Apr 12, 2023 at 2:56 PM Christoph Berg<m...@debian.org> wrote: >>>> I'm hitting a panic in t_004_io_direct. The build is running on >>>> overlayfs on tmpfs/ext4 (upper/lower) which is probably a weird >>>> combination but has worked well for building everything over the last >>>> decade. On Debian unstable: >>>> >>>> PANIC: could not open file "pg_wal/000000010000000000000001": Invalid >>>> argument >>> ... I have a new idea: perhaps it is possible to try >>> to open a file with O_DIRECT from perl, and if it fails like that, >>> skip the test. Looking into that now. >> I think I have that working OK. Any Perl hackers want to comment on >> my use of IO::File (copied from examples on the internet that showed >> how to use O_DIRECT)? I am not much of a perl hacker but according to >> my package manager, IO/File.pm came with perl itself. And the Fcntl >> eval trick that I copied from File::stat, and the perl-critic >> suppression that requires? > > > I think you can probably replace a lot of the magic here by simply saying > > > if (Fcntl->can("O_DIRECT")) ...
Fcntl->can() is true for all constants that Fcntl knows about, whether or not they are defined for your OS. `defined &O_DIRECT` is the simplest check, see my other reply to Thomas. > cheers > > > andrew - ilmari