On 02/03/19 20:03, Pádraig Brady wrote: > On 23/12/18 12:30, Martin Bukatovic wrote: >> Dear coreutils list, >> >> I'm interested in seeing btime (birth time) in stat output on GNU Linux >> distributions. Since statx syscall is available since Linux 4.11 [1] and >> glibc wrapper is available since 2.28 [2], now it's finally possible to >> use statx in coreutils tools to display btime. >> >> I checked the source code of stat and related parts in gnulib >> (stat-time.h) briefly and it seems to me that the current support for >> reporting birth time of a file works on BSD systems and Solaris only. >> To add support for reading btime with Linux, it seems that gnulib >> functions needs to be generalized to use statx when compiled on recent >> Linux kernel. Is anybody already working on this? >> >> In the meantime, I tried to quickly hack the stat code to add support >> for reading btime via statx in a similar way how btime is read on >> Solaris via getattrat (patch attached). This way, I was able to play >> with this feature quickly: >> >> ``` >> $ touch ~/tmp/testfile >> $ ./stat ~/tmp/testfile >> File: /home/martin/tmp/testfile >> Size: 0 Blocks: 0 IO Block: 4096 regular empty >> file >> Device: fd07h/64775d Inode: 7388546 Links: 1 >> Access: (0664/-rw-rw-r--) Uid: ( 1000/ martin) Gid: ( 1000/ martin) >> Access: 2018-12-23 21:18:27.717535190 +0100 >> Modify: 2018-12-23 21:18:27.717535190 +0100 >> Change: 2018-12-23 21:18:27.717535190 +0100 >> Birth: 2018-12-23 21:18:27.717535190 +0100 >> $ touch ~/tmp/testfile >> $ ./stat ~/tmp/testfile >> File: /home/martin/tmp/testfile >> Size: 0 Blocks: 0 IO Block: 4096 regular empty >> file >> Device: fd07h/64775d Inode: 7388546 Links: 1 >> Access: (0664/-rw-rw-r--) Uid: ( 1000/ martin) Gid: ( 1000/ martin) >> Access: 2018-12-23 21:18:34.822543416 +0100 >> Modify: 2018-12-23 21:18:34.822543416 +0100 >> Change: 2018-12-23 21:18:34.822543416 +0100 >> Birth: 2018-12-23 21:18:27.717535190 +0100 >> ``` >> >> But as I said, this is rather quick hack, I don't expect you to want >> to merge this. >> >> [1] >> https://kernelnewbies.org/Linux_4.11#statx.282.29.2C_a_modern_stat.282.29_alternative >> [2] https://www.sourceware.org/ml/libc-alpha/2018-08/msg00003.html >> > > Thanks for the patch and your patience. > I'm going to add the attached in the upcoming release. > I've adjusted slightly to handle symlinks, > and to test (st_mask & STATX_BTIME) on output. > > Ideally we would only call statx() rather than stat() as well, > though for now the performance implications of that aren't > worth complicating things. > > I've not actually tested the attached yet, > so it would be great if you could also.
I tested on kernel 5.0 with glibc 2.29 and it worked well. ext4 was giving BTIME, while proc and tmpfs was not. I'll push this now. thanks again, Pádraig