From: Pavel Machek <pavel@ucw.cz>
To: Theodore Ts'o <tytso@mit.edu>,
adilger.kernel@dilger.ca, linux-ext4@vger.kernel.org,
kernel list <linux-kernel@vger.kernel.org>,
jack@suse.cz
Subject: Re: [4.1-rc] File was modified, but mtime stayed the same (according to unison)
Date: Tue, 9 Jun 2015 17:34:29 +0200 [thread overview]
Message-ID: <20150609153429.GA704@amd> (raw)
In-Reply-To: <20150609151209.GR19168@thunk.org>
On Tue 2015-06-09 11:12:09, Theodore Ts'o wrote:
> On Tue, Jun 09, 2015 at 12:43:30PM +0200, Pavel Machek wrote:
> >
> > Hi!
> >
> > Today, I got strange warning from unison:
> >
> > pavel/.config/chromium/Default/Extension State/LOG.old — transport
> > failure
> > • The source file /data/pavel/.config/chromium/Default/Extension
> > State/LOG.old
> > has been modified but the fast update detection mechanism
> > failed to detect it. Try running once with the fastcheck
> > option set to 'no'.
>
> What does this mean, precisely? Is Unison checking that files have
> been modified using some kind of a checksum or file comparison
> mechanism? And I assume that the "fast update detection mechanism"
> using mtime?
I believe it is using checksum in the process, yes.
> And if it has modified, how was it modified (can you do a diff with
> what the other side of the synchronization setup had for that file),
> and do you know by which process. and what was it trying to do? And
> how is unison being run?
No, sorry, I don't think I can get old version of file.
> One thing that could be going on is that if you have a file which is
> mmap'ed, the mtime field is set the first time the page is modified
> (when the page table entry is set to read/write from read-only). If
> unison then takes a snapshot of the file, and then file is
> subsequently modified via a write to the mmap'ed page, the mtime field
> will not be updated again. We *could* constantly reset the page table
> flags but it would be disastrous from a performance standpoint, and if
> mmap is involved, Posix does *not* guarantee that mtime field will be
> set each time a process writes to the mmap'ed segment --- because that
> would be insane.
Ok, I guess mmap() can explain this. So... basically mtime is useless
in detecting if file have been updated?
Thats... not welcome.
I see that constantly updating on-disk timestamp is not
feasible. Could we do something like
on page_being_mmapped_rw:
file.mtime = "future".
on last_rw_mmap_disappearing:
file.mtime = now().
stat():
if file.mtime != "future":
result.mtime = file.mtime
else:
result.mtime = now()
? I see making stat slower is not welcome, but having to read complete
files to determine if they were modified is even worse than that...
Pavel
--
(english) http://www.livejournal.com/~pavelmachek
(cesky, pictures) http://atrey.karlin.mff.cuni.cz/~pavel/picture/horses/blog.html
next prev parent reply other threads:[~2015-06-09 15:34 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-06-09 10:43 [4.1-rc] File was modified, but mtime stayed the same (according to unison) Pavel Machek
2015-06-09 15:12 ` Theodore Ts'o
2015-06-09 15:34 ` Pavel Machek [this message]
2015-06-09 16:04 ` Theodore Ts'o
2015-06-09 22:13 ` Dave Chinner
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=20150609153429.GA704@amd \
--to=pavel@ucw.cz \
--cc=adilger.kernel@dilger.ca \
--cc=jack@suse.cz \
--cc=linux-ext4@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=tytso@mit.edu \
/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).