RFR : 8196578 : enhance errno_to_string function in os.cpp with some additional errno texts from AIX 7.1

David Holmes david.holmes at oracle.com
Fri Feb 2 08:57:41 UTC 2018


While I did not do an exhaustive check of the existing codes even the 
ones under

// The following enums are not defined on all platforms.

are at least defined by POSIX (even if just listed as "Reserved").

So I am still reluctant to introduce OS specific codes into a shared 
file. Plus there's the problem of different OS having different meanings 
for the same error code - suggesting per-OS specialization might be 
useful (but tricky to implement).

That said I have to re-question whether we should be maintaining this 
explicit string mapping table anyway? strerror() is not thread-safe but 
strerror_l() seems to be, or at worst we need buffer management with 
strerror_r(). I know this topic has arisen before ...

Cheers,
David

On 2/02/2018 6:40 PM, Thomas Stüfe wrote:
> On Fri, Feb 2, 2018 at 9:02 AM, Baesken, Matthias <matthias.baesken at sap.com>
> wrote:
> 
>>
>>     - I do not really like spamming a shared file with AIX specific errno
>>     codes.
>>
>>
>>
>> Hi, I wrote  “for a few errnos ***we find*** on AIX 7.1”   ,  not that
>> they are  AIX ***specific***.
>>
>> Checked the first few added ones :
>>
>>
>>
>> 1522     // some more errno numbers from AIX 7.1 (some are also supported
>> on Linux)
>>
>> 1523     #ifdef ENOTBLK
>>
>> 1524     DEFINE_ENTRY(ENOTBLK, "Block device required")
>>
>> 1525     #endif
>>
>> 1526     #ifdef ECHRNG
>>
>> 1527     DEFINE_ENTRY(ECHRNG, "Channel number out of range")
>>
>> 1528     #endif
>>
>> 1529     #ifdef ELNRNG
>>
>> 1530     DEFINE_ENTRY(ELNRNG, "Link number out of range")
>>
>> 1531     #endif
>>
>>
>>
>> According to
>>
>>
>>
>> http://www.ioplex.com/~miallen/errcmp.html
>>
>>
>>
>> ENOTBLK – found on AIX, Solaris, Linux, …
>>
>> ECHRNG   -  found on  AIX, Solaris, Linux
>>
>> ELNRNG   -  found on AIX, Solaris, Linux
>>
>>
>>
> 
> The argument can easily made in the other direction. Checking the last n
> errno codes I see:
> 
> AIX, MAC +    #ifdef EPROCLIM
> AIX only +    #ifdef ECORRUPT
> AIX only  +    #ifdef ESYSERROR
> AIX only +    DEFINE_ENTRY(ESOFT, "I/O completed, but needs relocation")
> AIX, MAC +    #ifdef ENOATTR
> AIX only +    DEFINE_ENTRY(ESAD, "Security authentication denied")
> AIX  only  +    #ifdef ENOTRUST
> ...
> 
> 
>> I would suggest to keep the multi-platform  errnos in os.cpp  just where
>> they are .
>>
>>
>>
> 
> I am still not convinced and like my original suggestion better. Lets wait
> for others to chime in and see what the consensus is.
> 
> Best Regards, Thomas
> 
> 
> 
> 
>>     - Can we move platform specific error codes to platform files? Eg by
>>     having a platform specific version pd_errno_to_string(),
>>     - which has a first shot at translating errno values, and only if that
>>     one returns no result reverting back to the shared version?
>>     -
>>
>>
>>
>> Can go through the list of added  errnos and check if there are really a
>> few in that exist only on AIX.
>>
>> If there are a significant number we might do what you suggest , but for
>> only a small number I wouldn’t do it.
>>
>>
>>
>>
>>
>>> Small nit:
>>
>>>
>>
>>> - DEFINE_ENTRY(ESTALE, "Reserved")
>>
>>> + DEFINE_ENTRY(ESTALE, "No filesystem / stale NFS file handle")
>>
>>>
>>
>>> I like the glibc text better, just "Stale file handle". NFS seems too
>> specific, can handles for other remote file systems not get stale?
>>
>>
>>
>> That’s fine with me, I can change this to what you suggest.
>>
>>
>>
>> Best regards, Matthias
>>
>>
>>
>>
>>
>> *From:* Thomas Stüfe [mailto:thomas.stuefe at gmail.com]
>> *Sent:* Donnerstag, 1. Februar 2018 18:38
>> *To:* Baesken, Matthias <matthias.baesken at sap.com>
>> *Cc:* hotspot-dev at openjdk.java.net; ppc-aix-port-dev at openjdk.java.net
>> *Subject:* Re: RFR : 8196578 : enhance errno_to_string function in os.cpp
>> with some additional errno texts from AIX 7.1
>>
>>
>>
>> Hi Matthias,
>>
>>
>>
>> This would probably better discussed in hotspot-runtime, no?
>>
>>
>>
>> The old error codes and their descriptions were Posix (
>> http://pubs.opengroup.org/onlinepubs/000095399/basedefs/errno.h.html). I
>> do not really like spamming a shared file with AIX specific errno codes.
>> Can we move platform specific error codes to platform files? Eg by having a
>> platform specific version pd_errno_to_string(), which has a first shot at
>> translating errno values, and only if that one returns no result reverting
>> back to the shared version?
>>
>>
>>
>> Small nit:
>>
>>
>>
>> - DEFINE_ENTRY(ESTALE, "Reserved")
>>
>> + DEFINE_ENTRY(ESTALE, "No filesystem / stale NFS file handle")
>>
>>
>>
>> I like the glibc text better, just "Stale file handle". NFS seems too
>> specific, can handles for other remote file systems not get stale?
>>
>> Kind Regards, Thomas
>>
>>
>>
>> On Thu, Feb 1, 2018 at 5:16 PM, Baesken, Matthias <
>> matthias.baesken at sap.com> wrote:
>>
>> Hello , I enhanced  the  errno - to -  error-text mappings   in os.cpp
>>   for a few errnos we find on AIX 7.1 .
>> Some of these added errnos are found as well on  Linux (e.g. SLES 11 / 12
>> ).
>>
>> Could you please check and review ?
>>
>> ( btw. there is good cross platform  info about the errnos at
>> http://www.ioplex.com/~miallen/errcmp.html     )
>>
>> Bug :
>>
>> https://bugs.openjdk.java.net/browse/JDK-8196578
>>
>> Webrev :
>>
>> http://cr.openjdk.java.net/~mbaesken/webrevs/8196578/
>>
>>
>>
>> Best regards, Matthias
>>
>>
>>


More information about the ppc-aix-port-dev mailing list