summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKarel Zak2015-03-30 12:43:45 +0200
committerKarel Zak2015-03-30 12:43:45 +0200
commit8c7f073aaeaad3ab9b1775447306776056bf50b8 (patch)
tree56b7a22576e8e45a7654122b034f2870574f8046
parentsetarch: fix regression for sparc builds (diff)
downloadkernel-qcow2-util-linux-8c7f073aaeaad3ab9b1775447306776056bf50b8.tar.gz
kernel-qcow2-util-linux-8c7f073aaeaad3ab9b1775447306776056bf50b8.tar.xz
kernel-qcow2-util-linux-8c7f073aaeaad3ab9b1775447306776056bf50b8.zip
libmount: add support for MS_LAZYTIME
Signed-off-by: Karel Zak <kzak@redhat.com>
-rw-r--r--libmount/src/libmount.h.in4
-rw-r--r--libmount/src/optmap.c4
-rw-r--r--sys-utils/mount.827
3 files changed, 35 insertions, 0 deletions
diff --git a/libmount/src/libmount.h.in b/libmount/src/libmount.h.in
index 30dc06b69..2338cc604 100644
--- a/libmount/src/libmount.h.in
+++ b/libmount/src/libmount.h.in
@@ -832,6 +832,10 @@ extern int mnt_context_set_syscall_status(struct libmnt_context *cxt, int status
#ifndef MS_STRICTATIME
#define MS_STRICTATIME (1<<24) /* Always perform atime updates */
#endif
+#ifndef MS_LAZYTIME
+#define MS_LAZYTIME (1<<25) /* Update the on-disk [acm]times lazily */
+#endif
+
/*
* Magic mount flag number. Had to be or-ed to the flag values.
diff --git a/libmount/src/optmap.c b/libmount/src/optmap.c
index 5b25b8f29..3ad77273e 100644
--- a/libmount/src/optmap.c
+++ b/libmount/src/optmap.c
@@ -113,6 +113,10 @@ static const struct libmnt_optmap linux_flags_map[] =
{ "strictatime", MS_STRICTATIME }, /* Strict atime semantics */
{ "nostrictatime", MS_STRICTATIME, MNT_INVERT }, /* kernel default atime */
#endif
+#ifdef MS_LAZYTIME
+ { "lazytime", MS_LAZYTIME }, /* Update {a,m,c}time on the in-memory inode only */
+ { "nolazytime", MS_LAZYTIME, MNT_INVERT },
+#endif
#ifdef MS_PROPAGATION
{ "unbindable", MS_UNBINDABLE, MNT_NOHLPS | MNT_NOMTAB }, /* Unbindable */
{ "runbindable", MS_UNBINDABLE | MS_REC, MNT_NOHLPS | MNT_NOMTAB },
diff --git a/sys-utils/mount.8 b/sys-utils/mount.8
index fac4b0c9b..aaf6b39fd 100644
--- a/sys-utils/mount.8
+++ b/sys-utils/mount.8
@@ -1043,6 +1043,33 @@ system mount options see /proc/mounts.
.B nostrictatime
Use the kernel's default behavior for inode access time updates.
.TP
+.B lazytime
+Only update times (atime, mtime, ctime) on the in-memory version of the file inode.
+
+This mount option significantly reduces writes to the inode table for
+workloads that perform frequent random writes to preallocated files.
+As at Linux 3.20, this option is supported only on ext4.
+
+The on-disk timestamps are updated only when:
+.sp
+.RS
+- the inode needs to be updated for some change unrelated to file timestamps
+.sp
+- the application employs
+.BR fsync (2),
+.BR syncfs (2),
+or
+.BR sync (2)
+.sp
+- an undeleted inode is evicted from memory
+.sp
+- more than 24 hours have passed since the i-node was written to disk.
+.RE
+.sp
+.TP
+.B nolazytime
+Do not use the nolazytime feature.
+.TP
.B suid
Allow set-user-identifier or set-group-identifier bits to take
effect.