From: David Brown <git@davidb.org>
To: Martin Langhoff <martin.langhoff@gmail.com>
Cc: Mike Hommey <mh@glandium.org>,
Wayne Davison <wayne@opencoder.net>, Andreas Ericsson <ae@op5.se>,
git@vger.kernel.org
Subject: Re: preserving mtime
Date: Sun, 18 Nov 2007 13:44:04 -0800 [thread overview]
Message-ID: <20071118214403.GA7182@old.davidb.org> (raw)
In-Reply-To: <46a038f90711181236o1acd00d4id9c5aeffd3065b80@mail.gmail.com>
On Mon, Nov 19, 2007 at 09:36:52AM +1300, Martin Langhoff wrote:
>Hmmm. After a bit of googling I've found conflicting descriptions of
>the mtime/ctime semantics (I thought - for 10 years now - that ctime
>was "creation time", it is "changed time"). Some people think that
>anything that updates mtime also updates ctime, and others say the
>opposite.
One of them is wrong. All modifications to the file change the ctime.
Some modifications change the mtime. There is also a call to change the
mtime (which will touch the ctime). It's been this way for a long time.
I think most of the confusion comes from the 'c' in ctime.
It doesn't help that the Posix spec is so hard to read on this. Basically,
you have to look up every command that might modify a file to figure out
which time changes it is supposed to modify.
>Wikipedia says (at http://en.wikipedia.org/wiki/MAC_times and
>http://en.wikipedia.org/wiki/Stat_%28Unix%29 ) that mtime is about the
>content, and ctime about metadata (owner, permissions, moved inode,
>etc). Changes in content "touch" mtime + ctime.
>
>With that in mind, I think it makes sense for things like make and
>amanda to read mtime as referring to a real change of that concrete
>file. The abstract notion of the file having changed in the big DSCM
>in the sky is useful, but putting that data in mtime messes things up.
Backup software should _never_ look at the mtime (other than to save it).
Both GNU tar and dump use the ctime field exclusively for incremental
purposes.
Think about this:
wget .../linux-2.4.tar.gz
tar -xzf linux-2.4.tar.gz
I've just expanded lots of files on my machine. Tar is going to set the
mtime to the date they were at when the tarball was made, which was
probably several years ago. It is crucial, though, that any backup
software I run still back these files up, since they are newly added.
There are backup programs that use mtime, but they are just broken, plain
and simple.
>> However, it will make 'make' very confusing, since it uses the mtime to
>> determine if files are out of date. If moving to an older version of a
>> file causes the file to become older, make won't recompile. This is
>> arguably a defect in make, but that is how it works.
>
>It's not a bug in make. mtime has a definite meaning, and make is
>using that meaning. Same with amanda.
It is very much a bug (well, a feature) in make. But the whole date
comparison model of make is completely wrong. It should rebuild a file if
it has changed, not if it is newer. Most make replacements do something
more intelligent (often similar to the index cache git uses).
I haven't used Amanda for a while, but it at least used to do the right
thing (using ctime). They might have had to break things to support FAT,
but I would guess it still works on a real filesystem.
David
next prev parent reply other threads:[~2007-11-18 21:44 UTC|newest]
Thread overview: 14+ messages / expand[flat|nested] mbox.gz Atom feed top
2007-11-16 9:33 preserving mtime Fabrizio Pollastri
2007-11-16 10:15 ` Andreas Ericsson
2007-11-17 18:22 ` Wayne Davison
2007-11-18 8:45 ` Mike Hommey
2007-11-18 9:34 ` Martin Langhoff
2007-11-18 18:47 ` David Brown
2007-11-18 20:36 ` Martin Langhoff
2007-11-18 21:44 ` David Brown [this message]
2007-11-18 9:40 ` Jan Hudec
2007-11-18 10:42 ` Robin Rosenberg
2007-11-19 14:38 ` Johannes Schindelin
2007-11-16 10:19 ` Jakub Narebski
2007-11-16 10:21 ` Junio C Hamano
2007-11-16 12:09 ` Erik Warendorph
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20071118214403.GA7182@old.davidb.org \
--to=git@davidb.org \
--cc=ae@op5.se \
--cc=git@vger.kernel.org \
--cc=martin.langhoff@gmail.com \
--cc=mh@glandium.org \
--cc=wayne@opencoder.net \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).