From: Peter Staubach <staubach@redhat.com>
To: Miklos Szeredi <miklos@szeredi.hu>
Cc: akpm@linux-foundation.org, hugh@veritas.com,
linux-fsdevel@vger.kernel.org, linux-mm@kvack.org,
linux-kernel@vger.kernel.org
Subject: Re: [PATCH] update ctime and mtime for mmaped write
Date: Thu, 22 Feb 2007 12:39:43 -0500 [thread overview]
Message-ID: <45DDD55F.4060106@redhat.com> (raw)
In-Reply-To: <E1HK8hU-0005Mq-00@dorka.pomaz.szeredi.hu>
Miklos Szeredi wrote:
>> On Wed, 21 Feb 2007 18:51:52 +0100 Miklos Szeredi <miklos@szeredi.hu> wrote:
>>
>>
>>> This patch makes writing to shared memory mappings update st_ctime and
>>> st_mtime as defined by SUSv3:
>>>
>>> The st_ctime and st_mtime fields of a file that is mapped with
>>> MAP_SHARED and PROT_WRITE shall 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 and if the
>>> underlying file is modified as a result of a write reference, then
>>> these fields shall be marked for update at some time after the
>>> write reference.
>>>
>>> A new address_space flag is introduced: AS_CMTIME. This is set each
>>> time a page is dirtied through a userspace memory mapping. This
>>> includes write accesses via get_user_pages().
>>>
>>> Note, the flag is set unconditionally, even if the page is already
>>> dirty. This is important, because the page might have been dirtied
>>> earlier by a non-mmap write.
>>>
>>> This flag is checked in msync() and __fput(), and if set, the file
>>> times are updated and the flag is cleared
>>>
>>> The flag is also cleared, if the time update is triggered by a normal
>>> write. This is not mandated by the standard, but seems to be a sane
>>> thing to do.
>>>
>> Why is the flag checked in __fput()?
>>
>
> It's because of this bit in the standard:
>
> If there is no such call and if the underlying file is modified
> as a result of a write reference, then these fields shall be
> marked for update at some time after the write reference.
>
> It could be done in munmap/mremap, but it seemed more difficult to
> track down all the places where the vma is removed. But yes, that may
> be a nicer solution.
It seems to me that, with this support, a file, which is mmap'd,
modified, but never msync'd or munmap'd, will never get its mtime
updated. Or did I miss that?
I also don't see how an mmap'd block device will get its mtime
updated either.
Thanx...
ps
WARNING: multiple messages have this Message-ID (diff)
From: Peter Staubach <staubach@redhat.com>
To: Miklos Szeredi <miklos@szeredi.hu>
Cc: akpm@linux-foundation.org, hugh@veritas.com,
linux-fsdevel@vger.kernel.org, linux-mm@kvack.org,
linux-kernel@vger.kernel.org
Subject: Re: [PATCH] update ctime and mtime for mmaped write
Date: Thu, 22 Feb 2007 12:39:43 -0500 [thread overview]
Message-ID: <45DDD55F.4060106@redhat.com> (raw)
In-Reply-To: <E1HK8hU-0005Mq-00@dorka.pomaz.szeredi.hu>
Miklos Szeredi wrote:
>> On Wed, 21 Feb 2007 18:51:52 +0100 Miklos Szeredi <miklos@szeredi.hu> wrote:
>>
>>
>>> This patch makes writing to shared memory mappings update st_ctime and
>>> st_mtime as defined by SUSv3:
>>>
>>> The st_ctime and st_mtime fields of a file that is mapped with
>>> MAP_SHARED and PROT_WRITE shall 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 and if the
>>> underlying file is modified as a result of a write reference, then
>>> these fields shall be marked for update at some time after the
>>> write reference.
>>>
>>> A new address_space flag is introduced: AS_CMTIME. This is set each
>>> time a page is dirtied through a userspace memory mapping. This
>>> includes write accesses via get_user_pages().
>>>
>>> Note, the flag is set unconditionally, even if the page is already
>>> dirty. This is important, because the page might have been dirtied
>>> earlier by a non-mmap write.
>>>
>>> This flag is checked in msync() and __fput(), and if set, the file
>>> times are updated and the flag is cleared
>>>
>>> The flag is also cleared, if the time update is triggered by a normal
>>> write. This is not mandated by the standard, but seems to be a sane
>>> thing to do.
>>>
>> Why is the flag checked in __fput()?
>>
>
> It's because of this bit in the standard:
>
> If there is no such call and if the underlying file is modified
> as a result of a write reference, then these fields shall be
> marked for update at some time after the write reference.
>
> It could be done in munmap/mremap, but it seemed more difficult to
> track down all the places where the vma is removed. But yes, that may
> be a nicer solution.
It seems to me that, with this support, a file, which is mmap'd,
modified, but never msync'd or munmap'd, will never get its mtime
updated. Or did I miss that?
I also don't see how an mmap'd block device will get its mtime
updated either.
Thanx...
ps
--
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:[~2007-02-22 17:39 UTC|newest]
Thread overview: 52+ messages / expand[flat|nested] mbox.gz Atom feed top
2007-02-21 17:51 [PATCH] update ctime and mtime for mmaped write Miklos Szeredi
2007-02-21 17:51 ` Miklos Szeredi, Miklos Szeredi
2007-02-21 18:07 ` Peter Staubach
2007-02-21 18:07 ` Peter Staubach
2007-02-21 18:23 ` Miklos Szeredi
2007-02-21 18:23 ` Miklos Szeredi
2007-02-21 18:54 ` Peter Staubach
2007-02-21 18:54 ` Peter Staubach
2007-02-21 19:07 ` Miklos Szeredi
2007-02-21 19:07 ` Miklos Szeredi
2007-02-22 17:36 ` Peter Staubach
2007-02-22 17:36 ` Peter Staubach
2007-02-22 18:16 ` Miklos Szeredi
2007-02-22 18:16 ` Miklos Szeredi
2007-02-22 20:11 ` Peter Staubach
2007-02-22 20:11 ` Peter Staubach
2007-02-22 20:43 ` Miklos Szeredi
2007-02-22 20:43 ` Miklos Szeredi
2007-02-22 20:50 ` Peter Staubach
2007-02-22 20:50 ` Peter Staubach
2007-02-21 18:12 ` Trond Myklebust
2007-02-21 18:12 ` Trond Myklebust
2007-02-21 18:28 ` Miklos Szeredi
2007-02-21 18:28 ` Miklos Szeredi
2007-02-21 18:36 ` Trond Myklebust
2007-02-21 18:36 ` Trond Myklebust
2007-02-21 18:50 ` Peter Staubach
2007-02-21 18:50 ` Peter Staubach
2007-02-21 18:50 ` Miklos Szeredi
2007-02-21 18:50 ` Miklos Szeredi
2007-02-22 4:26 ` Andrew Morton
2007-02-22 4:26 ` Andrew Morton
2007-02-22 7:49 ` Miklos Szeredi
2007-02-22 7:49 ` Miklos Szeredi
2007-02-22 17:39 ` Peter Staubach [this message]
2007-02-22 17:39 ` Peter Staubach
2007-02-22 18:08 ` Miklos Szeredi
2007-02-22 18:08 ` Miklos Szeredi
2007-02-22 20:14 ` Peter Staubach
2007-02-22 20:14 ` Peter Staubach
2007-02-22 20:48 ` Miklos Szeredi
2007-02-22 20:48 ` Miklos Szeredi
2007-02-22 20:55 ` Peter Staubach
2007-02-22 20:55 ` Peter Staubach
2007-02-22 21:04 ` Trond Myklebust
2007-02-22 21:04 ` Trond Myklebust
2007-02-22 21:28 ` Miklos Szeredi
2007-02-22 21:28 ` Miklos Szeredi
2007-02-22 21:52 ` Peter Staubach
2007-02-22 21:52 ` Peter Staubach
2007-02-22 22:08 ` Miklos Szeredi
2007-02-22 22:08 ` Miklos Szeredi
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=45DDD55F.4060106@redhat.com \
--to=staubach@redhat.com \
--cc=akpm@linux-foundation.org \
--cc=hugh@veritas.com \
--cc=linux-fsdevel@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=miklos@szeredi.hu \
/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.