write access to various times
Ronald F. Guilmette
rfg at tristatelogic.com
Sat Nov 5 07:01:46 UTC 2011
It would appear that in 8.2-RELEASE, at least, each "struct stat" contains
four fields, each of type "timespec", and having the following names:
I already know that if I want to modify either (or both) of the first
two fields listed above, I should call utimes(2). But what do I do if I need
to modify the values of either or both of the other two fields? (I may want
to do this, e.g. if I am trying to restore all of the struct stat fields
from a backed-up representation of some original filesystem entry.)
The current man page for utimes(2) says (among other things):
If times is non-NULL, it is assumed to point to an array of two timeval
structures. The access time is set to the value of the first element,
and the modification time is set to the value of the second element. For
file systems that support file birth (creation) times (such as UFS2), the
birth time will be set to the value of the second element if the second
element is older than the currently set birth time. To set both a birth
time and a modification time, two calls are required; the first to set
the birth time and the second to set the (presumably newer) modification
time. Ideally a new system call will be added that allows the setting of
all three times at once...
Is there any ETA for this postulated new system call?
It would be most helpful to have that.
Also, of course, although the method described above for setting the value of
the st_birthtimespec field is rather clumsey and inefficient, at least there
_is_ a way to set that field. I am concerned however because I personally
still know of no way whatsoever to set the value of the st_ctimespec field.
Is there any way to do that?
It would be most helpful to have that too.
More information about the freebsd-fs