)]}'
{
  "commit": "96029c4e09ccbd73a6d0ed2b29e80bf2586ad7ef",
  "tree": "032d2ac7024250c18487a2c7122af68fe56567ff",
  "parents": [
    "d3ef3d7351ccfbef3e5d926efc5ee332136f40d4"
  ],
  "author": {
    "name": "npiggin@suse.de",
    "email": "npiggin@suse.de",
    "time": "Sun Apr 26 20:25:55 2009 +1000"
  },
  "committer": {
    "name": "Al Viro",
    "email": "viro@zeniv.linux.org.uk",
    "time": "Thu Jun 11 21:36:02 2009 -0400"
  },
  "message": "fs: introduce mnt_clone_write\n\nThis patch speeds up lmbench lat_mmap test by about another 2% after the\nfirst patch.\n\nBefore:\n avg \u003d 462.286\n std \u003d 5.46106\n\nAfter:\n avg \u003d 453.12\n std \u003d 9.58257\n\n(50 runs of each, stddev gives a reasonable confidence)\n\nIt does this by introducing mnt_clone_write, which avoids some heavyweight\noperations of mnt_want_write if called on a vfsmount which we know already\nhas a write count; and mnt_want_write_file, which can call mnt_clone_write\nif the file is open for write.\n\nAfter these two patches, mnt_want_write and mnt_drop_write go from 7% on\nthe profile down to 1.3% (including mnt_clone_write).\n\n[AV: mnt_want_write_file() should take file alone and derive mnt from it;\nnot only all callers have that form, but that\u0027s the only mnt about which\nwe know that it\u0027s already held for write if file is opened for write]\n\nCc: Dave Hansen \u003chaveblue@us.ibm.com\u003e\nSigned-off-by: Nick Piggin \u003cnpiggin@suse.de\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "54018fe488403082ac5274e24a3fee9480fa0a16",
      "old_mode": 33188,
      "old_path": "fs/file_table.c",
      "new_id": "3d66dbcebef6ea5db8780b581e1d8f9d2694e85f",
      "new_mode": 33188,
      "new_path": "fs/file_table.c"
    },
    {
      "type": "modify",
      "old_id": "ca337014ae29481307e098c76beec1b74ac494ab",
      "old_mode": 33188,
      "old_path": "fs/inode.c",
      "new_id": "a88baebf77cf1ffddc62a0f26ce32f48dd09922d",
      "new_mode": 33188,
      "new_path": "fs/inode.c"
    },
    {
      "type": "modify",
      "old_id": "22ae06ad751d96277a0095fb308ea5149d39b5a3",
      "old_mode": 33188,
      "old_path": "fs/namespace.c",
      "new_id": "120b8a6b99ed6579c2124164bc47b689ea7837f7",
      "new_mode": 33188,
      "new_path": "fs/namespace.c"
    },
    {
      "type": "modify",
      "old_id": "bdfbf03615a48e628eb84af186f6343be39b4ee9",
      "old_mode": 33188,
      "old_path": "fs/open.c",
      "new_id": "7200e23d9258ce09a76caacee7f1a71e7b25ce7f",
      "new_mode": 33188,
      "new_path": "fs/open.c"
    },
    {
      "type": "modify",
      "old_id": "d51b8f9db921ce4c01c2858cfc56b9ecd6ca71f5",
      "old_mode": 33188,
      "old_path": "fs/xattr.c",
      "new_id": "1c3d0af59ddf84c7fb51c3f5da52803d2d095e9a",
      "new_mode": 33188,
      "new_path": "fs/xattr.c"
    },
    {
      "type": "modify",
      "old_id": "ac49c1f8e5c098bda178a752458258d8f4e0436d",
      "old_mode": 33188,
      "old_path": "include/linux/mount.h",
      "new_id": "5d5275364867879626d30b4511a7f064a635747f",
      "new_mode": 33188,
      "new_path": "include/linux/mount.h"
    }
  ]
}
