1
0
Fork 0
alistair23-linux/fs/jfs
Theodore Ts'o 0ae45f63d4 vfs: add support for a lazytime mount option
Add a new mount option which enables a new "lazytime" mode.  This mode
causes atime, mtime, and ctime updates to only be made to the
in-memory version of the inode.  The on-disk times will only get
updated when (a) if the inode needs to be updated for some non-time
related change, (b) if userspace calls fsync(), syncfs() or sync(), or
(c) just before an undeleted inode is evicted from memory.

This is OK according to POSIX because there are no guarantees after a
crash unless userspace explicitly requests via a fsync(2) call.

For workloads which feature a large number of random write to a
preallocated file, the lazytime mount option significantly reduces
writes to the inode table.  The repeated 4k writes to a single block
will result in undesirable stress on flash devices and SMR disk
drives.  Even on conventional HDD's, the repeated writes to the inode
table block will trigger Adjacent Track Interference (ATI) remediation
latencies, which very negatively impact long tail latencies --- which
is a very big deal for web serving tiers (for example).

Google-Bug-Id: 18297052

Signed-off-by: Theodore Ts'o <tytso@mit.edu>
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
2015-02-05 02:45:00 -05:00
..
Kconfig jfs: needs crc32_le 2009-02-02 13:43:28 -06:00
Makefile fs/jfs: TRIM support for JFS Filesystem 2012-09-17 11:58:19 -05:00
acl.c JFS: Check for NULL before calling posix_acl_equiv_mode() 2014-05-28 21:19:02 -05:00
endian24.h
file.c vfs: add support for a lazytime mount option 2015-02-05 02:45:00 -05:00
inode.c switch {__,}blockdev_direct_IO() to iov_iter 2014-05-06 17:32:46 -04:00
ioctl.c new helper: file_inode(file) 2013-02-22 23:31:31 -05:00
jfs_acl.h jfs: use generic posix ACL infrastructure 2014-01-25 23:58:22 -05:00
jfs_btree.h
jfs_debug.c proc 2/2: remove struct proc_dir_entry::owner 2009-03-31 01:14:44 +04:00
jfs_debug.h JFS: switch to seq_files 2008-05-13 08:22:10 -05:00
jfs_dinode.h BKL-removal: Implement a compat_ioctl handler for JFS 2008-02-07 13:45:29 -06:00
jfs_discard.c jfs: Fix FITRIM argument handling 2012-10-17 09:18:38 -05:00
jfs_discard.h fs/jfs: TRIM support for JFS Filesystem 2012-09-17 11:58:19 -05:00
jfs_dmap.c fs/jfs/jfs_dmap.c: replace min/casting by min_t 2014-06-03 14:14:00 -05:00
jfs_dmap.h fs/jfs: TRIM support for JFS Filesystem 2012-09-17 11:58:19 -05:00
jfs_dtree.c jfs: fix readdir cookie incompatibility with NFSv4 2013-08-15 17:22:29 -05:00
jfs_dtree.h [readdir] convert jfs 2013-06-29 12:56:42 +04:00
jfs_extent.c jfs: Update jfs_error 2013-06-05 14:47:19 -05:00
jfs_extent.h
jfs_filsys.h fs/jfs: TRIM support for JFS Filesystem 2012-09-17 11:58:19 -05:00
jfs_imap.c jfs: Update jfs_error 2013-06-05 14:47:19 -05:00
jfs_imap.h
jfs_incore.h jfs: Convert to private i_dquot field 2014-11-10 10:06:18 +01:00
jfs_inode.c fs/jfs/jfs_inode.c: atomically set inode->i_flags 2014-04-14 12:56:14 -05:00
jfs_inode.h fs: push i_mutex and filemap_write_and_wait down into ->fsync() handlers 2011-07-20 20:47:59 -04:00
jfs_lock.h
jfs_logmgr.c sched, cleanup, treewide: Remove set_current_state(TASK_RUNNING) after schedule() 2014-09-19 12:35:17 +02:00
jfs_logmgr.h Fix common misspellings 2011-03-31 11:26:23 -03:00
jfs_metapage.c block: Abstract out bvec iterator 2013-11-23 22:33:47 -08:00
jfs_metapage.h Fix common misspellings 2011-03-31 11:26:23 -03:00
jfs_mount.c fix printk typo 'faild' 2010-08-09 11:25:17 +02:00
jfs_superblock.h jfs: Update jfs_error 2013-06-05 14:47:19 -05:00
jfs_txnmgr.c sched, cleanup, treewide: Remove set_current_state(TASK_RUNNING) after schedule() 2014-09-19 12:35:17 +02:00
jfs_txnmgr.h
jfs_types.h jfs: remove xtLookupList() 2009-01-09 15:42:04 -06:00
jfs_umount.c jfs: flush journal completely before releasing metadata inodes 2011-08-01 12:41:00 -05:00
jfs_unicode.c
jfs_unicode.h include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h 2010-03-30 22:02:32 +09:00
jfs_uniupr.c
jfs_xattr.h jfs: use generic posix ACL infrastructure 2014-01-25 23:58:22 -05:00
jfs_xtree.c jfs: Update jfs_error 2013-06-05 14:47:19 -05:00
jfs_xtree.h jfs: remove xtLookupList() 2009-01-09 15:42:04 -06:00
namei.c assorted conversions to %p[dD] 2014-11-19 13:01:20 -05:00
resize.c jfs: Update jfs_error 2013-06-05 14:47:19 -05:00
super.c jfs: Convert to private i_dquot field 2014-11-10 10:06:18 +01:00
symlink.c jfs: add jfs specific ->setattr call 2010-04-16 08:05:50 -05:00
xattr.c jfs: fix generic posix ACL regression 2014-02-08 10:50:58 -06:00