On Wed, Jul 18, 2018 at 10:15 PM, Joseph Myers joseph@codesourcery.com wrote:
On Tue, 17 Jul 2018, Arnd Bergmann wrote:
That would definitely help. See below for the stat implementation I did in my musl libc prototype based on statx(). It passes the LTP syscall tests, but that doesn't mean all the corner cases are correct.
Well, you definitely need explicit timestamp conversions on the result of statx to be usable in struct stat when userspace "long" is 64-bit, for BE because otherwise the integer nanoseconds will be in the wrong place for struct timespec, and for LE if the "__reserved is held in case we need a yet finer resolution." might start being returned as nonzero (for integer attoseconds, I suppose) in future.
Right. The musl implementation I sent did that by simply copying each field we care about from the statx structure into the stat structure individually. This is the more or less the same thing that the kernel does to implement stat() as well.
Arnd