Follow-up Comment #3, bug #33724 (project findutils):
[CC-ing gnulib, in the hope they see the attachment as well.]
On Sun 01 Nov 2015 11:19:53 PM CET, James Youngman wrote:
> It looks like the FTS_NOATIME flag does what's needed.
Not quite: openat() returns with EPERM if:
$ man openat | grep EPERM.*NOATIME
EPERM The O_NOATIME flag was specified, but the effective user ID of
the caller \
did not match the owner of the file and the caller was not
privileged.
Indeed, when quickly adding FTS_NOATIME to ftsoptions in ftsfind.c for
testing,
then strace in a directory not owned by the calling (non-root) user shows:
openat(AT_FDCWD, ".",
O_RDONLY|O_NOCTTY|O_NONBLOCK|O_NOFOLLOW|O_NOATIME|O_CLOEXEC|O_DIRECTORY) = -1
EPERM (Operation not permitted)
and find issues an error diagnostic.
It seems that O_NOATIME cannot be used generally on directories.
Conversely it seems that the atime of such a directory is changed
without a problem.
The attached path makes FTS retry without O_NOATIME in such a case
which seems to be the best choice we currently have.
Once this is working in FTS, we need to decide how to enable/disable
the NOATIME behaviour in find(1), as POSIX requires this per default.
WDYT?
Have a nice day,
Berny
(file #45115)
_______________________________________________________
Additional Item Attachment:
File name: 0001-fts-opendirat-fall-back-to-O_NOATIME-in-case-of-EPER.patch
Size:2 KB
_______________________________________________________
Reply to this item at:
<https://savannah.gnu.org/bugs/?33724>
_______________________________________________
Message sent via Savannah
https://savannah.gnu.org/