<div dir="ltr"><div dir="ltr">On Wed, 12 Mar 2025 at 07:43, Theodore Ts'o <<a href="mailto:tytso@mit.edu">tytso@mit.edu</a>> wrote:</div><div class="gmail_quote gmail_quote_container"><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">On Tue, Mar 11, 2025 at 09:38:39PM -0600, Warner Losh wrote:<br>
> So I think I have to disagree about what it means in v7, comments<br>
> notwithstanding.<br>
> <br>
> iupdat() has:<br>
> if(ip->i_flag&ICHG)<br>
> dp->di_ctime = time;<br>
> <br>
> ICHG is set in unlink(), chmod(), chown() and utime() (maybe a few others,<br>
> this was a quick peek).<br>
> <br>
> So even in v7, ctime means any changes to metadata / inode data. At least<br>
> for some definition of "any".<br>
> <br>
> Btw, it looks like this was named IUPD in v6 and did similar things. In v6<br>
> it is updated in iput when IUPD is set. But it looks like ctime and mtime<br>
> are folded together. So v7 is the first edition that has ctime and the code<br>
> implements any change to metadata from my reading.<br>
<br>
Yeah, Al Viro (the chief Pengiun VFS maintainer) had made a similar<br>
observation to yours. After I pointed out the Ritchie and Thompson<br>
Unix paper, Al also pointed out that comment could be found in the<br>
filsys.5 man page[1] dating from January 1979, also says "creation<br>
time" although that is an excerpt from the ino.h header file, the<br>
comment of which, as I said, persisted into 2BSD and 3BSD.<br>
<br>
[1] <a href="https://www.tuhs.org/cgi-bin/utree.pl?file=2.9BSD/usr/man/man5/filsys.5" rel="noreferrer" target="_blank">https://www.tuhs.org/cgi-bin/utree.pl?file=2.9BSD/usr/man/man5/filsys.5</a><br>
<br>
So this is why we were wondering whether if there was sometime when it<br>
actually *was* creation time, perhaps in between the v6 and v7<br>
releases, or whether it was always just a comment brain fart, which<br>
also managed to make it into a published paper and the filsys.5 man<br>
page, with no one caring enough to fix it until several years went by,<br>
and perhaps only at Berkeley. (I'm curious when if ever it got fixed<br>
in the AT&T sources, but I haven't gone and checked those sources<br>
yet.)</blockquote><div><br></div><div>The comment in the source had not been changed as of SVR4; however between SVR1 and SVR2 the manpage changed. For example, from looking at the sources on the CSRG DVD:</div><div><br></div><div>S5_1/usr/man/u_man/man4/inode.4: time_t di_ctime; /\(** time created \(**/<br>S5_2.0/usr/man/p_man/man4/inode.4: time_t di_ctime; /\(** time of last file status change \(**/</div><div><br></div><div>and then again in SVR4:</div><div>S5_4.0/doc/MANPAGES/4/gen/inode_s5: time_t di_ctime; /\(** time status last changed \(**/<br></div><div><br></div><div>All of the later Research versions (v[8-10]) have</div><div>time_t di_ctime; /* time created */</div><div>in that struct.</div><div><br></div><div>-Henry</div><div><br></div></div></div>