Retry opening without the O_NOATIME flag (#167)

Change looks good, much appreciated! :) Merged.
This commit is contained in:
Chris82111 2026-02-27 08:40:38 +01:00 committed by GitHub
parent 441a0d69ed
commit 29b45cf218
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
1 changed files with 11 additions and 3 deletions

View File

@ -125,11 +125,19 @@ int pfile_open(const char *path, int access, int flags) {
flags |= O_NOATIME;
#endif
fd = open(path, access | flags, PSYNC_DEFAULT_POSIX_FILE_MODE);
if (unlikely(fd == -1)) {
while (errno == EINTR) {
#if defined(O_NOATIME)
if ((-1 == fd ) && (EPERM == errno)) {
flags &= ~O_NOATIME;
fd = open(path, access | flags, PSYNC_DEFAULT_POSIX_FILE_MODE);
}
#endif
if (unlikely(-1 == fd)) {
while (EINTR == errno) {
pdbg_logf(D_NOTICE, "got EINTR while opening file");
fd = open(path, access | flags, PSYNC_DEFAULT_POSIX_FILE_MODE);
if (fd != -1)
if (-1 != fd)
return fd;
}
}