diff options
-rw-r--r-- | fs/namespace.c | 8 | ||||
-rw-r--r-- | include/linux/mount.h | 1 |
2 files changed, 9 insertions, 0 deletions
diff --git a/fs/namespace.c b/fs/namespace.c index ca4913a54f03..a1e663d781a2 100644 --- a/fs/namespace.c +++ b/fs/namespace.c @@ -2333,6 +2333,14 @@ long do_mount(char *dev_name, char *dir_name, char *type_page, if (flags & MS_RDONLY) mnt_flags |= MNT_READONLY; + /* The default atime for remount is preservation */ + if ((flags & MS_REMOUNT) && + ((flags & (MS_NOATIME | MS_NODIRATIME | MS_RELATIME | + MS_STRICTATIME)) == 0)) { + mnt_flags &= ~MNT_ATIME_MASK; + mnt_flags |= path.mnt->mnt_flags & MNT_ATIME_MASK; + } + flags &= ~(MS_NOSUID | MS_NOEXEC | MS_NODEV | MS_ACTIVE | MS_BORN | MS_NOATIME | MS_NODIRATIME | MS_RELATIME| MS_KERNMOUNT | MS_STRICTATIME); diff --git a/include/linux/mount.h b/include/linux/mount.h index 33fe53d78110..fc17c4d4b978 100644 --- a/include/linux/mount.h +++ b/include/linux/mount.h @@ -43,6 +43,7 @@ struct mnt_namespace; */ #define MNT_SHARED_MASK (MNT_UNBINDABLE) #define MNT_PROPAGATION_MASK (MNT_SHARED | MNT_UNBINDABLE) +#define MNT_ATIME_MASK (MNT_NOATIME | MNT_NODIRATIME | MNT_RELATIME ) #define MNT_INTERNAL 0x4000 |