Retry opening without the O_NOATIME flag (#167)
Change looks good, much appreciated! :) Merged.
This commit is contained in:
parent
441a0d69ed
commit
29b45cf218
|
|
@ -125,11 +125,19 @@ int pfile_open(const char *path, int access, int flags) {
|
||||||
flags |= O_NOATIME;
|
flags |= O_NOATIME;
|
||||||
#endif
|
#endif
|
||||||
fd = open(path, access | flags, PSYNC_DEFAULT_POSIX_FILE_MODE);
|
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");
|
pdbg_logf(D_NOTICE, "got EINTR while opening file");
|
||||||
fd = open(path, access | flags, PSYNC_DEFAULT_POSIX_FILE_MODE);
|
fd = open(path, access | flags, PSYNC_DEFAULT_POSIX_FILE_MODE);
|
||||||
if (fd != -1)
|
if (-1 != fd)
|
||||||
return fd;
|
return fd;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue