> > Which leaves us with an API to set the 'time backup' attribute, which > > is a "mutable creation time" [*]. > > cifs supports setting it via setxattr and I guess ntfs3 could use an > > API to set it as well. > > > > One natural interface that comes to mind is: > > > > struct timespec times[3] = {/* atime, mtime, crtime */} > > utimensat(dirfd, path, times, AT_UTIMES_ARCHIVE); > > > > and add ia_crtime with ATTR_CRTIME to struct iattr. > > > > Trond, > > > > Do you agree to rework your patches in this direction? > > Perhaps as the first stage, just use statx() and ioctls to set the > > attributes to give enough time for bikeshedding the set APIs > > and follow up with the generic set API patches later? > > > > Thanks, > > Amir. > > > > [*] I find it convenient to use the statx() terminology of "btime" > > to refer to the immutable birth time provided by some filesystems > > and to use "crtime" for the mutable creation time for archiving, > > so that at some point, some filesystems may provide both of > > these times independently. > > I disagree because XFS and ext4 both use 'crtime' for the immutable > birth time, not a mutable creation time for archiving. I think we'd > need to be careful about wording here if there is interest in adding a > user-modifiable file creation time (as opposed to creation time for a > specific instance of an inode) to filesystems. > > Once a year or so we get a question/complaint from a user about how they > can't change the file creation time and we have to explain to them > what's really going on. > To add one more terminology to the mix - when Samba needed to cope with these two terminologies they came up with itime for "instantiation time" (one may also consider it "immutable time"). Another issue besides wording, is that statx btime can be either of those things depending on the filesystem, so if we ever add mutable btime to ext4/xfs, what's statx btime going to return? One more question to ask, if we were to add mutable btime to ext4/xfs should it be an additional attribute at all or should we allow with explicit filesystem flag and maybe also mount option to modify the existing crtime inode field? if we can accept that some users are willing to trade the immutable crtime with mutable btime, then we can settle with a flag indicating "warranty seal removed" from the existing crtime field. At least one advantage of this approach is that it simplifies terminology. Thanks, Amir.