support strictatime in ocfs2
Subsystems (2)
cover support strictatime in ocfs2
Hi, all,
As strictatime was introduced into vfs, we must support it in ocfs2. This two patches (one for kernel, one for tools) adding support to it and update the relative document in ocfs2.
Vfs set RELATIME by default at the beginning, so we need STRICTATIME to clear that flag, otherwise we can not always update atime. With strictatime, the the minimum update interval is specified by atime_quantum, and these two options need work together.
thanks,
tiger
PATCH 1/1 ocfs2-tools: support strictatime in ocfs2
Strictatime was introduced into vfs, so this patch adding support to it in ocfs2. Now we have three types behavior about update atime, noatime, relatime and strictatime. With strictatime, the minimum update interval is specified by atime_quantum, which defaults to 60 secs.
--- mount.ocfs2/mount.ocfs2.8.in | 11 ++++++----- mount.ocfs2/mount_constants.h | 3 +++ mount.ocfs2/opts.c | 2 +- 3 files changed, 10 insertions(+), 6 deletions(-)
mount.ocfs2/mount.ocfs2.8.in +6 -5
@@ -20,17 +20,18 @@ specify this mount option to delay the system from mounting the volume until after the network has been enabled. .TP -\fBatime\_quantum=nrsec\fR -The file system will not update atime unless this number of seconds has passed -since the last update. Set to zero to always update atime. It defaults to 60 secs. +\fBnoatime\fR +The file system will not update access time. .TP \fBrelatime\fR The file system only update atime if the previous atime is older than mtime or ctime. .TP -\fBnoatime\fR -The file system will not update access time. +\fBstrictatime,atime\_quantum=nrsec\fR +The file system will always perform atime updates, but the minimum update +interval is specified by atime_quantum. Atime_quantum defaults to 60 secs, +set it to zero to always update atime. These two options need work together. .TP \fBacl / noacl\fR
mount.ocfs2/mount_constants.h +3 -0
@@ -60,6 +60,9 @@ if we have a stack or plain mount - mount atop of it, forming a stack. */#ifndef MS_RELATIME #define MS_RELATIME (1<<21)/* Update atime relative to mtime/ctime. */ #endif +#ifndef MS_STRICTATIME +#define MS_STRICTATIME (1<<24)/* Strict atime semantics */ +#endif /* * Magic mount flag number. Had to be or-ed to the flag values. */
mount.ocfs2/opts.c +1 -1
@@ -78,12 +78,12 @@ static const struct opt_map opt_map[] = { { "mand", 0, 0, MS_MANDLOCK }, /* Allow mandatory locks on this FS */ { "nomand", 0, 1, MS_MANDLOCK }, /* Forbid mandatory locks on this FS */ { "loop", 1, 0, MS_LOOP }, /* use a loop device */ - { "atime", 0, 1, MS_NOATIME }, /* Update access time */ { "noatime", 0, 0, MS_NOATIME }, /* Do not update access time */ { "relatime", 0, 0, MS_RELATIME }, /* only update atime if previous *//* atime is older than mtime/ctime */ { "diratime", 0, 1, MS_NODIRATIME }, /* Update dir access times */ { "nodiratime", 0, 0, MS_NODIRATIME },/* Do not update dir access times */ + { "strictatime", 0, 0, MS_STRICTATIME },/* Strict atime semantics */ { "kudzu", 0, 0, MS_COMMENT }, /* Silently remove this option (backwards compat use only) */ { "managed", 0, 0, MS_COMMENT }, /* Silently remove this option */ { NULL, 0, 0, 0 }
Signature · 1 line
1.7.2.1
Joel Becker
maintainerPATCH 1/1 ocfs2-tools: support strictatime in ocfs2
Quoted 4 lines · Tiger Yang
Strictatime was introduced into vfs, so this patch adding support to it in ocfs2. Now we have three types behavior about update atime, noatime, relatime and strictatime. With strictatime, the minimum update interval is specified by
atime_quantum, which defaults to 60 secs.
<snip>
mount.ocfs2/opts.c static const struct opt_map opt_map[] = { · line 81
Quoted 9 lines
mount.ocfs2/opts.c +0
-1@@ -78,12 +78,12 @@ static const struct opt_map opt_map[] = { { "mand", 0, 0, MS_MANDLOCK }, /* Allow mandatory locks on this FS */ { "nomand", 0, 1, MS_MANDLOCK }, /* Forbid mandatory locks on this FS */ { "loop", 1, 0, MS_LOOP }, /* use a loop device */ - { "atime", 0, 1, MS_NOATIME }, /* Update access time */
Won't this break people saying 'mount -o noatime'?
Joel
Signature · 6 lines
"Maybe the time has drawn the faces I recall. But things in this life change very slowly, If they ever change at all." http://www.jlbec.org/ jlbec at evilplan.org
PATCH 1/1 ocfs2-tools: support strictatime in ocfs2
mount.ocfs2/opts.c static const struct opt_map opt_map[] = { · line 81
Quoted 10 lines · Joel Becker
mount.ocfs2/opts.c +0
-1@@ -78,12 +78,12 @@ static const struct opt_map opt_map[] = { { "mand", 0, 0, MS_MANDLOCK }, /* Allow mandatory locks on this FS */ { "nomand", 0, 1, MS_MANDLOCK }, /* Forbid mandatory locks on this FS */ { "loop", 1, 0, MS_LOOP }, /* use a loop device */ - { "atime", 0, 1, MS_NOATIME }, /* Update access time */ Won't this break people saying 'mount -o noatime'?
No, It would not affect "-o noatime", actually it just disallowed "-o atime".
Thanks,
Tiger
PATCH 1/1 ocfs2: clean up mount option about atime in ocfs2.txt
In reply to Tiger YangAs ocfs2 supports relatime and strictatime, we need update the relative document. Atime_quantum need work with strictatime, so only show it in procfs when mount with strictatime.
--- Documentation/filesystems/ocfs2.txt | 8 +++++++- fs/ocfs2/super.c | 2 +- 2 files changed, 8 insertions(+), 2 deletions(-)
Documentation/filesystems/ocfs2.txt +7 -1
@@ -46,9 +46,15 @@ errors=panic Panic and halt the machine if an error occurs. intr (*) Allow signals to interrupt cluster operations. nointr Do not allow signals to interrupt cluster operations. +noatime Do not update access time. +relatime(*) Update atime if the previous atime is older than + mtime or ctime +strictatime Always update atime, but the minimum update interval + is specified by atime_quantum. atime_quantum=60(*) OCFS2 will not update atime unless this number of seconds has passed since the last update. - Set to zero to always update atime. + Set to zero to always update atime. This option need + work with strictatime. data=ordered (*) All data are forced directly out to the main file system prior to its metadata being committed to the journal.
fs/ocfs2/super.c +1 -1
@@ -1564,7 +1564,7 @@ static int ocfs2_show_options(struct seq_file *s, struct vfsmount *mnt)if (osb->preferred_slot !=OCFS2_INVALID_SLOT )seq_printf (s,",preferred_slot=%d" , osb->preferred_slot); -if (osb->s_atime_quantum !=OCFS2_DEFAULT_ATIME_QUANTUM ) +if (!(mnt->mnt_flags &MNT_NOATIME ) && !(mnt->mnt_flags &MNT_RELATIME ))seq_printf (s,",atime_quantum=%u" , osb->s_atime_quantum);if (osb->osb_commit_interval)
Signature · 1 line
1.7.2.1
Joel Becker
maintainerPATCH 1/1 ocfs2: clean up mount option about atime in ocfs2.txt
fs/ocfs2/super.c static int ocfs2_show_options(struct seq_file *s, struct vfsmount *mnt) · line 1568
Quoted 3 lines · Tiger Yang
fs/ocfs2/super.c +1
-1-if (osb->s_atime_quantum !=OCFS2_DEFAULT_ATIME_QUANTUM ) +if (!(mnt->mnt_flags &MNT_NOATIME ) && !(mnt->mnt_flags &MNT_RELATIME ))seq_printf (s,",atime_quantum=%u" , osb->s_atime_quantum);
I can see why you don't print in the case of noatime or
relatime, but you should keep the check for DEFAULT_ATIME_QUANTUM. There's no point in printing it if it is the default.
Joel
Signature · 6 lines
Life's Little Instruction Book #510 "Count your blessings." http://www.jlbec.org/ jlbec at evilplan.org
PATCH 1/1 ocfs2: clean up mount option about atime in ocfs2.txt
Quoted 7 lines · Joel Becker
fs/ocfs2/super.c static int ocfs2_show_options(struct seq_file *s, struct vfsmount *mnt) · line 1568
Quoted 3 lines · Tiger Yang
fs/ocfs2/super.c +1
-1-if (osb->s_atime_quantum !=OCFS2_DEFAULT_ATIME_QUANTUM ) +if (!(mnt->mnt_flags&MNT_NOATIME )&& !(mnt->mnt_flags&MNT_RELATIME ))seq_printf (s,",atime_quantum=%u" , osb->s_atime_quantum);I can see why you don't print in the case of noatime or
relatime, but you should keep the check forDEFAULT_ATIME_QUANTUM. There's no point in printing it if it is the default.
Hi, Joel,
I have thought this issue, I choose to show the quantum value when user mount with strictatime, because we don't as "strict" as the other file system to update atime by default. If we don't show the default quantum value, that may be confuse the new user to ocfs2.
Thanks,
tiger
Joel Becker
maintainerPATCH 1/1 ocfs2: clean up mount option about atime in ocfs2.txt
In reply to Tiger YangQuoted 5 lines · Tiger Yang
As ocfs2 supports relatime and strictatime, we need update the relative document.
Atime_quantumneed work with strictatime, so only show it in procfs when mount with strictatime.Signed-off-by Tiger Yang <[email protected]>
This patch is now in the merge-window branch of ocfs2.git.
Joel
Signature · 8 lines
"Too much walking shoes worn thin. Too much trippin' and my soul's worn thin. Time to catch a ride it leaves today Her name is what it means. Too much walking shoes worn thin." http://www.jlbec.org/ jlbec at evilplan.org