ext4 - getting at birth time (file create time) and getting/setting nanosecond time stamps and utime

Andreas Dilger adilger at Sun.COM
Mon Oct 19 12:55:29 MDT 2009


On 19-Oct-09, at 11:17, Steve French wrote:
> A new version of the format for Samba server related file system
> extended attributes is expected in the next version of Samba so the
> topic of create time and nanosecond timestamps for Linux has come up
> again.  Since some file systems don't support storing create time
> (birth time), and none support updating create time, or for that
> matter for storing any nanosecond timestamps at all (a millisecond
> seems like a much longer time today than when the stat structure was
> defined), and dos attributes, Samba server stores these in extended
> attributes, which is awkward on those file systems which store
> (different) versions of these on disk.

I had proposed in the past that these file attributes be exposed to
userspace as virtual xattrs, e.g. user.cr_time returning a struct
timespec, but the data is stored internal to the filesystem in whatever
format is most efficient for it.  We only strictly need user.crtime
for this, but I wouldn't object to exporting other inode attributes in
this way (e.g. user.mtime, user.atime, etc).

I believe that nanosecond timestamps ARE supported with newer  
filesystems
using stat().  There is the utimensat() system call, which takes a  
timespec
parameter, so it looks to be suitable for setting nanosecond timestamps
from userspace.  I don't know if glibc() supports this, but I do see it
in the kernel.

As for _updating_ create time, isn't that sort of defeating the purpose
of create time?

Cheers, Andreas
--
Andreas Dilger
Sr. Staff Engineer, Lustre Group
Sun Microsystems of Canada, Inc.



More information about the samba-technical mailing list