delorie.com/archives/browse.cgi   search  
Mail Archives: cygwin/2012/03/09/13:23:06

X-Recipient: archive-cygwin AT delorie DOT com
X-SWARE-Spam-Status: No, hits=-1.7 required=5.0 tests=AWL,BAYES_00,RCVD_IN_DNSWL_NONE,TW_BJ,T_RP_MATCHES_RCVD,UNPARSEABLE_RELAY
X-Spam-Check-By: sourceware.org
Message-ID: <4F5A4A5F.7090207@t-online.de>
Date: Fri, 09 Mar 2012 19:22:23 +0100
From: Christian Franke <Christian DOT Franke AT t-online DOT de>
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:10.0.2) Gecko/20120216 Firefox/10.0.2 SeaMonkey/2.7.2
MIME-Version: 1.0
To: cygwin AT cygwin DOT com
Subject: Re: rebase keeps last modification time of DLL unchanged
References: <4F57DC0F DOT 2090401 AT t-online DOT de> <20120308093206 DOT GR5159 AT calimero DOT vinschen DOT de> <4F5918A2 DOT 4090707 AT t-online DOT de> <20120309084307 DOT GA5159 AT calimero DOT vinschen DOT de> <20120309154754 DOT GB31291 AT ednor DOT casa DOT cgf DOT cx>
In-Reply-To: <20120309154754.GB31291@ednor.casa.cgf.cx>
X-IsSubscribed: yes
Mailing-List: contact cygwin-help AT cygwin DOT com; run by ezmlm
List-Id: <cygwin.cygwin.com>
List-Subscribe: <mailto:cygwin-subscribe AT cygwin DOT com>
List-Archive: <http://sourceware.org/ml/cygwin/>
List-Post: <mailto:cygwin AT cygwin DOT com>
List-Help: <mailto:cygwin-help AT cygwin DOT com>, <http://sourceware.org/ml/#faqs>
Sender: cygwin-owner AT cygwin DOT com
Mail-Followup-To: cygwin AT cygwin DOT com
Delivered-To: mailing list cygwin AT cygwin DOT com

Christopher Faylor wrote:
> On Fri, Mar 09, 2012 at 09:43:07AM +0100, Corinna Vinschen wrote:
>> On Mar  8 21:37, Christian Franke wrote:
>>> Corinna Vinschen wrote:
>>>> On Mar  7 23:07, Christian Franke wrote:
>>>>> The rebase tool does not change last modification timestamp of each
>>>>> DLL even if its data has changed. This is likely because Windows
>>>>> "may" not update the timestamp for files written through a memory
>>>>> mapped view.
>>>>>
>>>>> Is this an intended behavior of rebase?
>>>> Why should rebase change the timestamp?  Apart from the rebasing, the
>>>> DLL is still the same.  If you want to know when it has been last
>>>> rebased, you can look into the file header:
>>>>
>>>>    $ objdump -p cygiconv-2.dll | grep 'Time/Date[^ ]'
>>>>    Time/Date               Tue Mar  6 23:24:12 2012
>>>>
>>> It depends: Changing data without changing st_mtime avoids
>>> (unneeded|required) file copies during incremental backups, rsync,
>>> robocopy, ...
>>>
>>> rebase does not explicitly (re)set the timestamp after rebasing. Is
>>> this by design?
>>>
>>> It relies on weakly defined Windows behavior: "When modifying a file
>>> through a mapped view, the last modification timestamp *may* not be
>>> updated automatically."
>>> http://msdn.microsoft.com/en-us/library/windows/desktop/aa366563.aspx
>> Well, let me put it like this.  Rebase just does its job.  It doesn't
>> actually care for the file timestamp, only for the file header
>> timestamps.  This is not by design, it's just as it is.  So the next
>> question is obvious.  Do you think it should change the timestamp or
>> not?  Why?  A patch is simple and I have it actually already waiting in
>> the scenery.

Both have it its pros and cons, so it depends on user's preferences:
Preserve st_mtime:
+ Incremental Backups are not polluted with unnecessary DLL copies after 
rebaseall is run.

Update st_mtime:
+ Incremental Backups provide an accurate copy (including 
/etc/rebase.db.i386 which matches DLL states)


> I don't think the default should change but maybe an option could be
> added for people who want to see updated times.

Agree.

Actually I had the idea to propose a patch for a new -t(ouch) option. I 
expected some utime()/SetFileTime() call in the source which could be 
simply disabled by the option. After realizing that mtime is preserved 
due to the interesting "timestamp may not be updated" semantics of 
Windows file views, I decided to ask first what the intended behavior of 
rebase is :-)

OT: This also breaks conformance of Cygwin's mmap(). Both POSIX and 
Linux man pages document that st_mtime is updated on writes. There is 
probably no way to fix this.

Christian


--
Problem reports:       http://cygwin.com/problems.html
FAQ:                   http://cygwin.com/faq/
Documentation:         http://cygwin.com/docs.html
Unsubscribe info:      http://cygwin.com/ml/#unsubscribe-simple

- Raw text -


  webmaster     delorie software   privacy  
  Copyright © 2019   by DJ Delorie     Updated Jul 2019