)]}'
{
  "commit": "89747d369d34e333b9b60f10f333a0b727b4e4e2",
  "tree": "26b55849e666c7f6c7a7312b100756c3b591559f",
  "parents": [
    "e2d53f9525790dfacbcf09f359536311d3913d98"
  ],
  "author": {
    "name": "Mingming Cao",
    "email": "cmm@us.ibm.com",
    "time": "Sun Mar 26 01:37:55 2006 -0800"
  },
  "committer": {
    "name": "Linus Torvalds",
    "email": "torvalds@g5.osdl.org",
    "time": "Sun Mar 26 08:57:00 2006 -0800"
  },
  "message": "[PATCH] ext3_get_blocks: Mapping multiple blocks at a once\n\nCurrently ext3_get_block() only maps or allocates one block at a time.  This\nis quite inefficient for sequential IO workload.\n\nI have posted a early implements a simply multiple block map and allocation\nwith current ext3.  The basic idea is allocating the 1st block in the existing\nway, and attempting to allocate the next adjacent blocks on a best effort\nbasis.  More description about the implementation could be found here:\nhttp://marc.theaimsgroup.com/?l\u003dext2-devel\u0026m\u003d112162230003522\u0026w\u003d2\n\nThe following the latest version of the patch: break the original patch into 5\npatches, re-worked some logicals, and fixed some bugs.  The break ups are:\n\n [patch 1] Adding map multiple blocks at a time in ext3_get_blocks()\n [patch 2] Extend ext3_get_blocks() to support multiple block allocation\n [patch 3] Implement multiple block allocation in ext3-try-to-allocate\n (called via ext3_new_block()).\n [patch 4] Proper accounting updates in ext3_new_blocks()\n [patch 5] Adjust reservation window size properly (by the given number\n of blocks to allocate) before block allocation to increase the\n possibility of allocating multiple blocks in a single call.\n\nTests done so far includes fsx,tiobench and dbench.  The following numbers\ncollected from Direct IO tests (1G file creation/read) shows the system time\nhave been greatly reduced (more than 50% on my 8 cpu system) with the patches.\n\n 1G file DIO write:\n \t2.6.15\t\t2.6.15+patches\n real    0m31.275s\t0m31.161s\n user    0m0.000s\t0m0.000s\n sys     0m3.384s\t0m0.564s\n\n 1G file DIO read:\n \t2.6.15\t\t2.6.15+patches\n real    0m30.733s\t0m30.624s\n user    0m0.000s\t0m0.004s\n sys     0m0.748s\t0m0.380s\n\nSome previous test we did on buffered IO with using multiple blocks allocation\nand delayed allocation shows noticeable improvement on throughput and system\ntime.\n\nThis patch:\n\nAdd support of mapping multiple blocks in one call.\n\nThis is useful for DIO reads and re-writes (where blocks are already\nallocated), also is in line with Christoph\u0027s proposal of using getblocks() in\nmpage_readpage() or mpage_readpages().\n\nSigned-off-by: Mingming Cao \u003ccmm@us.ibm.com\u003e\nCc: Badari Pulavarty \u003cpbadari@us.ibm.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": "773459164bb2cbd1b1641fd367b563d252ad3016",
      "old_mode": 33188,
      "old_path": "fs/ext3/dir.c",
      "new_id": "38bd3f6ec147775474ef3c27a9707fd5d33be5a5",
      "new_mode": 33188,
      "new_path": "fs/ext3/dir.c"
    },
    {
      "type": "modify",
      "old_id": "76e22c9c9c6ce0d02641a00b73537974130d2f37",
      "old_mode": 33188,
      "old_path": "fs/ext3/inode.c",
      "new_id": "fcfb10f771202533b26c1496fa65ea272b46c510",
      "new_mode": 33188,
      "new_path": "fs/ext3/inode.c"
    },
    {
      "type": "modify",
      "old_id": "e7239f2f97a15c1c8b112aa03c7fb87779836231",
      "old_mode": 33188,
      "old_path": "include/linux/ext3_fs.h",
      "new_id": "0adadd85fa6694d7b91d23629ba33b08d0c1d02b",
      "new_mode": 33188,
      "new_path": "include/linux/ext3_fs.h"
    }
  ]
}
