)]}'
{
  "commit": "0e6e847ffe37436e331c132639f9f872febce82e",
  "tree": "eb440ef910af695eafef787e12badc64fac0f8fe",
  "parents": [
    "704b2907c2d47ceb187c0e25a6bbc2174b198f2f"
  ],
  "author": {
    "name": "Dave Chinner",
    "email": "dchinner@redhat.com",
    "time": "Sat Mar 26 09:16:45 2011 +1100"
  },
  "committer": {
    "name": "Dave Chinner",
    "email": "david@fromorbit.com",
    "time": "Sat Mar 26 09:16:45 2011 +1100"
  },
  "message": "xfs: stop using the page cache to back the buffer cache\n\nNow that the buffer cache has it\u0027s own LRU, we do not need to use\nthe page cache to provide persistent caching and reclaim\ninfrastructure. Convert the buffer cache to use alloc_pages()\ninstead of the page cache. This will remove all the overhead of page\ncache management from setup and teardown of the buffers, as well as\nneeding to mark pages accessed as we find buffers in the buffer\ncache.\n\nBy avoiding the page cache, we also remove the need to keep state in\nthe page_private(page) field for persistant storage across buffer\nfree/buffer rebuild and so all that code can be removed. This also\nfixes the long-standing problem of not having enough bits in the\npage_private field to track all the state needed for a 512\nsector/64k page setup.\n\nIt also removes the need for page locking during reads as the pages\nare unique to the buffer and nobody else will be attempting to\naccess them.\n\nFinally, it removes the buftarg address space lock as a point of\nglobal contention on workloads that allocate and free buffers\nquickly such as when creating or removing large numbers of inodes in\nparallel. This remove the 16TB limit on filesystem size on 32 bit\nmachines as the page index (32 bit) is no longer used for lookups\nof metadata buffers - the buffer cache is now solely indexed by disk\naddress which is stored in a 64 bit field in the buffer.\n\nSigned-off-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nReviewed-by: Alex Elder \u003caelder@sgi.com\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "a5a260fab8241ba7fb4b1555403032bb9d94a693",
      "old_mode": 33188,
      "old_path": "fs/xfs/linux-2.6/xfs_buf.c",
      "new_id": "d45b2cdee6c4f5c1ab6cee5d655bcb7b864657bb",
      "new_mode": 33188,
      "new_path": "fs/xfs/linux-2.6/xfs_buf.c"
    },
    {
      "type": "modify",
      "old_id": "cbe65950e5244bbf750482b0cf9f709032eeb1c0",
      "old_mode": 33188,
      "old_path": "fs/xfs/linux-2.6/xfs_buf.h",
      "new_id": "a9a1c451264513961573fbf2879fbc68c9a68e9a",
      "new_mode": 33188,
      "new_path": "fs/xfs/linux-2.6/xfs_buf.h"
    }
  ]
}
