futimens and utimensat vs birthtime

Jilles Tjoelker jilles at stack.nl
Sun Aug 16 21:46:20 UTC 2015


On Sun, Aug 16, 2015 at 10:26:21PM +0800, Julian Elischer wrote:
> On 8/15/15 1:39 AM, John Baldwin wrote:
> > On Friday, August 14, 2015 10:46:10 PM Julian Elischer wrote:
> >> I would like to implement this call. but would like input as to it's
> >> nature.
> >> The code inside the system would already appear to support handling
> >> three elements, though it needs some scrutiny,
> >> so all that is needed is a system call with the ability to set the
> >> birthtime directly.

> >> Whether it should take the form of the existing calls but expecting
> >> three items is up for discussion.
> >> Maybe teh addition of a flags argument to specify which items are
> >> present and which to set.

> >> ideas?

> > I believe these should be new calls.  Only utimensat() provides a flag
> > argument, but it is reserved for AT_* flags.

Using AT_* flags for things unrelated to pathnames is not without
precedent: AT_REMOVEDIR for unlinkat() and AT_EACCESS for faccessat().
This isn't suitable for a large number of flags, though.

> I wasn't suggesting we keep the old ones and silently make them take 3 
> args :-)
> I was thining of suplementing them wth new syscalls and the obvious 
> names are those you suggested.
> however I do wonder if there will ever be a need for a 4th...

This could be indicated by yet another flag.

I'm a bit disappointed that setting birthtimes apparently wasn't needed
when I added futimens and utimensat. However, they are not part of any
release yet, so it may be possible to remove them at some point.

-- 
Jilles Tjoelker


More information about the freebsd-fs mailing list