)]}'
{
  "commit": "0ae45f63d4ef8d8eeec49c7d8b44a1775fff13e8",
  "tree": "660dbb014482092361eab263847fb906b5a9ec22",
  "parents": [
    "e36f014edff70fc02b3d3d79cead1d58f289332e"
  ],
  "author": {
    "name": "Theodore Ts\u0027o",
    "email": "tytso@mit.edu",
    "time": "Mon Feb 02 00:37:00 2015 -0500"
  },
  "committer": {
    "name": "Al Viro",
    "email": "viro@zeniv.linux.org.uk",
    "time": "Thu Feb 05 02:45:00 2015 -0500"
  },
  "message": "vfs: add support for a lazytime mount option\n\nAdd a new mount option which enables a new \"lazytime\" mode.  This mode\ncauses atime, mtime, and ctime updates to only be made to the\nin-memory version of the inode.  The on-disk times will only get\nupdated when (a) if the inode needs to be updated for some non-time\nrelated change, (b) if userspace calls fsync(), syncfs() or sync(), or\n(c) just before an undeleted inode is evicted from memory.\n\nThis is OK according to POSIX because there are no guarantees after a\ncrash unless userspace explicitly requests via a fsync(2) call.\n\nFor workloads which feature a large number of random write to a\npreallocated file, the lazytime mount option significantly reduces\nwrites to the inode table.  The repeated 4k writes to a single block\nwill result in undesirable stress on flash devices and SMR disk\ndrives.  Even on conventional HDD\u0027s, the repeated writes to the inode\ntable block will trigger Adjacent Track Interference (ATI) remediation\nlatencies, which very negatively impact long tail latencies --- which\nis a very big deal for web serving tiers (for example).\n\nGoogle-Bug-Id: 18297052\n\nSigned-off-by: Theodore Ts\u0027o \u003ctytso@mit.edu\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "5653fa42930b6afbe29b5dce9e88511c502c8e54",
      "old_mode": 33188,
      "old_path": "fs/ext4/inode.c",
      "new_id": "628df5ba44a6e7c6dfefd2c6dbdabed7a4ad7875",
      "new_mode": 33188,
      "new_path": "fs/ext4/inode.c"
    },
    {
      "type": "modify",
      "old_id": "2d609a5fbfea96e6ebe8dc65ebf64cd64dca0c8d",
      "old_mode": 33188,
      "old_path": "fs/fs-writeback.c",
      "new_id": "0046861913546d6da7e1020056e09daabc5e8c0a",
      "new_mode": 33188,
      "new_path": "fs/fs-writeback.c"
    },
    {
      "type": "modify",
      "old_id": "6e600abf694a20f327a7a025c670954002745453",
      "old_mode": 33188,
      "old_path": "fs/gfs2/file.c",
      "new_id": "15c44cf457ccffd6e55145c8e2e10bd235bc4655",
      "new_mode": 33188,
      "new_path": "fs/gfs2/file.c"
    },
    {
      "type": "modify",
      "old_id": "aa149e7262acffff13db5707eeb0c0144add985c",
      "old_mode": 33188,
      "old_path": "fs/inode.c",
      "new_id": "4feb85cc125f2c345120e8f8ef7eb952f28d1684",
      "new_mode": 33188,
      "new_path": "fs/inode.c"
    },
    {
      "type": "modify",
      "old_id": "33aa0cc1f8b863b7b101bec470af4238d0c6eeb1",
      "old_mode": 33188,
      "old_path": "fs/jfs/file.c",
      "new_id": "10815f8dfd8b28c31e045d62d0351013ca442a03",
      "new_mode": 33188,
      "new_path": "fs/jfs/file.c"
    },
    {
      "type": "modify",
      "old_id": "005843ce5dbd532d683b1c94e16f765b8585d236",
      "old_mode": 33188,
      "old_path": "fs/libfs.c",
      "new_id": "b2ffdb045be42c1c5c476d9298aacd98045f47f3",
      "new_mode": 33188,
      "new_path": "fs/libfs.c"
    },
    {
      "type": "modify",
      "old_id": "0f96f71ab32bab79baa01a2b473b54417512a8bc",
      "old_mode": 33188,
      "old_path": "fs/proc_namespace.c",
      "new_id": "8db932da40091b44f2a8df49e921d942f2291908",
      "new_mode": 33188,
      "new_path": "fs/proc_namespace.c"
    },
    {
      "type": "modify",
      "old_id": "01d9f18a70b5188a4b74ab718868ad6468b33b76",
      "old_mode": 33188,
      "old_path": "fs/sync.c",
      "new_id": "fbc98ee620448dbf1f99697231e003ab86dc0893",
      "new_mode": 33188,
      "new_path": "fs/sync.c"
    },
    {
      "type": "modify",
      "old_id": "5da6012b7a141e4bf6c10ec62b1573756215176c",
      "old_mode": 33188,
      "old_path": "include/linux/backing-dev.h",
      "new_id": "4cdf7336f64aa6d1fbb1d61f107c3fd289373430",
      "new_mode": 33188,
      "new_path": "include/linux/backing-dev.h"
    },
    {
      "type": "modify",
      "old_id": "42efe13077b6c1b8dd139c6cea7a241e5d6b320d",
      "old_mode": 33188,
      "old_path": "include/linux/fs.h",
      "new_id": "cd027ce2c705523f3ee15996381c02576c3d1530",
      "new_mode": 33188,
      "new_path": "include/linux/fs.h"
    },
    {
      "type": "modify",
      "old_id": "cee02d65ab3f1707080902de3375d828f1e0a526",
      "old_mode": 33188,
      "old_path": "include/trace/events/writeback.h",
      "new_id": "5ecb4c2346257a47df301c8153cedc9f8d621699",
      "new_mode": 33188,
      "new_path": "include/trace/events/writeback.h"
    },
    {
      "type": "modify",
      "old_id": "3735fa0a67840ba1882fd42b343c01550a540944",
      "old_mode": 33188,
      "old_path": "include/uapi/linux/fs.h",
      "new_id": "9b964a5920afbaca68d2e3976e883b4fba54f4ba",
      "new_mode": 33188,
      "new_path": "include/uapi/linux/fs.h"
    },
    {
      "type": "modify",
      "old_id": "0ae0df55000bb0cac674159a20ca90345ce0c44c",
      "old_mode": 33188,
      "old_path": "mm/backing-dev.c",
      "new_id": "915feea94c6631a9a9641846e52666683a254acc",
      "new_mode": 33188,
      "new_path": "mm/backing-dev.c"
    }
  ]
}
