Re: [PATCH][RFC][BUG] updating the ctime and mtime time stamps in msync()

Rik van Riel
2008-01-09T23:41:59Z

On Wed, 9 Jan 2008 23:33:40 +0100
Jakob Oestergaard <jakob@unthought.net> wrote:
> On Wed, Jan 09, 2008 at 05:06:33PM -0500, Rik van Riel wrote:

> > 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.

You are absolutely right. If we wrote dirty pages to disk, the ctime
and mtime updates must happen no later than msync or close time.

I guess a third possible time (if we want to minimize the number of
updates) would be when natural syncing of the file data to disk, by
other things in the VM, would be about to clear the I_DIRTY_PAGES
flag on the inode. That way we do not need to remember any special
"we already flushed all dirty data, but we have not updated the mtime
and ctime yet" state.

Does this sound reasonable?

--
All rights reversed.