On 10/19/20 9:52 AM, Gregory P. Smith wrote:
> 
> 
> On Mon, Oct 19, 2020 at 6:28 AM Ivan Pozdeev via Python-Dev
> <python-dev@python.org <mailto:python-dev@python.org>> wrote:
> 
> 
>     On 19.10.2020 14:47, Steve Dower wrote:
>     > On 19Oct2020 1242, Steve Dower wrote:
>     >> On 15Oct2020 2239, Rob Cliffe via Python-Dev wrote:
>     >>> TLDR: In os.scandir directory entries, atime is always a copy of
>     mtime rather than the actual access time.
>     >>
>     >> Correction - os.stat() updates the access time to _now_, while
>     os.scandir() returns the last access time without updating it.
>     >
>     > Let me correct myself first :)
>     >
>     > *Windows* has decided not to update file access time metadata *in
>     directory entries* on reads. os.stat() always[1] looks at the file
>     entry
>     > metadata, while os.scandir() always looks at the directory entry
>     metadata.
> 
>     Is this behavior documented somewhere?
> 
>     Such weirdness certaintly something that needs to be documented but
>     I really don't like describing such quirks that are out of our control
>     and may be subject to change in Python documentation. So we should
>     only consider doing so if there are no other options.
> 
> 
> I'm sure this is covered in MSDN.  Linking to that if it has it in a
> concise explanation would make sense from a note in our docs.
> 
> If I'm understanding Steve correctly this is due to Windows/NTFS storing
> the access time potentially redundantly in two different places. One
> within the directory entry itself and one with the file's own metadata. 
> Those of us with a traditional posix filesystem background may raise
> eyeballs at this duplication, seeing a directory as a place that merely
> maps names to inodes with the inode structure (equiv: file entry
> metadata) being the sole source of truth.  Which ones get updated when
> and by what actions is up to the OS.
> 
> So yes, just document the "quirk" as an intended OS behavior.  This is
> one reason scandir() can return additional information on windows vs
> what it can return on posix.  The entire point of scandir() is to return
> as much as possible from the directory without triggering reads of the
> inodes/file-entry-metadata. :)
> 
> -gps

depending on atimes isn't a consistently reliable mechanism anyway,
since filesystems on Linux et. al. are allowed to be mounted so as to
not independently update access times.

_______________________________________________
Python-Dev mailing list -- python-dev@python.org
To unsubscribe send an email to python-dev-le...@python.org
https://mail.python.org/mailman3/lists/python-dev.python.org/
Message archived at 
https://mail.python.org/archives/list/python-dev@python.org/message/QXNHYK6NDECISIOZVO4BCW2O6UXRZJGO/
Code of Conduct: http://python.org/psf/codeofconduct/

Reply via email to