)]}'
{
  "commit": "4ba4d4c0c52201009232fe9e781a281054a24e75",
  "tree": "4b4d47c78c561fc8f3d79713e7f80def3d9b73ce",
  "parents": [
    "0aa5de8590d684274f57647a870851f101bb3543"
  ],
  "author": {
    "name": "Eric Dumazet",
    "email": "dada1@cosmosbay.com",
    "time": "Sat Feb 10 01:44:48 2007 -0800"
  },
  "committer": {
    "name": "Linus Torvalds",
    "email": "torvalds@woody.linux-foundation.org",
    "time": "Sun Feb 11 10:51:25 2007 -0800"
  },
  "message": "[PATCH] struct vfsmount: keep mnt_count \u0026 mnt_expiry_mark away from mnt_flags\n\nI noticed cache misses in touch_atime() that can be avoided if we keep\nmnt_count \u0026 mnt_expiry_mark in a different cache line than mnt_flags\n(mostly read)\n\nmnt_count \u0026 mnt_expiry_mark are modified each time a file is opened/closed\nin a file system.\n\ntouch_atime() is called each time a file is read, and generally needs to\nread mnt_flags.\n\nOther fields of struct vfsmount are mostly read so I chose to move\nmnt_count \u0026 mnt_expiry_mark at the end of struct vfsmount.  And adding a\ncomment so that nobody tries to re-arrange fields to fill the holes :)\n\nOn 64bits platforms, the new offsetof(mnt_count) is 0xC0\nOn 32bits platforms, it is 0x60, so I didnot add a\n____cacheline_aligned_in_smp because it would have a too big impact on the\nsize of this object (in particular if CONFIG_X86_L1_CACHE_SHIFT\u003d7)\n\nSigned-off-by: Eric Dumazet \u003cdada1@cosmosbay.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "1b7e178b0d8472549de308667343b15d4f44aa56",
      "old_mode": 33188,
      "old_path": "include/linux/mount.h",
      "new_id": "dab69afee2fa457b3d6feaf8bda7d3701d71c4ca",
      "new_mode": 33188,
      "new_path": "include/linux/mount.h"
    }
  ]
}
