)]}'
{
  "commit": "e61c90188b9956edae1105eef361d8981a352fcd",
  "tree": "7de9cc41910c55e32aba0f8cc07f73923b7cb515",
  "parents": [
    "7e913c53609d5e8374f55d6f29c0bcd6650a2362"
  ],
  "author": {
    "name": "Chen, Kenneth W",
    "email": "kenneth.w.chen@intel.com",
    "time": "Wed Dec 13 00:34:36 2006 -0800"
  },
  "committer": {
    "name": "Linus Torvalds",
    "email": "torvalds@woody.osdl.org",
    "time": "Wed Dec 13 09:05:50 2006 -0800"
  },
  "message": "[PATCH] optimize o_direct on block devices\n\nImplement block device specific .direct_IO method instead of going through\ngeneric direct_io_worker for block device.\n\ndirect_io_worker() is fairly complex because it needs to handle O_DIRECT on\nfile system, where it needs to perform block allocation, hole detection,\nextents file on write, and tons of other corner cases.  The end result is\nthat it takes tons of CPU time to submit an I/O.\n\nFor block device, the block allocation is much simpler and a tight triple\nloop can be written to iterate each iovec and each page within the iovec in\norder to construct/prepare bio structure and then subsequently submit it to\nthe block layer.  This significantly speeds up O_D on block device.\n\n[akpm@osdl.org: small speedup]\nSigned-off-by: Ken Chen \u003ckenneth.w.chen@intel.com\u003e\nCc: Christoph Hellwig \u003chch@lst.de\u003e\nCc: Zach Brown \u003czach.brown@oracle.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "7ec737eda72bba71718d433820eae4e0c0d6a489",
      "old_mode": 33188,
      "old_path": "fs/bio.c",
      "new_id": "7618bcb1836848737921c48302359a29a583e23b",
      "new_mode": 33188,
      "new_path": "fs/bio.c"
    },
    {
      "type": "modify",
      "old_id": "197f9392184741809013cd85828e654bb8b1ab14",
      "old_mode": 33188,
      "old_path": "fs/block_dev.c",
      "new_id": "1715d6b5f411a2d6db22c9a38de9cab971e40bf6",
      "new_mode": 33188,
      "new_path": "fs/block_dev.c"
    },
    {
      "type": "modify",
      "old_id": "3372ec6bf53a25d5d65d540008f75bde975e1c13",
      "old_mode": 33188,
      "old_path": "include/linux/aio.h",
      "new_id": "a30ef13c9e622c91bfd7706955758e5932fc639e",
      "new_mode": 33188,
      "new_path": "include/linux/aio.h"
    },
    {
      "type": "modify",
      "old_id": "092dbd0e76586023c76850495c71ca1ab933efc3",
      "old_mode": 33188,
      "old_path": "include/linux/bio.h",
      "new_id": "08daf3272c0283b808cbe75ec48348c3efc8a71e",
      "new_mode": 33188,
      "new_path": "include/linux/bio.h"
    }
  ]
}
