User use some syscall, for example mmap(v9fs_file_mmap), it will not
update atime even if user's mnt_flags without MNT_NOATIME, because
v9fs default set SB_NOATIME in v9fs_set_super.
For supporting access time is updated when user mount with relatime,
we should not set SB_NOATIME by default.
Signed-off-by: Yiwen Jiang <[email protected]>
Reviewed-by: Greg Kurz <[email protected]>
---
fs/9p/vfs_super.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/fs/9p/vfs_super.c b/fs/9p/vfs_super.c
index af03c2a..48ce504 100644
--- a/fs/9p/vfs_super.c
+++ b/fs/9p/vfs_super.c
@@ -94,7 +94,7 @@ static int v9fs_set_super(struct super_block *s, void *data)
if (v9ses->cache)
sb->s_bdi->ra_pages = (VM_MAX_READAHEAD * 1024)/PAGE_SIZE;
- sb->s_flags |= SB_ACTIVE | SB_DIRSYNC | SB_NOATIME;
+ sb->s_flags |= SB_ACTIVE | SB_DIRSYNC;
if (!v9ses->cache)
sb->s_flags |= SB_SYNCHRONOUS;
--
1.8.3.1
On Tue, 27 Mar 2018 09:50:47 +0800 jiangyiwen <[email protected]> wrote:
> User use some syscall, for example mmap(v9fs_file_mmap), it will not
> update atime even if user's mnt_flags without MNT_NOATIME, because
> v9fs default set SB_NOATIME in v9fs_set_super.
>
> For supporting access time is updated when user mount with relatime,
> we should not set SB_NOATIME by default.
>
> ...
>
> --- a/fs/9p/vfs_super.c
> +++ b/fs/9p/vfs_super.c
> @@ -94,7 +94,7 @@ static int v9fs_set_super(struct super_block *s, void *data)
> if (v9ses->cache)
> sb->s_bdi->ra_pages = (VM_MAX_READAHEAD * 1024)/PAGE_SIZE;
>
> - sb->s_flags |= SB_ACTIVE | SB_DIRSYNC | SB_NOATIME;
> + sb->s_flags |= SB_ACTIVE | SB_DIRSYNC;
> if (!v9ses->cache)
> sb->s_flags |= SB_SYNCHRONOUS;
>
So strictly speaking, this is a non-backward-compatible change, yes?
Please describe the circumstances under which an existing user might be
harmed by this. I *think* such harm will occur if the user was already
using 'mount -o relatime', yes? They previously weren't getting
relatime treatment, but now they will, and things will be a little slower.
If correct, that sounds acceptable.
On 2018/3/28 7:15, Andrew Morton wrote:
> On Tue, 27 Mar 2018 09:50:47 +0800 jiangyiwen <[email protected]> wrote:
>
>> User use some syscall, for example mmap(v9fs_file_mmap), it will not
>> update atime even if user's mnt_flags without MNT_NOATIME, because
>> v9fs default set SB_NOATIME in v9fs_set_super.
>>
>> For supporting access time is updated when user mount with relatime,
>> we should not set SB_NOATIME by default.
>>
>> ...
>>
>> --- a/fs/9p/vfs_super.c
>> +++ b/fs/9p/vfs_super.c
>> @@ -94,7 +94,7 @@ static int v9fs_set_super(struct super_block *s, void *data)
>> if (v9ses->cache)
>> sb->s_bdi->ra_pages = (VM_MAX_READAHEAD * 1024)/PAGE_SIZE;
>>
>> - sb->s_flags |= SB_ACTIVE | SB_DIRSYNC | SB_NOATIME;
>> + sb->s_flags |= SB_ACTIVE | SB_DIRSYNC;
>> if (!v9ses->cache)
>> sb->s_flags |= SB_SYNCHRONOUS;
>>
>
> So strictly speaking, this is a non-backward-compatible change, yes?
>
> Please describe the circumstances under which an existing user might be
> harmed by this. I *think* such harm will occur if the user was already
> using 'mount -o relatime', yes? They previously weren't getting
> relatime treatment, but now they will, and things will be a little slower.
>
Yes, after using this change, if user was already using 'mount -o relatime',
their atime will be changed, and some operations will result in slower
performance, but I think user should use 'noatime' option if they hope
their file's atime is not updated and user should not depend on the
internal implement.
> If correct, that sounds acceptable.
>
> .
>