From: Jakob Oestergaard <jakob@unthought.net>
To: Rik van Riel <riel@redhat.com>
Cc: Valdis.Kletnieks@vt.edu,
Anton Salikhmetov <salikhmetov@gmail.com>,
linux-mm@kvack.org, linux-kernel@vger.kernel.org
Subject: Re: [PATCH][RFC][BUG] updating the ctime and mtime time stamps in msync()
Date: Wed, 9 Jan 2008 23:33:40 +0100 [thread overview]
Message-ID: <20080109223340.GH25527@unthought.net> (raw)
In-Reply-To: <20080109170633.292644dc@cuia.boston.redhat.com>
On Wed, Jan 09, 2008 at 05:06:33PM -0500, Rik van Riel wrote:
...
> >
> > Lather, rinse, repeat....
Just verified this at one customer site; they had a db that was last backed up
in 2003 :/
>
> On the other hand, updating the mtime and ctime whenever a page is dirtied
> also does not work right. Apparently that can break mutt.
>
Thinking back on the atime discussion, I bet there would be some performance
problems in updating the ctime/mtime that often too :)
> Calling msync() every once in a while with Anton's patch does not look like a
> fool proof method to me either, because the VM can write all the dirty pages
> to disk by itself, leaving nothing for msync() to detect. (I think...)
Reading the man page:
"The st_ctime and st_mtime fields of a file that is mapped with MAP_SHARED and
PROT_WRITE will be marked for update at some point in the interval between a
write reference to the mapped region and the next call to msync() with
MS_ASYNC or MS_SYNC for that portion of the file by any process. If there is no
such call, these fields may be marked for update at any time after a write
reference if the underlying file is modified as a result."
So, whenever someone writes in the region, this must cause us to update the
mtime/ctime no later than at the time of the next call to msync().
Could one do something like the lazy atime updates, coupled with a forced flush
at msync()?
> Can we get by with simply updating the ctime and mtime every time msync()
> is called, regardless of whether or not the mmaped pages were still dirty
> by the time we called msync() ?
The update must still happen, eventually, after a write to the mapped region
followed by an unmap/close even if no msync is ever called.
The msync only serves as a "no later than" deadline. The write to the region
triggers the need for the update.
At least this is how I read the standard - please feel free to correct me if I
am mistaken.
--
/ jakob
WARNING: multiple messages have this Message-ID (diff)
From: Jakob Oestergaard <jakob@unthought.net>
To: Rik van Riel <riel@redhat.com>
Cc: Valdis.Kletnieks@vt.edu,
Anton Salikhmetov <salikhmetov@gmail.com>,
linux-mm@kvack.org, linux-kernel@vger.kernel.org
Subject: Re: [PATCH][RFC][BUG] updating the ctime and mtime time stamps in msync()
Date: Wed, 9 Jan 2008 23:33:40 +0100 [thread overview]
Message-ID: <20080109223340.GH25527@unthought.net> (raw)
In-Reply-To: <20080109170633.292644dc@cuia.boston.redhat.com>
On Wed, Jan 09, 2008 at 05:06:33PM -0500, Rik van Riel wrote:
...
> >
> > Lather, rinse, repeat....
Just verified this at one customer site; they had a db that was last backed up
in 2003 :/
>
> On the other hand, updating the mtime and ctime whenever a page is dirtied
> also does not work right. Apparently that can break mutt.
>
Thinking back on the atime discussion, I bet there would be some performance
problems in updating the ctime/mtime that often too :)
> Calling msync() every once in a while with Anton's patch does not look like a
> fool proof method to me either, because the VM can write all the dirty pages
> to disk by itself, leaving nothing for msync() to detect. (I think...)
Reading the man page:
"The st_ctime and st_mtime fields of a file that is mapped with MAP_SHARED and
PROT_WRITE will be marked for update at some point in the interval between a
write reference to the mapped region and the next call to msync() with
MS_ASYNC or MS_SYNC for that portion of the file by any process. If there is no
such call, these fields may be marked for update at any time after a write
reference if the underlying file is modified as a result."
So, whenever someone writes in the region, this must cause us to update the
mtime/ctime no later than at the time of the next call to msync().
Could one do something like the lazy atime updates, coupled with a forced flush
at msync()?
> Can we get by with simply updating the ctime and mtime every time msync()
> is called, regardless of whether or not the mmaped pages were still dirty
> by the time we called msync() ?
The update must still happen, eventually, after a write to the mapped region
followed by an unmap/close even if no msync is ever called.
The msync only serves as a "no later than" deadline. The write to the region
triggers the need for the update.
At least this is how I read the standard - please feel free to correct me if I
am mistaken.
--
/ jakob
--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org. For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>
next prev parent reply other threads:[~2008-01-09 22:33 UTC|newest]
Thread overview: 52+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-01-07 17:54 [PATCH][RFC][BUG] updating the ctime and mtime time stamps in msync() Anton Salikhmetov
2008-01-07 17:54 ` Anton Salikhmetov, Anton Salikhmetov
2008-01-09 11:32 ` Anton Salikhmetov
2008-01-09 11:32 ` Anton Salikhmetov
2008-01-09 11:47 ` Jakob Oestergaard
2008-01-09 11:47 ` Jakob Oestergaard
2008-01-09 12:22 ` Jakob Oestergaard
2008-01-09 12:22 ` Jakob Oestergaard
2008-01-09 14:41 ` Jesper Juhl
2008-01-09 14:41 ` Jesper Juhl
2008-01-09 15:31 ` Anton Salikhmetov
2008-01-09 15:31 ` Anton Salikhmetov
2008-01-09 21:28 ` Peter Staubach
2008-01-09 21:28 ` Peter Staubach
2008-01-09 20:50 ` Rik van Riel
2008-01-09 20:50 ` Rik van Riel
2008-01-09 21:01 ` Klaus S. Madsen
2008-01-09 21:01 ` Klaus S. Madsen
2008-01-09 21:06 ` Valdis.Kletnieks
2008-01-09 22:06 ` Rik van Riel
2008-01-09 22:06 ` Rik van Riel
2008-01-09 22:19 ` Peter Staubach
2008-01-09 22:19 ` Peter Staubach
2008-01-09 22:33 ` Jakob Oestergaard [this message]
2008-01-09 22:33 ` Jakob Oestergaard
2008-01-09 23:41 ` Rik van Riel
2008-01-09 23:41 ` Rik van Riel
2008-01-10 0:03 ` Anton Salikhmetov
2008-01-10 0:03 ` Anton Salikhmetov
2008-01-10 8:51 ` Jakob Oestergaard
2008-01-10 8:51 ` Jakob Oestergaard
2008-01-10 10:53 ` Anton Salikhmetov
2008-01-10 10:53 ` Anton Salikhmetov
2008-01-10 15:45 ` Rik van Riel
2008-01-10 15:45 ` Rik van Riel
2008-01-10 15:56 ` Anton Salikhmetov
2008-01-10 15:56 ` Anton Salikhmetov
2008-01-10 16:07 ` Rik van Riel
2008-01-10 16:07 ` Rik van Riel
2008-01-10 16:40 ` Anton Salikhmetov
2008-01-10 16:40 ` Anton Salikhmetov
2008-01-10 16:52 ` Peter Staubach
2008-01-10 16:52 ` Peter Staubach
2008-01-10 16:46 ` Peter Staubach
2008-01-10 16:46 ` Peter Staubach
2008-01-10 20:48 ` Valdis.Kletnieks
2008-01-10 0:48 ` Anton Salikhmetov
2008-01-10 0:48 ` Anton Salikhmetov
2008-01-10 0:40 ` Anton Salikhmetov
2008-01-10 0:40 ` Anton Salikhmetov
2008-01-09 21:18 ` Peter Staubach
2008-01-09 21:18 ` Peter Staubach
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=20080109223340.GH25527@unthought.net \
--to=jakob@unthought.net \
--cc=Valdis.Kletnieks@vt.edu \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=riel@redhat.com \
--cc=salikhmetov@gmail.com \
/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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.