)]}'
{
  "log": [
    {
      "commit": "8e775167d54e6521e7cdbc03ee7ec42a8c67b49a",
      "tree": "a49914306fb28505c6e21a456df8bdc40d6eac23",
      "parents": [
        "4b37ba90f49d4157ac5628f8d730d3505f176724",
        "f253b86b4ad1b3220544e75880510fd455ebd23f"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Oct 25 07:45:10 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Oct 25 07:45:10 2010 -0700"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.dk/linux-2.6-block\n\n* \u0027for-linus\u0027 of git://git.kernel.dk/linux-2.6-block:\n  Revert \"block: fix accounting bug on cross partition merges\"\n"
    },
    {
      "commit": "229aebb873e29726b91e076161649cf45154b0bf",
      "tree": "acc02a3702215bce8d914f4c8cc3d7a1382b1c67",
      "parents": [
        "8de547e1824437f3c6af180d3ed2162fa4b3f389",
        "50a23e6eec6f20d55a3a920e47adb455bff6046e"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Oct 24 13:41:39 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Oct 24 13:41:39 2010 -0700"
      },
      "message": "Merge branch \u0027for-next\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial\n\n* \u0027for-next\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial: (39 commits)\n  Update broken web addresses in arch directory.\n  Update broken web addresses in the kernel.\n  Revert \"drivers/usb: Remove unnecessary return\u0027s from void functions\" for musb gadget\n  Revert \"Fix typo: configuation \u003d\u003e configuration\" partially\n  ida: document IDA_BITMAP_LONGS calculation\n  ext2: fix a typo on comment in ext2/inode.c\n  drivers/scsi: Remove unnecessary casts of private_data\n  drivers/s390: Remove unnecessary casts of private_data\n  net/sunrpc/rpc_pipe.c: Remove unnecessary casts of private_data\n  drivers/infiniband: Remove unnecessary casts of private_data\n  drivers/gpu/drm: Remove unnecessary casts of private_data\n  kernel/pm_qos_params.c: Remove unnecessary casts of private_data\n  fs/ecryptfs: Remove unnecessary casts of private_data\n  fs/seq_file.c: Remove unnecessary casts of private_data\n  arm: uengine.c: remove C99 comments\n  arm: scoop.c: remove C99 comments\n  Fix typo configue \u003d\u003e configure in comments\n  Fix typo: configuation \u003d\u003e configuration\n  Fix typo interrest[ing|ed] \u003d\u003e interest[ing|ed]\n  Fix various typos of valid in comments\n  ...\n\nFix up trivial conflicts in:\n\tdrivers/char/ipmi/ipmi_si_intf.c\n\tdrivers/usb/gadget/rndis.c\n\tnet/irda/irnet/irnet_ppp.c\n"
    },
    {
      "commit": "f253b86b4ad1b3220544e75880510fd455ebd23f",
      "tree": "cc2dd76b8ffc8df4356c1e95bd15276169dd335e",
      "parents": [
        "35da7a307c535f9c2929cae277f3df425c9f9b1e"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Sun Oct 24 22:06:02 2010 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Sun Oct 24 22:06:02 2010 +0200"
      },
      "message": "Revert \"block: fix accounting bug on cross partition merges\"\n\nThis reverts commit 7681bfeeccff5efa9eb29bf09249a3c400b15327.\n\nConflicts:\n\n\tinclude/linux/genhd.h\n\nIt has numerous issues with the cleanup path and non-elevator\ndevices. Revert it for now so we can come up with a clean\nversion without rushing things.\n\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "7ad58c028652753814054f4e3ac58f925e7343f4",
      "tree": "2e3bc1c5e3c98078b970483cd49a49d7c1ae0dcf",
      "parents": [
        "7f3883962870dd28b5f2322ac44a9d03640ef448"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Sat Oct 23 20:40:26 2010 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Sat Oct 23 20:40:26 2010 +0200"
      },
      "message": "block: fix use-after-free bug in blk throttle code\n\nblk_throtl_exit() frees the throttle data hanging off the queue\nin blk_cleanup_queue(), but blk_put_queue() will indirectly\ndereference this data when calling blk_sync_queue() which in\nturns calls throtl_shutdown_timer_wq().\n\nFix this by moving the freeing of the throttle data to when\nthe queue is truly being released, and post the call to\nblk_sync_queue().\n\nReported-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nTested-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "b9da0571050c09863e59f94d0b8594a290d61b88",
      "tree": "3632c4fee768db9a27a5c872bd42133692e2f3d0",
      "parents": [
        "f8cae0f03f75adb54b1d48ddbc90f84a1f5de186",
        "5abd935661e01289ba143c3b2c1ba300c65bcc5f"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Oct 22 19:36:42 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Oct 22 19:36:42 2010 -0700"
      },
      "message": "Merge git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/driver-core-2.6\n\n* git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/driver-core-2.6: (31 commits)\n  driver core: Display error codes when class suspend fails\n  Driver core: Add section count to memory_block struct\n  Driver core: Add mutex for adding/removing memory blocks\n  Driver core: Move find_memory_block routine\n  hpilo: Despecificate driver from iLO generation\n  driver core: Convert link_mem_sections to use find_memory_block_hinted.\n  driver core: Introduce find_memory_block_hinted which utilizes kset_find_obj_hinted.\n  kobject: Introduce kset_find_obj_hinted.\n  driver core: fix build for CONFIG_BLOCK not enabled\n  driver-core: base: change to new flag variable\n  sysfs: only access bin file vm_ops with the active lock\n  sysfs: Fail bin file mmap if vma close is implemented.\n  FW_LOADER: fix kconfig dependency warning on HOTPLUG\n  uio: Statically allocate uio_class and use class .dev_attrs.\n  uio: Support 2^MINOR_BITS minors\n  uio: Cleanup irq handling.\n  uio: Don\u0027t clear driver data\n  uio: Fix lack of locking in init_uio_class\n  SYSFS: Allow boot time switching between deprecated and modern sysfs layout\n  driver core: remove CONFIG_SYSFS_DEPRECATED_V2 but keep it for block devices\n  ...\n"
    },
    {
      "commit": "a2887097f25cd38cadfc11d10769e2b349fb5eca",
      "tree": "cd4adcb305365d6ba9acd2c02d4eb9d0125c6f8d",
      "parents": [
        "8abfc6e7a45eb74e51904bbae676fae008b11366",
        "005a1d15f5a6b2bb4ada80349513effbf22b4588"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Oct 22 17:07:18 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Oct 22 17:07:18 2010 -0700"
      },
      "message": "Merge branch \u0027for-2.6.37/barrier\u0027 of git://git.kernel.dk/linux-2.6-block\n\n* \u0027for-2.6.37/barrier\u0027 of git://git.kernel.dk/linux-2.6-block: (46 commits)\n  xen-blkfront: disable barrier/flush write support\n  Added blk-lib.c and blk-barrier.c was renamed to blk-flush.c\n  block: remove BLKDEV_IFL_WAIT\n  aic7xxx_old: removed unused \u0027req\u0027 variable\n  block: remove the BH_Eopnotsupp flag\n  block: remove the BLKDEV_IFL_BARRIER flag\n  block: remove the WRITE_BARRIER flag\n  swap: do not send discards as barriers\n  fat: do not send discards as barriers\n  ext4: do not send discards as barriers\n  jbd2: replace barriers with explicit flush / FUA usage\n  jbd2: Modify ASYNC_COMMIT code to not rely on queue draining on barrier\n  jbd: replace barriers with explicit flush / FUA usage\n  nilfs2: replace barriers with explicit flush / FUA usage\n  reiserfs: replace barriers with explicit flush / FUA usage\n  gfs2: replace barriers with explicit flush / FUA usage\n  btrfs: replace barriers with explicit flush / FUA usage\n  xfs: replace barriers with explicit flush / FUA usage\n  block: pass gfp_mask and flags to sb_issue_discard\n  dm: convey that all flushes are processed as empty\n  ...\n"
    },
    {
      "commit": "e9dd2b6837e26fe202708cce5ea4bb4ee3e3482e",
      "tree": "f42fd892495bfc4cbb740d06b016d267c9c42d00",
      "parents": [
        "4f3a29dadaf999a273f1e7fe2476595d0283eef3",
        "b4627321e18582dcbdeb45d77df29d3177107c65"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Oct 22 17:00:32 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Oct 22 17:00:32 2010 -0700"
      },
      "message": "Merge branch \u0027for-2.6.37/core\u0027 of git://git.kernel.dk/linux-2.6-block\n\n* \u0027for-2.6.37/core\u0027 of git://git.kernel.dk/linux-2.6-block: (39 commits)\n  cfq-iosched: Fix a gcc 4.5 warning and put some comments\n  block: Turn bvec_k{un,}map_irq() into static inline functions\n  block: fix accounting bug on cross partition merges\n  block: Make the integrity mapped property a bio flag\n  block: Fix double free in blk_integrity_unregister\n  block: Ensure physical block size is unsigned int\n  blkio-throttle: Fix possible multiplication overflow in iops calculations\n  blkio-throttle: limit max iops value to UINT_MAX\n  blkio-throttle: There is no need to convert jiffies to milli seconds\n  blkio-throttle: Fix link failure failure on i386\n  blkio: Recalculate the throttled bio dispatch time upon throttle limit change\n  blkio: Add root group to td-\u003etg_list\n  blkio: deletion of a cgroup was causes oops\n  blkio: Do not export throttle files if CONFIG_BLK_DEV_THROTTLING\u003dn\n  block: set the bounce_pfn to the actual DMA limit rather than to max memory\n  block: revert bad fix for memory hotplug causing bounces\n  Fix compile error in blk-exec.c for !CONFIG_DETECT_HUNG_TASK\n  block: set the bounce_pfn to the actual DMA limit rather than to max memory\n  block: Prevent hang_check firing during long I/O\n  cfq: improve fsync performance for small files\n  ...\n\nFix up trivial conflicts due to __rcu sparse annotation in include/linux/genhd.h\n"
    },
    {
      "commit": "092e0e7e520a1fca03e13c9f2d157432a8657ff2",
      "tree": "451897252c4c08c4b5a8ef535da156f1e817e80b",
      "parents": [
        "79f14b7c56d3b3ba58f8b43d1f70b9b71477a800",
        "776c163b1b93c8dfa5edba885bc2bfbc2d228a5f"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Oct 22 10:52:56 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Oct 22 10:52:56 2010 -0700"
      },
      "message": "Merge branch \u0027llseek\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/arnd/bkl\n\n* \u0027llseek\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/arnd/bkl:\n  vfs: make no_llseek the default\n  vfs: don\u0027t use BKL in default_llseek\n  llseek: automatically add .llseek fop\n  libfs: use generic_file_llseek for simple_attr\n  mac80211: disallow seeks in minstrel debug code\n  lirc: make chardev nonseekable\n  viotape: use noop_llseek\n  raw: use explicit llseek file operations\n  ibmasmfs: use generic_file_llseek\n  spufs: use llseek in all file operations\n  arm/omap: use generic_file_llseek in iommu_debug\n  lkdtm: use generic_file_llseek in debugfs\n  net/wireless: use generic_file_llseek in debugfs\n  drm: use noop_llseek\n"
    },
    {
      "commit": "c37927d4359e81b85de644f8fb08878717cf5f3f",
      "tree": "25dabf2d905e1410819d1bdaba0bf5f779100d3c",
      "parents": [
        "5704e44d283e907623e3775c1262f206a2c48cf3",
        "2a48fc0ab24241755dc93bfd4f01d68efab47f5a"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Oct 22 10:49:54 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Oct 22 10:49:54 2010 -0700"
      },
      "message": "Merge branch \u0027trivial\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/arnd/bkl\n\n* \u0027trivial\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/arnd/bkl:\n  block: autoconvert trivial BKL users to private mutex\n  drivers: autoconvert trivial BKL users to private mutex\n  ipmi: autoconvert trivial BKL users to private mutex\n  mac: autoconvert trivial BKL users to private mutex\n  mtd: autoconvert trivial BKL users to private mutex\n  scsi: autoconvert trivial BKL users to private mutex\n\nFix up trivial conflicts (due to addition of private mutex right next to\ndeletion of a version string) in drivers/char/pcmcia/cm40[04]0_cs.c\n"
    },
    {
      "commit": "e52eec13cd6b7f30ab19081b387813e03e592ae5",
      "tree": "7b327e0b9283c578fb10922edcf6e10b3b8fd943",
      "parents": [
        "39aba963d937edb20db7d9d93e6dda5d2adfdcdd"
      ],
      "author": {
        "name": "Andi Kleen",
        "email": "ak@linux.intel.com",
        "time": "Wed Sep 08 16:54:17 2010 +0200"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@suse.de",
        "time": "Fri Oct 22 10:16:43 2010 -0700"
      },
      "message": "SYSFS: Allow boot time switching between deprecated and modern sysfs layout\n\nI have some systems which need legacy sysfs due to old tools that are\nmaking assumptions that a directory can never be a symlink to another\ndirectory, and it\u0027s a big hazzle to compile separate kernels for them.\n\nThis patch turns CONFIG_SYSFS_DEPRECATED into a run time option\nthat can be switched on/off the kernel command line. This way\nthe same binary can be used in both cases with just a option\non the command line.\n\nThe old CONFIG_SYSFS_DEPRECATED_V2 option is still there to set\nthe default. I kept the weird name to not break existing\nconfig files.\n\nAlso the compat code can be still completely disabled by undefining\nCONFIG_SYSFS_DEPRECATED_SWITCH -- just the optimizer takes\ncare of this now instead of lots of ifdefs. This makes the code\nlook nicer.\n\nv2: This is an updated version on top of Kay\u0027s patch to only\nhandle the block devices. I tested it on my old systems\nand that seems to work.\n\nCc: axboe@kernel.dk\nSigned-off-by: Andi Kleen \u003cak@linux.intel.com\u003e\nCc: Kay Sievers \u003ckay.sievers@vrfy.org\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@suse.de\u003e\n\n"
    },
    {
      "commit": "b4627321e18582dcbdeb45d77df29d3177107c65",
      "tree": "f494dae7f39f219d73aa9752dfd3844293d65f50",
      "parents": [
        "11a691bea48887c27425cc40bf291e74c922df25"
      ],
      "author": {
        "name": "Vivek Goyal",
        "email": "vgoyal@redhat.com",
        "time": "Fri Oct 22 09:48:43 2010 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Fri Oct 22 09:48:43 2010 +0200"
      },
      "message": "cfq-iosched: Fix a gcc 4.5 warning and put some comments\n\n- Andi encountedred following warning with gcc 4.5\n\n  linux/block/cfq-iosched.c: In function ‘cfq_dispatch_requests’:\n  linux/block/cfq-iosched.c:2156:3: warning: array subscript is above array\n  bounds\n\n- Warning happens due to following code.\n\n  slice \u003d group_slice * count /\n\t\tmax_t(unsigned, cfqg-\u003ebusy_queues_avg[cfqd-\u003eserving_prio],\n\t\tcfq_group_busy_queues_wl(cfqd-\u003eserving_prio, cfqd, cfqg));\n\n  gcc is complaining about cfqg-\u003ebusy_queues_avg[] being indexed by CFQ\n  prio classes (RT, BE and IDLE) while the array size is only 2.\n\n- At run time, we never access cfqg-\u003ebusy_queues_avg[IDLE] and return from\n  function before this code hits.\n\n- To fix warning increase the array size though it will remain unused. This\n  patch also puts some comments to clarify some of the confusions.\n\n- I have taken Jens\u0027s patch and modified it a bit.\n\n- Compile tested with gcc 4.4 and boot tested. I don\u0027t have gcc 4.5\n  running, Andi can you please test it with gcc 4.5 to make sure it\n  worked.\n\nReported-by: Andi Kleen \u003cak@linux.intel.com\u003e\nSigned-off-by: Vivek Goyal \u003cvgoyal@redhat.com\u003e\nAcked-by: Jeff Moyer \u003cjmoyer@redhat.com\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "30c278192f9ab06125fb042f6e46763e0fd7140a",
      "tree": "eb457072fec9bed01d89a71ab61257785a24a66a",
      "parents": [
        "ef2533dae5a93527f2aac9449c0b1564c5ed2c2f",
        "478971600e47cb83ff2d3c63c5c24f2b04b0d6a1"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Oct 20 13:13:09 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Oct 20 13:13:09 2010 -0700"
      },
      "message": "Merge git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi-rc-fixes-2.6\n\n* git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi-rc-fixes-2.6:\n  [SCSI] bsg: fix incorrect device_status value\n  [SCSI] Fix VPD inquiry page wrapper\n"
    },
    {
      "commit": "fa251f89903d73989e2f63e13d0eaed1e07ce0da",
      "tree": "3f7fe779941e3b6d67754dd7c44a32f48ea47c74",
      "parents": [
        "dd3932eddf428571762596e17b65f5dc92ca361b",
        "cd07202cc8262e1669edff0d97715f3dd9260917"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Tue Oct 19 09:13:04 2010 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Tue Oct 19 09:13:04 2010 +0200"
      },
      "message": "Merge branch \u0027v2.6.36-rc8\u0027 into for-2.6.37/barrier\n\nConflicts:\n\tblock/blk-core.c\n\tdrivers/block/loop.c\n\tmm/swapfile.c\n\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "7681bfeeccff5efa9eb29bf09249a3c400b15327",
      "tree": "8557964a2df96e253dcf1a61734b98dbfbf192d6",
      "parents": [
        "495d2b3883682fcd1c3dee3a45e38fd00154ae25"
      ],
      "author": {
        "name": "Yasuaki Ishimatsu",
        "email": "isimatu.yasuaki@jp.fujitsu.com",
        "time": "Tue Oct 19 09:05:00 2010 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Tue Oct 19 09:07:02 2010 +0200"
      },
      "message": "block: fix accounting bug on cross partition merges\n\n/proc/diskstats would display a strange output as follows.\n\n$ cat /proc/diskstats |grep sda\n   8       0 sda 90524 7579 102154 20464 0 0 0 0 0 14096 20089\n   8       1 sda1 19085 1352 21841 4209 0 0 0 0 4294967064 15689 4293424691\n                                                ~~~~~~~~~~\n   8       2 sda2 71252 3624 74891 15950 0 0 0 0 232 23995 1562390\n   8       3 sda3 54 487 2188 92 0 0 0 0 0 88 92\n   8       4 sda4 4 0 8 0 0 0 0 0 0 0 0\n   8       5 sda5 81 2027 2130 138 0 0 0 0 0 87 137\n\nIts reason is the wrong way of accounting hd_struct-\u003ein_flight. When a bio is\nmerged into a request belongs to different partition by ELEVATOR_FRONT_MERGE.\n\nThe detailed root cause is as follows.\n\nAssuming that there are two partition, sda1 and sda2.\n\n1. A request for sda2 is in request_queue. Hence sda1\u0027s hd_struct-\u003ein_flight\n   is 0 and sda2\u0027s one is 1.\n\n        | hd_struct-\u003ein_flight\n   ---------------------------\n   sda1 |          0\n   sda2 |          1\n   ---------------------------\n\n2. A bio belongs to sda1 is issued and is merged into the request mentioned on\n   step1 by ELEVATOR_BACK_MERGE. The first sector of the request is changed\n   from sda2 region to sda1 region. However the two partition\u0027s\n   hd_struct-\u003ein_flight are not changed.\n\n        | hd_struct-\u003ein_flight\n   ---------------------------\n   sda1 |          0\n   sda2 |          1\n   ---------------------------\n\n3. The request is finished and blk_account_io_done() is called. In this case,\n   sda2\u0027s hd_struct-\u003ein_flight, not a sda1\u0027s one, is decremented.\n\n        | hd_struct-\u003ein_flight\n   ---------------------------\n   sda1 |         -1\n   sda2 |          1\n   ---------------------------\n\nThe patch fixes the problem by caching the partition lookup\ninside the request structure, hence making sure that the increment\nand decrement will always happen on the same partition struct. This\nalso speeds up IO with accounting enabled, since it cuts down on\nthe number of lookups we have to do.\n\nWhen reloading partition tables, quiesce IO to ensure that no\nrequest references to the partition struct exists. When it is safe\nto free the partition table, the IO for that device is restarted\nagain.\n\nSigned-off-by: Yasuaki Ishimatsu \u003cisimatu.yasuaki@jp.fujitsu.com\u003e\nCc: stable@kernel.org\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "478971600e47cb83ff2d3c63c5c24f2b04b0d6a1",
      "tree": "8a426c30523aa558249bc8e4844b757af6ac1b96",
      "parents": [
        "16d3ea26f82271fef9b1c4523b5e1ea31fa39eec"
      ],
      "author": {
        "name": "FUJITA Tomonori",
        "email": "fujita.tomonori@lab.ntt.co.jp",
        "time": "Fri Sep 17 00:46:42 2010 +0900"
      },
      "committer": {
        "name": "James Bottomley",
        "email": "James.Bottomley@suse.de",
        "time": "Fri Oct 15 10:18:48 2010 -0400"
      },
      "message": "[SCSI] bsg: fix incorrect device_status value\n\nbsg incorrectly returns sg\u0027s masked_status value for device_status.\n\n[jejb: fix up expression logic]\nReported-by: Douglas Gilbert \u003cdgilbert@interlog.com\u003e\nSigned-off-by: FUJITA Tomonori \u003cfujita.tomonori@lab.ntt.co.jp\u003e\nCc: Stable Tree \u003cstable@kernel.org\u003e\nSigned-off-by: James Bottomley \u003cJames.Bottomley@suse.de\u003e\n"
    },
    {
      "commit": "6038f373a3dc1f1c26496e60b6c40b164716f07e",
      "tree": "a0d3bbd026eea41b9fc36b8c722cbaf56cd9f825",
      "parents": [
        "1ec5584e3edf9c4bf2c88c846534d19cf986ba11"
      ],
      "author": {
        "name": "Arnd Bergmann",
        "email": "arnd@arndb.de",
        "time": "Sun Aug 15 18:52:59 2010 +0200"
      },
      "committer": {
        "name": "Arnd Bergmann",
        "email": "arnd@arndb.de",
        "time": "Fri Oct 15 15:53:27 2010 +0200"
      },
      "message": "llseek: automatically add .llseek fop\n\nAll file_operations should get a .llseek operation so we can make\nnonseekable_open the default for future file operations without a\n.llseek pointer.\n\nThe three cases that we can automatically detect are no_llseek, seq_lseek\nand default_llseek. For cases where we can we can automatically prove that\nthe file offset is always ignored, we use noop_llseek, which maintains\nthe current behavior of not returning an error from a seek.\n\nNew drivers should normally not use noop_llseek but instead use no_llseek\nand call nonseekable_open at open time.  Existing drivers can be converted\nto do the same when the maintainer knows for certain that no user code\nrelies on calling seek on the device file.\n\nThe generated code is often incorrectly indented and right now contains\ncomments that clarify for each added line why a specific variant was\nchosen. In the version that gets submitted upstream, the comments will\nbe gone and I will manually fix the indentation, because there does not\nseem to be a way to do that using coccinelle.\n\nSome amount of new code is currently sitting in linux-next that should get\nthe same modifications, which I will do at the end of the merge window.\n\nMany thanks to Julia Lawall for helping me learn to write a semantic\npatch that does all this.\n\n\u003d\u003d\u003d\u003d\u003d begin semantic patch \u003d\u003d\u003d\u003d\u003d\n// This adds an llseek\u003d method to all file operations,\n// as a preparation for making no_llseek the default.\n//\n// The rules are\n// - use no_llseek explicitly if we do nonseekable_open\n// - use seq_lseek for sequential files\n// - use default_llseek if we know we access f_pos\n// - use noop_llseek if we know we don\u0027t access f_pos,\n//   but we still want to allow users to call lseek\n//\n@ open1 exists @\nidentifier nested_open;\n@@\nnested_open(...)\n{\n\u003c+...\nnonseekable_open(...)\n...+\u003e\n}\n\n@ open exists@\nidentifier open_f;\nidentifier i, f;\nidentifier open1.nested_open;\n@@\nint open_f(struct inode *i, struct file *f)\n{\n\u003c+...\n(\nnonseekable_open(...)\n|\nnested_open(...)\n)\n...+\u003e\n}\n\n@ read disable optional_qualifier exists @\nidentifier read_f;\nidentifier f, p, s, off;\ntype ssize_t, size_t, loff_t;\nexpression E;\nidentifier func;\n@@\nssize_t read_f(struct file *f, char *p, size_t s, loff_t *off)\n{\n\u003c+...\n(\n   *off \u003d E\n|\n   *off +\u003d E\n|\n   func(..., off, ...)\n|\n   E \u003d *off\n)\n...+\u003e\n}\n\n@ read_no_fpos disable optional_qualifier exists @\nidentifier read_f;\nidentifier f, p, s, off;\ntype ssize_t, size_t, loff_t;\n@@\nssize_t read_f(struct file *f, char *p, size_t s, loff_t *off)\n{\n... when !\u003d off\n}\n\n@ write @\nidentifier write_f;\nidentifier f, p, s, off;\ntype ssize_t, size_t, loff_t;\nexpression E;\nidentifier func;\n@@\nssize_t write_f(struct file *f, const char *p, size_t s, loff_t *off)\n{\n\u003c+...\n(\n  *off \u003d E\n|\n  *off +\u003d E\n|\n  func(..., off, ...)\n|\n  E \u003d *off\n)\n...+\u003e\n}\n\n@ write_no_fpos @\nidentifier write_f;\nidentifier f, p, s, off;\ntype ssize_t, size_t, loff_t;\n@@\nssize_t write_f(struct file *f, const char *p, size_t s, loff_t *off)\n{\n... when !\u003d off\n}\n\n@ fops0 @\nidentifier fops;\n@@\nstruct file_operations fops \u003d {\n ...\n};\n\n@ has_llseek depends on fops0 @\nidentifier fops0.fops;\nidentifier llseek_f;\n@@\nstruct file_operations fops \u003d {\n...\n .llseek \u003d llseek_f,\n...\n};\n\n@ has_read depends on fops0 @\nidentifier fops0.fops;\nidentifier read_f;\n@@\nstruct file_operations fops \u003d {\n...\n .read \u003d read_f,\n...\n};\n\n@ has_write depends on fops0 @\nidentifier fops0.fops;\nidentifier write_f;\n@@\nstruct file_operations fops \u003d {\n...\n .write \u003d write_f,\n...\n};\n\n@ has_open depends on fops0 @\nidentifier fops0.fops;\nidentifier open_f;\n@@\nstruct file_operations fops \u003d {\n...\n .open \u003d open_f,\n...\n};\n\n// use no_llseek if we call nonseekable_open\n////////////////////////////////////////////\n@ nonseekable1 depends on !has_llseek \u0026\u0026 has_open @\nidentifier fops0.fops;\nidentifier nso ~\u003d \"nonseekable_open\";\n@@\nstruct file_operations fops \u003d {\n...  .open \u003d nso, ...\n+.llseek \u003d no_llseek, /* nonseekable */\n};\n\n@ nonseekable2 depends on !has_llseek @\nidentifier fops0.fops;\nidentifier open.open_f;\n@@\nstruct file_operations fops \u003d {\n...  .open \u003d open_f, ...\n+.llseek \u003d no_llseek, /* open uses nonseekable */\n};\n\n// use seq_lseek for sequential files\n/////////////////////////////////////\n@ seq depends on !has_llseek @\nidentifier fops0.fops;\nidentifier sr ~\u003d \"seq_read\";\n@@\nstruct file_operations fops \u003d {\n...  .read \u003d sr, ...\n+.llseek \u003d seq_lseek, /* we have seq_read */\n};\n\n// use default_llseek if there is a readdir\n///////////////////////////////////////////\n@ fops1 depends on !has_llseek \u0026\u0026 !nonseekable1 \u0026\u0026 !nonseekable2 \u0026\u0026 !seq @\nidentifier fops0.fops;\nidentifier readdir_e;\n@@\n// any other fop is used that changes pos\nstruct file_operations fops \u003d {\n... .readdir \u003d readdir_e, ...\n+.llseek \u003d default_llseek, /* readdir is present */\n};\n\n// use default_llseek if at least one of read/write touches f_pos\n/////////////////////////////////////////////////////////////////\n@ fops2 depends on !fops1 \u0026\u0026 !has_llseek \u0026\u0026 !nonseekable1 \u0026\u0026 !nonseekable2 \u0026\u0026 !seq @\nidentifier fops0.fops;\nidentifier read.read_f;\n@@\n// read fops use offset\nstruct file_operations fops \u003d {\n... .read \u003d read_f, ...\n+.llseek \u003d default_llseek, /* read accesses f_pos */\n};\n\n@ fops3 depends on !fops1 \u0026\u0026 !fops2 \u0026\u0026 !has_llseek \u0026\u0026 !nonseekable1 \u0026\u0026 !nonseekable2 \u0026\u0026 !seq @\nidentifier fops0.fops;\nidentifier write.write_f;\n@@\n// write fops use offset\nstruct file_operations fops \u003d {\n... .write \u003d write_f, ...\n+\t.llseek \u003d default_llseek, /* write accesses f_pos */\n};\n\n// Use noop_llseek if neither read nor write accesses f_pos\n///////////////////////////////////////////////////////////\n\n@ fops4 depends on !fops1 \u0026\u0026 !fops2 \u0026\u0026 !fops3 \u0026\u0026 !has_llseek \u0026\u0026 !nonseekable1 \u0026\u0026 !nonseekable2 \u0026\u0026 !seq @\nidentifier fops0.fops;\nidentifier read_no_fpos.read_f;\nidentifier write_no_fpos.write_f;\n@@\n// write fops use offset\nstruct file_operations fops \u003d {\n...\n .write \u003d write_f,\n .read \u003d read_f,\n...\n+.llseek \u003d noop_llseek, /* read and write both use no f_pos */\n};\n\n@ depends on has_write \u0026\u0026 !has_read \u0026\u0026 !fops1 \u0026\u0026 !fops2 \u0026\u0026 !has_llseek \u0026\u0026 !nonseekable1 \u0026\u0026 !nonseekable2 \u0026\u0026 !seq @\nidentifier fops0.fops;\nidentifier write_no_fpos.write_f;\n@@\nstruct file_operations fops \u003d {\n... .write \u003d write_f, ...\n+.llseek \u003d noop_llseek, /* write uses no f_pos */\n};\n\n@ depends on has_read \u0026\u0026 !has_write \u0026\u0026 !fops1 \u0026\u0026 !fops2 \u0026\u0026 !has_llseek \u0026\u0026 !nonseekable1 \u0026\u0026 !nonseekable2 \u0026\u0026 !seq @\nidentifier fops0.fops;\nidentifier read_no_fpos.read_f;\n@@\nstruct file_operations fops \u003d {\n... .read \u003d read_f, ...\n+.llseek \u003d noop_llseek, /* read uses no f_pos */\n};\n\n@ depends on !has_read \u0026\u0026 !has_write \u0026\u0026 !fops1 \u0026\u0026 !fops2 \u0026\u0026 !has_llseek \u0026\u0026 !nonseekable1 \u0026\u0026 !nonseekable2 \u0026\u0026 !seq @\nidentifier fops0.fops;\n@@\nstruct file_operations fops \u003d {\n...\n+.llseek \u003d noop_llseek, /* no read or write fn */\n};\n\u003d\u003d\u003d\u003d\u003d End semantic patch \u003d\u003d\u003d\u003d\u003d\n\nSigned-off-by: Arnd Bergmann \u003carnd@arndb.de\u003e\nCc: Julia Lawall \u003cjulia@diku.dk\u003e\nCc: Christoph Hellwig \u003chch@infradead.org\u003e\n"
    },
    {
      "commit": "e817bf3f68f55e7307c3e9abe5f32d0c05c83988",
      "tree": "0280cb83bb13b00d64af3cfc5960fcdd2a5343ba",
      "parents": [
        "892b6f90db81cccb723d5d92f4fddc2d68b206e1"
      ],
      "author": {
        "name": "Martin K. Petersen",
        "email": "martin.petersen@oracle.com",
        "time": "Fri Oct 15 15:49:18 2010 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Fri Oct 15 15:49:18 2010 +0200"
      },
      "message": "block: Fix double free in blk_integrity_unregister\n\nCommit 3839e4b introduced a kobject_put but failed to remove the\nkmem_cache_free beneath it, leading to a double free.\n\nSigned-off-by: Martin K. Petersen \u003cmartin.petersen@oracle.com\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "892b6f90db81cccb723d5d92f4fddc2d68b206e1",
      "tree": "a4cedbff388c2cc0659c76f429003b856ef17943",
      "parents": [
        "c49c06e4960949a9bced708858433fcf6ca36a9c"
      ],
      "author": {
        "name": "Martin K. Petersen",
        "email": "martin.petersen@oracle.com",
        "time": "Wed Oct 13 21:18:03 2010 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Wed Oct 13 21:19:12 2010 +0200"
      },
      "message": "block: Ensure physical block size is unsigned int\n\nPhysical block size was declared unsigned int to accomodate the maximum\nsize reported by READ CAPACITY(16).  Make sure we use the right type in\nthe related functions.\n\nSigned-off-by: Martin K. Petersen \u003cmartin.petersen@oracle.com\u003e\nAcked-by: Mike Snitzer \u003csnitzer@redhat.com\u003e\nCc: stable@kernel.org\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "430c62fb2948d964cf8dc7f3e2f69623c04ef62f",
      "tree": "79923717e1694745def152baec1a4cc09a5d072c",
      "parents": [
        "cb655d0f3d57c23db51b981648e452988c0223f9"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Thu Oct 07 09:35:16 2010 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Thu Oct 07 09:35:16 2010 +0200"
      },
      "message": "elevator: fix oops on early call to elevator_change()\n\n2.6.36 introduces an API for drivers to switch the IO scheduler\ninstead of manually calling the elevator exit and init functions.\nThis API was added since q-\u003eelevator must be cleared in between\nthose two calls. And since we already have this functionality\ndirectly from use by the sysfs interface to switch schedulers\nonline, it was prudent to reuse it internally too.\n\nBut this API needs the queue to be in a fully initialized state\nbefore it is called, or it will attempt to unregister elevator\nkobjects before they have been added. This results in an oops\nlike this:\n\nBUG: unable to handle kernel NULL pointer dereference at 0000000000000051\nIP: [\u003cffffffff8116f15e\u003e] sysfs_create_dir+0x2e/0xc0\nPGD 47ddfc067 PUD 47c6a1067 PMD 0\nOops: 0000 [#1] PREEMPT SMP\nlast sysfs file: /sys/devices/pci0000:00/0000:00:02.0/0000:04:00.1/irq\nCPU 2\nModules linked in: t(+) loop hid_apple usbhid ahci ehci_hcd uhci_hcd libahci usbcore nls_base igb\n\nPid: 7319, comm: modprobe Not tainted 2.6.36-rc6+ #132 QSSC-S4R/QSSC-S4R\nRIP: 0010:[\u003cffffffff8116f15e\u003e]  [\u003cffffffff8116f15e\u003e] sysfs_create_dir+0x2e/0xc0\nRSP: 0018:ffff88027da25d08  EFLAGS: 00010246\nRAX: ffff88047c68c528 RBX: 00000000fffffffe RCX: 0000000000000000\nRDX: 000000000000002f RSI: 000000000000002f RDI: ffff88047e196c88\nRBP: ffff88027da25d38 R08: 0000000000000000 R09: d84156c5635688c0\nR10: d84156c5635688c0 R11: 0000000000000000 R12: ffff88047e196c88\nR13: 0000000000000000 R14: 0000000000000000 R15: ffff88047c68c528\nFS:  00007fcb0b26f6e0(0000) GS:ffff880287400000(0000) knlGS:0000000000000000\nCS:  0010 DS: 0000 ES: 0000 CR0: 000000008005003b\nCR2: 0000000000000051 CR3: 000000047e76e000 CR4: 00000000000006e0\nDR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000\nDR3: 0000000000000000 DR6: 00000000ffff0ff0 DR7: 0000000000000400\nProcess modprobe (pid: 7319, threadinfo ffff88027da24000, task ffff88027d377090)\nStack:\n ffff88027da25d58 ffff88047c68c528 00000000fffffffe ffff88047e196c88\n\u003c0\u003e ffff88047c68c528 ffff88047e05bd90 ffff88027da25d78 ffffffff8123fb77\n\u003c0\u003e ffff88047e05bd90 0000000000000000 ffff88047e196c88 ffff88047c68c528\nCall Trace:\n [\u003cffffffff8123fb77\u003e] kobject_add_internal+0xe7/0x1f0\n [\u003cffffffff8123fd98\u003e] kobject_add_varg+0x38/0x60\n [\u003cffffffff8123feb9\u003e] kobject_add+0x69/0x90\n [\u003cffffffff8116efe0\u003e] ? sysfs_remove_dir+0x20/0xa0\n [\u003cffffffff8103d48d\u003e] ? sub_preempt_count+0x9d/0xe0\n [\u003cffffffff8143de20\u003e] ? _raw_spin_unlock+0x30/0x50\n [\u003cffffffff8116efe0\u003e] ? sysfs_remove_dir+0x20/0xa0\n [\u003cffffffff8116eff4\u003e] ? sysfs_remove_dir+0x34/0xa0\n [\u003cffffffff81224204\u003e] elv_register_queue+0x34/0xa0\n [\u003cffffffff81224aad\u003e] elevator_change+0xfd/0x250\n [\u003cffffffffa007e000\u003e] ? t_init+0x0/0x361 [t]\n [\u003cffffffffa007e000\u003e] ? t_init+0x0/0x361 [t]\n [\u003cffffffffa007e0a8\u003e] t_init+0xa8/0x361 [t]\n [\u003cffffffff810001de\u003e] do_one_initcall+0x3e/0x170\n [\u003cffffffff8108c3fd\u003e] sys_init_module+0xbd/0x220\n [\u003cffffffff81002f2b\u003e] system_call_fastpath+0x16/0x1b\nCode: e5 41 56 41 55 41 54 49 89 fc 53 48 83 ec 10 48 85 ff 74 52 48 8b 47 18 49 c7 c5 00 46 61 81 48 85 c0 74 04 4c 8b 68 30 45 31 f6 \u003c41\u003e 80 7d 51 00 74 0e 49 8b 44 24 28 4c 89 e7 ff 50 20 49 89 c6\nRIP  [\u003cffffffff8116f15e\u003e] sysfs_create_dir+0x2e/0xc0\n RSP \u003cffff88027da25d08\u003e\nCR2: 0000000000000051\n---[ end trace a6541d3bf07945df ]---\n\nFix this by adding a registered bit to the elevator queue, which is\nset when the sysfs kobjects have been registered.\n\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "2a48fc0ab24241755dc93bfd4f01d68efab47f5a",
      "tree": "fa9ae10ce89b26b7d8ae9ce24bdfda5e3007b763",
      "parents": [
        "613655fa39ff6957754fa8ceb8559980920eb8ee"
      ],
      "author": {
        "name": "Arnd Bergmann",
        "email": "arnd@arndb.de",
        "time": "Wed Jun 02 14:28:52 2010 +0200"
      },
      "committer": {
        "name": "Arnd Bergmann",
        "email": "arnd@arndb.de",
        "time": "Tue Oct 05 15:01:10 2010 +0200"
      },
      "message": "block: autoconvert trivial BKL users to private mutex\n\nThe block device drivers have all gained new lock_kernel\ncalls from a recent pushdown, and some of the drivers\nwere already using the BKL before.\n\nThis turns the BKL into a set of per-driver mutexes.\nStill need to check whether this is safe to do.\n\nfile\u003d$1\nname\u003d$2\nif grep -q lock_kernel ${file} ; then\n    if grep -q \u0027include.*linux.mutex.h\u0027 ${file} ; then\n            sed -i \u0027/include.*\u003clinux\\/smp_lock.h\u003e/d\u0027 ${file}\n    else\n            sed -i \u0027s/include.*\u003clinux\\/smp_lock.h\u003e.*$/include \u003clinux\\/mutex.h\u003e/g\u0027 ${file}\n    fi\n    sed -i ${file} \\\n        -e \"/^#include.*linux.mutex.h/,$ {\n                1,/^\\(static\\|int\\|long\\)/ {\n                     /^\\(static\\|int\\|long\\)/istatic DEFINE_MUTEX(${name}_mutex);\n\n} }\"  \\\n    -e \"s/\\(un\\)*lock_kernel\\\u003e[ ]*()/mutex_\\1lock(\\\u0026${name}_mutex)/g\" \\\n    -e \u0027/[      ]*cycle_kernel_lock();/d\u0027\nelse\n    sed -i -e \u0027/include.*\\\u003csmp_lock.h\\\u003e/d\u0027 ${file}  \\\n                -e \u0027/cycle_kernel_lock()/d\u0027\nfi\n\nSigned-off-by: Arnd Bergmann \u003carnd@arndb.de\u003e\n"
    },
    {
      "commit": "c49c06e4960949a9bced708858433fcf6ca36a9c",
      "tree": "071c65544a98b6b0b599896591855f8ac69ab79a",
      "parents": [
        "9355aede5a3c4975e0ba8bbfe2b9d1fd73308916"
      ],
      "author": {
        "name": "Vivek Goyal",
        "email": "vgoyal@redhat.com",
        "time": "Fri Oct 01 21:16:42 2010 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Fri Oct 01 21:16:42 2010 +0200"
      },
      "message": "blkio-throttle: Fix possible multiplication overflow in iops calculations\n\no User can specify max iops value of 32bit (UINT_MAX), through cgroup\n  interface. If a user has specified say 4294967294 (UNIT_MAX  - 2), then\n  on 32bit platform, following multiplication can overflow.\n\n  io_allowed \u003d (tg-\u003eiops[rw] * jiffy_elapsed_rnd)\n\no Explicitly cast the multiplication to 64bit and then perform division and\n  then check whether result is still great then UNINT_MAX.\n\nSigned-off-by: Vivek Goyal \u003cvgoyal@redhat.com\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "9355aede5a3c4975e0ba8bbfe2b9d1fd73308916",
      "tree": "73db212009de0e60d71d343b737d6a90449b06b8",
      "parents": [
        "5e901a2b95db709c5e40599ff4df6029be1e2a12"
      ],
      "author": {
        "name": "Vivek Goyal",
        "email": "vgoyal@redhat.com",
        "time": "Fri Oct 01 21:16:41 2010 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Fri Oct 01 21:16:41 2010 +0200"
      },
      "message": "blkio-throttle: limit max iops value to UINT_MAX\n\n- Limit max iops value to UINT_MAX and return error to user if value is more\n  than that instead of accepting bigger values and truncating implicitly.\n\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "5e901a2b95db709c5e40599ff4df6029be1e2a12",
      "tree": "e2450a1157c6f9411429fceb9939002d8c0282f8",
      "parents": [
        "3aad5d3ee4e4fce8f4b5bb6ca73342dcade42b33"
      ],
      "author": {
        "name": "Vivek Goyal",
        "email": "vgoyal@redhat.com",
        "time": "Fri Oct 01 21:16:38 2010 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Fri Oct 01 21:16:38 2010 +0200"
      },
      "message": "blkio-throttle: There is no need to convert jiffies to milli seconds\n\no Do not convert jiffies to mili seconds as it is not required. Just work\n  with jiffies and HZ.\n\nSigned-off-by: Vivek Goyal \u003cvgoyal@redhat.com\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "3aad5d3ee4e4fce8f4b5bb6ca73342dcade42b33",
      "tree": "1ba65d361b6d77761f53769fc8891a56085422c6",
      "parents": [
        "fe0714377ee2ca161bf2afb7773e22f15f1786d4"
      ],
      "author": {
        "name": "Vivek Goyal",
        "email": "vgoyal@redhat.com",
        "time": "Fri Oct 01 14:51:14 2010 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Fri Oct 01 14:51:14 2010 +0200"
      },
      "message": "blkio-throttle: Fix link failure failure on i386\n\no Randy Dunlap reported following linux-next failure. This patch fixes it.\n\non i386:\n\nblk-throttle.c:(.text+0x1abb8): undefined reference to `__udivdi3\u0027\nblk-throttle.c:(.text+0x1b1dc): undefined reference to `__udivdi3\u0027\n\no bytes_per_second interface is 64bit and I was continuing to do 64 bit\n  division even on 32bit platform without help of special macros/functions\n  hence the failure.\n\nSigned-off-by: Vivek Goyal \u003cvgoyal@redhat.com\u003e\nReported-by: Randy Dunlap \u003crandy.dunlap@oracle.com\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "fe0714377ee2ca161bf2afb7773e22f15f1786d4",
      "tree": "09f5e8686d741d012333c92251b8cc66793ef916",
      "parents": [
        "02977e4af7ed3b478c505e50491ffdf3e1314cf4"
      ],
      "author": {
        "name": "Vivek Goyal",
        "email": "vgoyal@redhat.com",
        "time": "Fri Oct 01 14:49:49 2010 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Fri Oct 01 14:49:49 2010 +0200"
      },
      "message": "blkio: Recalculate the throttled bio dispatch time upon throttle limit change\n\no Currently any cgroup throttle limit changes are processed asynchronousy and\n  the change does not take affect till a new bio is dispatched from same group.\n\no It might happen that a user sets a redicuously low limit on throttling.\n  Say 1 bytes per second on reads. In such cases simple operations like mount\n  a disk can wait for a very long time.\n\no Once bio is throttled, there is no easy way to come out of that wait even if\n  user increases the read limit later.\n\no This patch fixes it. Now if a user changes the cgroup limits, we recalculate\n  the bio dispatch time according to new limits.\n\no Can\u0027t take queueu lock under blkcg_lock, hence after the change I wake\n  up the dispatch thread again which recalculates the time. So there are some\n  variables being synchronized across two threads without lock and I had to\n  make use of barriers. Hoping I have used barriers correctly. Any review of\n  memory barrier code especially will help.\n\nSigned-off-by: Vivek Goyal \u003cvgoyal@redhat.com\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "02977e4af7ed3b478c505e50491ffdf3e1314cf4",
      "tree": "5adb947a5c8567cbbff79459e9feaccf354fd81f",
      "parents": [
        "61014e96e6ed55b8db0af31574eec2a75d4e8755"
      ],
      "author": {
        "name": "Vivek Goyal",
        "email": "vgoyal@redhat.com",
        "time": "Fri Oct 01 14:49:48 2010 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Fri Oct 01 14:49:48 2010 +0200"
      },
      "message": "blkio: Add root group to td-\u003etg_list\n\no Currently all the dynamically allocated groups, except root grp is added\n  to td-\u003etg_list. This was not a problem so far but in next patch I will\n  travel through td-\u003etg_list to process any updates of limits on the group.\n  If root group is not in tg_list, then root group\u0027s updates are not\n  processed.\n\no It is better to root group also to tg_list instead of doing special\n  processing for it during limit updates.\n\nSigned-off-by: Vivek Goyal \u003cvgoyal@redhat.com\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "61014e96e6ed55b8db0af31574eec2a75d4e8755",
      "tree": "69201251c3c5c51a0ed31dbe595743e60fbdaf52",
      "parents": [
        "13f98250f587b7defa39ed738dfa74b600e46e7b"
      ],
      "author": {
        "name": "Vivek Goyal",
        "email": "vgoyal@redhat.com",
        "time": "Fri Oct 01 14:49:44 2010 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Fri Oct 01 14:49:44 2010 +0200"
      },
      "message": "blkio: deletion of a cgroup was causes oops\n\no Now a cgroup list of blkg elements can contain blkg from multiple policies.\n  Before sending an unlink event, make sure blkg belongs to they policy. If\n  policy does not own the blkg, do not send update for this blkg.\n\nSigned-off-by: Vivek Goyal \u003cvgoyal@redhat.com\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "13f98250f587b7defa39ed738dfa74b600e46e7b",
      "tree": "9d06cb3cd0c8737d1c9289ad6d19e4f4c8ec601f",
      "parents": [
        "efb012b361cf9319cd86ff169afa7550b7aa9336"
      ],
      "author": {
        "name": "Vivek Goyal",
        "email": "vgoyal@redhat.com",
        "time": "Fri Oct 01 14:49:41 2010 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Fri Oct 01 14:49:41 2010 +0200"
      },
      "message": "blkio: Do not export throttle files if CONFIG_BLK_DEV_THROTTLING\u003dn\n\nCurrently throttling related files were visible even if user had disabled\nthrottling using config options. It was switching off background throttling\nof bio but not the cgroup files. This patch fixes it.\n\nSigned-off-by: Vivek Goyal \u003cvgoyal@redhat.com\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "efb012b361cf9319cd86ff169afa7550b7aa9336",
      "tree": "e8c0027db29ec3898d835ca0fa6efab93d86b9bd",
      "parents": [
        "260a67a9e534f0c7d49ddd6451833d54ba39ac81"
      ],
      "author": {
        "name": "Malahal Naineni",
        "email": "malahal@us.ibm.com",
        "time": "Fri Oct 01 14:45:27 2010 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Fri Oct 01 14:45:27 2010 +0200"
      },
      "message": "block: set the bounce_pfn to the actual DMA limit rather than to max memory\n\nThe bounce_pfn of the request queue in 64 bit systems is set to the\ncurrent max_low_pfn. Adding more memory later makes this incorrect.\nMemory allocated beyond this boot time max_low_pfn appear to require\nbounce buffers (bounce buffers are actually not allocated but used in\ncalculating segments that may result in \"over max segments limit\"\nerrors).\n\nSigned-off-by: Malahal Naineni \u003cmalahal@us.ibm.com\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "260a67a9e534f0c7d49ddd6451833d54ba39ac81",
      "tree": "acc1fc416481201b5f38a53a9d6877c00b117fd8",
      "parents": [
        "e4ecda1b60bfd2333c12bbe71b153d3b6bdc831a"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Fri Oct 01 14:42:43 2010 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Fri Oct 01 14:42:43 2010 +0200"
      },
      "message": "block: revert bad fix for memory hotplug causing bounces\n\nRevert \"block: set the bounce_pfn to the actual DMA limit rather than to max memory\"\n\nThis reverts commit c49825facfd4969585224a896a5e717f88450cad.\n\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "f281fb5fe54e15a7ab802945e42f8e24fceb56b2",
      "tree": "51a7dd2e900b8ce4118d1357ab6e187edfc12e25",
      "parents": [
        "a850ea30374ebed32a0724742601861853fde869"
      ],
      "author": {
        "name": "Adrian Hunter",
        "email": "adrian.hunter@nokia.com",
        "time": "Sat Sep 25 12:42:55 2010 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Sat Sep 25 12:42:55 2010 +0200"
      },
      "message": "block: prevent merges of discard and write requests\n\nAdd logic to prevent two I/O requests being merged if\nonly one of them is a discard.  Ditto secure discard.\n\nWithout this fix, it is possible for write requests\nto transform into discard requests.  For example:\n\n  Submit bio 1 to discard 8 sectors from sector n\n  Submit bio 2 to write 8 sectors from sector n + 16\n  Submit bio 3 to write 8 sectors from sector n + 8\n\nBio 1 becomes request 1.  Bio 2 becomes request 2.\nBio 3 is merged with request 2, and then subsequently\nrequest 2 is merged with request 1 resulting in just\none I/O request which discards all 24 sectors.\n\nSigned-off-by: Adrian Hunter \u003cadrian.hunter@nokia.com\u003e\n\n(Moved the checks above the position checks /Jens)\n\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "c49825facfd4969585224a896a5e717f88450cad",
      "tree": "2c244fdf033f858147875333024838e493d9e43e",
      "parents": [
        "4b1977698ceb4c4caa800d475127139da49966f9"
      ],
      "author": {
        "name": "Malahal Naineni",
        "email": "malahal@us.ibm.com",
        "time": "Fri Sep 24 20:25:49 2010 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Fri Sep 24 20:27:16 2010 +0200"
      },
      "message": "block: set the bounce_pfn to the actual DMA limit rather than to max memory\n\nThe bounce_pfn of the request queue in 64 bit systems is set to the\ncurrent max_low_pfn. Adding more memory later makes this incorrect.\nMemory allocated beyond this boot time max_low_pfn appear to require\nbounce buffers (bounce buffers are actually not allocated but used in\ncalculating segments that may result in \"over max segments limit\"\nerrors).\n\nSigned-off-by: Malahal Naineni \u003cmalahal@us.ibm.com\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "4b1977698ceb4c4caa800d475127139da49966f9",
      "tree": "9302bafc15dfb6d3923febaa982feb2cb12063cb",
      "parents": [
        "749ef9f8423054e326f3a246327ed2db4b6d395f"
      ],
      "author": {
        "name": "Mark Lord",
        "email": "kernel@teksavvy.com",
        "time": "Fri Sep 24 09:51:13 2010 -0400"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Fri Sep 24 15:52:09 2010 +0200"
      },
      "message": "block: Prevent hang_check firing during long I/O\n\nDuring long I/O operations, the hang_check timer may fire,\ntrigger stack dumps that unnecessarily alarm the user.\n\nEg.  hdparm --security-erase NULL /dev/sdb  ## can take *hours* to complete\n\nSo, if hang_check is armed, we should wake up periodically\nto prevent it from triggering.  This patch uses a wake-up interval\nequal to half the hang_check timer period, which keeps overhead low enough.\n\nSigned-off-by: Mark Lord \u003cmlord@pobox.com\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "180be2a0420a0d680285e9352c0db85016b9ed2a",
      "tree": "455f9f890a52bf728c4d8ab96f8773ff41347a5c",
      "parents": [
        "a45dc2d2b8d1afa57c91dcfac224e50ffcd3f805"
      ],
      "author": {
        "name": "Vivek Goyal",
        "email": "vgoyal@redhat.com",
        "time": "Tue Sep 14 08:47:11 2010 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Tue Sep 21 11:49:17 2010 +0200"
      },
      "message": "cfq-iosched: fix a kernel OOPs when usb key is inserted\n\nMike reported a kernel crash when a usb key hotplug is performed while all\nkernel thrads are not in a root cgroup and are running in one of the child\ncgroups of blkio controller.\n\n\tBUG: unable to handle kernel NULL pointer dereference at 0000002c\n\tIP: [\u003cc11c7b08\u003e] cfq_get_queue+0x232/0x412\n\t*pde \u003d 00000000\n\tOops: 0000 [#1] PREEMPT\n\tlast sysfs file: /sys/devices/pci0000:00/0000:00:1d.7/usb2/2-1/2-1:1.0/host3/scsi_host/host3/uevent\n\n\t[..]\n\tPid: 30039, comm: scsi_scan_3 Not tainted 2.6.35.2-fg.roam #1 Volvi2                         /Aspire 4315\n\tEIP: 0060:[\u003cc11c7b08\u003e] EFLAGS: 00010086 CPU: 0\n\tEIP is at cfq_get_queue+0x232/0x412\n\tEAX: f705f9c0 EBX: e977abac ECX: 00000000 EDX: 00000000\n\tESI: f00da400 EDI: f00da4ec EBP: e977a800 ESP: dff8fd00\n\t DS: 007b ES: 007b FS: 0000 GS: 0000 SS: 0068\n\tProcess scsi_scan_3 (pid: 30039, ti\u003ddff8e000 task\u003df6b6c9a0 task.ti\u003ddff8e000)\n\tStack:\n\t 00000000 00000000 00000001 01ff0000 f00da508 00000000 f00da524 f00da540\n\t\u003c0\u003e e7994940 dd631750 f705f9c0 e977a820 e977ac44 f00da4d0 00000001 f6b6c9a0\n\t\u003c0\u003e 00000010 00008010 0000000b 00000000 00000001 e977a800 dd76fac0 00000246\n\tCall Trace:\n\t [\u003cc11c7f10\u003e] ? cfq_set_request+0x228/0x34c\n\t [\u003cc11c7ce8\u003e] ? cfq_set_request+0x0/0x34c\n\t [\u003cc11bb3b9\u003e] ? elv_set_request+0xf/0x1c\n\t [\u003cc11bdd51\u003e] ? get_request+0x1ad/0x22f\n\t [\u003cc11bddf2\u003e] ? get_request_wait+0x1f/0x11a\n\t [\u003cc11d013b\u003e] ? kvasprintf+0x33/0x3b\n\t [\u003cc127b537\u003e] ? scsi_execute+0x1d/0x103\n\t [\u003cc127b675\u003e] ? scsi_execute_req+0x58/0x83\n\t [\u003cc127c391\u003e] ? scsi_probe_and_add_lun+0x188/0x7c2\n\t [\u003cc12718c6\u003e] ? attribute_container_add_device+0x15/0xfa\n\t [\u003cc11c95d1\u003e] ? kobject_get+0xf/0x13\n\t [\u003cc126d1db\u003e] ? get_device+0x10/0x14\n\t [\u003cc127be93\u003e] ? scsi_alloc_target+0x217/0x24d\n\t [\u003cc127cbd8\u003e] ? __scsi_scan_target+0x95/0x480\n\t [\u003cc10204eb\u003e] ? dequeue_entity+0x14/0x1fe\n\t [\u003cc1020491\u003e] ? update_curr+0x165/0x1ab\n\t [\u003cc1020491\u003e] ? update_curr+0x165/0x1ab\n\t [\u003cc127d00d\u003e] ? scsi_scan_channel+0x4a/0x76\n\t [\u003cc127d0b0\u003e] ? scsi_scan_host_selected+0x77/0xad\n\t [\u003cc127d13c\u003e] ? do_scan_async+0x0/0x11a\n\t [\u003cc127d137\u003e] ? do_scsi_scan_host+0x51/0x56\n\t [\u003cc127d13c\u003e] ? do_scan_async+0x0/0x11a\n\t [\u003cc127d14a\u003e] ? do_scan_async+0xe/0x11a\n\t [\u003cc127d13c\u003e] ? do_scan_async+0x0/0x11a\n\t [\u003cc10354c5\u003e] ? kthread+0x5e/0x63\n\t [\u003cc1035467\u003e] ? kthread+0x0/0x63\n\t [\u003cc1002af6\u003e] ? kernel_thread_helper+0x6/0x10\n\tCode: 44 24 1c 54 83 44 24 18 54 83 fa 03 75 94 8b 06 c7 86 64 02 00 00 01 00 00 00 83 e0 03 09 f0 89 06 8b 44 24 28 8b 90 58 01 00 00 \u003c8b\u003e 42 2c 85 c0 75 03 8b 42 08 8d 54 24 48 52 8d 4c 24 50 51 68\n\tEIP: [\u003cc11c7b08\u003e] cfq_get_queue+0x232/0x412 SS:ESP 0068:dff8fd00\n\tCR2: 000000000000002c\n\t---[ end trace 9a88306573f69b12 ]---\n\nThe problem here is that we don\u0027t have bdi-\u003edev information available when\nthread does some IO.  Hence when dev_name() tries to access bdi-\u003edev, it\ncrashes.\n\nThis problem does not happen if kernel threads are in root group as root\ngroup is statically allocated at device initialization time and we don\u0027t\nhit this piece of code.\n\nFix it by delaying the filling of major and minor number information of\ndevice in blk_group.  Initially a blk_group is created with 0 as device\ninformation and this information is filled later once some more IO comes\nin from same group.\n\nReported-by: Mike Kazantsev \u003cmk.fraggod@gmail.com\u003e\nSigned-off-by: Vivek Goyal \u003cvgoyal@redhat.com\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "a45dc2d2b8d1afa57c91dcfac224e50ffcd3f805",
      "tree": "aa36b478521c748f1699390e3f4517a4d9fd6644",
      "parents": [
        "b0722cb1ac84863f57471d2b254457c100319300"
      ],
      "author": {
        "name": "Benny Halevy",
        "email": "bhalevy@panasas.com",
        "time": "Mon Sep 13 21:32:19 2010 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Tue Sep 21 11:49:17 2010 +0200"
      },
      "message": "block: fix blk_rq_map_kern bio direction flag\n\nThis bug was introduced in 7b6d91daee5cac6402186ff224c3af39d79f4a0e\n\"block: unify flags for struct bio and struct request\"\n\nCc: Boaz Harrosh \u003cbharrosh@panasas.com\u003e\nSigned-off-by: Benny Halevy \u003cbhalevy@panasas.com\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "749ef9f8423054e326f3a246327ed2db4b6d395f",
      "tree": "388df763e4e731f5d9b4d8dcaedca641521571e3",
      "parents": [
        "6d0aed7a38d06284db2a0e46c0a072b0c1c3299b"
      ],
      "author": {
        "name": "Corrado Zoccolo",
        "email": "czoccolo@gmail.com",
        "time": "Mon Sep 20 15:24:50 2010 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Mon Sep 20 15:24:50 2010 +0200"
      },
      "message": "cfq: improve fsync performance for small files\n\nFsync performance for small files achieved by cfq on high-end disks is\nlower than what deadline can achieve, due to idling introduced between\nthe sync write happening in process context and the journal commit.\n\nMoreover, when competing with a sequential reader, a process writing\nsmall files and fsync-ing them is starved.\n\nThis patch fixes the two problems by:\n- marking journal commits as WRITE_SYNC, so that they get the REQ_NOIDLE\n  flag set,\n- force all queues that have REQ_NOIDLE requests to be put in the noidle\n  tree.\n\nHaving the queue associated to the fsync-ing process and the one associated\n to journal commits in the noidle tree allows:\n- switching between them without idling,\n- fairness vs. competing idling queues, since they will be serviced only\n  after the noidle tree expires its slice.\n\nAcked-by: Vivek Goyal \u003cvgoyal@redhat.com\u003e\nReviewed-by: Jeff Moyer \u003cjmoyer@redhat.com\u003e\nTested-by: Jeff Moyer \u003cjmoyer@redhat.com\u003e\nSigned-off-by: Corrado Zoccolo \u003cczoccolo@gmail.com\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "dd3932eddf428571762596e17b65f5dc92ca361b",
      "tree": "57cec5ae2f862037f78b7e993323d77955bb6463",
      "parents": [
        "8786fb70ccb36c7cff64680bb80c46d3a09d44db"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@lst.de",
        "time": "Thu Sep 16 20:51:46 2010 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Thu Sep 16 20:52:58 2010 +0200"
      },
      "message": "block: remove BLKDEV_IFL_WAIT\n\nAll the blkdev_issue_* helpers can only sanely be used for synchronous\ncaller.  To issue cache flushes or barriers asynchronously the caller needs\nto set up a bio by itself with a completion callback to move the asynchronous\nstate machine ahead.  So drop the BLKDEV_IFL_WAIT flag that is always\nspecified when calling blkdev_issue_* and also remove the now unused flags\nargument to blkdev_issue_flush and blkdev_issue_zeroout.  For\nblkdev_issue_discard we need to keep it for the secure discard flag, which\ngains a more descriptive name and loses the bitops vs flag confusion.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "01ea50638bc04ca5259f5711fcdedefcdde1cf43",
      "tree": "c525dc13b05feab90d71b78a1d7adb0ddde081ea",
      "parents": [
        "2786c4e5e54802c34297e55050fef3e862a27b3f"
      ],
      "author": {
        "name": "Signed-off-by: Jan Kara",
        "email": "jack@suse.cz",
        "time": "Thu Sep 16 20:36:36 2010 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Thu Sep 16 20:36:36 2010 +0200"
      },
      "message": "block: Fix race during disk initialization\n\nWhen a new disk is being discovered, add_disk() first ties the bdev to gendisk\n(via register_disk()-\u003eblkdev_get()) and only after that calls\nbdi_register_bdev(). Because register_disk() also creates disk\u0027s kobject, it\ncan happen that userspace manages to open and modify the device\u0027s data (or\ninode) before its BDI is properly initialized leading to a warning in\n__mark_inode_dirty().\n\nFix the problem by registering BDI early enough.\n\nThis patch addresses https://bugzilla.kernel.org/show_bug.cgi?id\u003d16312\n\nCc: stable@kernel.org\nReported-by: Larry Finger \u003cLarry.Finger@lwfinger.net\u003e\nSigned-off-by: Jan Kara \u003cjack@suse.cz\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "8e89d13f4ede2467629a971618537430fafaaea3",
      "tree": "90a79a2997f597715e3ad7edeea507fdb6223882",
      "parents": [
        "7702e8f45b0a3bb262b9366c60beb5445758d94c"
      ],
      "author": {
        "name": "Vivek Goyal",
        "email": "vgoyal@redhat.com",
        "time": "Wed Sep 15 17:06:37 2010 -0400"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Thu Sep 16 08:44:00 2010 +0200"
      },
      "message": "blkio: Implementation of IOPS limit logic\n\no core logic of implementing IOPS throttling.\n\nSigned-off-by: Vivek Goyal \u003cvgoyal@redhat.com\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "7702e8f45b0a3bb262b9366c60beb5445758d94c",
      "tree": "bd61754827def804fe5a1f790f3eb303154df63d",
      "parents": [
        "e43473b7f223ec866f7db273697e76c337c390f9"
      ],
      "author": {
        "name": "Vivek Goyal",
        "email": "vgoyal@redhat.com",
        "time": "Wed Sep 15 17:06:36 2010 -0400"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Thu Sep 16 08:42:58 2010 +0200"
      },
      "message": "blk-cgroup: cgroup changes for IOPS limit support\n\no cgroup changes for IOPS throttling rules.\n\nSigned-off-by: Vivek Goyal \u003cvgoyal@redhat.com\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "e43473b7f223ec866f7db273697e76c337c390f9",
      "tree": "e90b52dbe4ec4ae37263a00e2bd9eaf5367cf72f",
      "parents": [
        "4c9eefa16c6f124ffcc736cb719b24ea27f85017"
      ],
      "author": {
        "name": "Vivek Goyal",
        "email": "vgoyal@redhat.com",
        "time": "Wed Sep 15 17:06:35 2010 -0400"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Thu Sep 16 08:42:52 2010 +0200"
      },
      "message": "blkio: Core implementation of throttle policy\n\no Actual implementation of throttling policy in block layer. Currently it\n  implements READ and WRITE bytes per second throttling logic. IOPS throttling\n  comes in later patches.\n\nSigned-off-by: Vivek Goyal \u003cvgoyal@redhat.com\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "4c9eefa16c6f124ffcc736cb719b24ea27f85017",
      "tree": "0fc333553f66b72c3eb1bd532e45040d90e68f1f",
      "parents": [
        "062a644d6121d5e2f51c0b2ca0cbc5155ebf845b"
      ],
      "author": {
        "name": "Vivek Goyal",
        "email": "vgoyal@redhat.com",
        "time": "Wed Sep 15 17:06:34 2010 -0400"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Thu Sep 16 08:42:12 2010 +0200"
      },
      "message": "blk-cgroup: Introduce cgroup changes for throttling policy\n\no cgroup chagnes for throttle policy.\n\no Introduces READ and WRITE bytes per second throttling rules.\n\nSigned-off-by: Vivek Goyal \u003cvgoyal@redhat.com\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "062a644d6121d5e2f51c0b2ca0cbc5155ebf845b",
      "tree": "250626a8ee11efa8e598692904e12ac26c29cab5",
      "parents": [
        "af41d7bd9b685ab4e8f930627874ba4f4728e128"
      ],
      "author": {
        "name": "Vivek Goyal",
        "email": "vgoyal@redhat.com",
        "time": "Wed Sep 15 17:06:33 2010 -0400"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Thu Sep 16 08:42:04 2010 +0200"
      },
      "message": "blk-cgroup: Prepare the base for supporting more than one IO control policies\n\no This patch prepares the base for introducing new IO control policies.\n  Currently all the code is written knowing there is only one policy\n  and that is proportional bandwidth. Creating infrastructure for newer\n  policies to come in.\n\no Also there were many functions which were generated using macro. It was\n  very confusing. Got rid of those.\n\nSigned-off-by: Vivek Goyal \u003cvgoyal@redhat.com\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "af41d7bd9b685ab4e8f930627874ba4f4728e128",
      "tree": "f91be30499efd1c39a3417cb19186ecca261ebe2",
      "parents": [
        "38b6f45a97bbb8536cc7d095b577f580bd4d643e"
      ],
      "author": {
        "name": "Vivek Goyal",
        "email": "vgoyal@redhat.com",
        "time": "Wed Sep 15 17:06:32 2010 -0400"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Thu Sep 16 08:40:42 2010 +0200"
      },
      "message": "blk-cgroup: Kill the header printed at the start of blkio.weight_device file\n\no Kill extra \"dev weight\" header which is printed when somebody reads\n  blkio.weight_device file. This really seems to be out of convention. No other\n  blkio files are printing any header at the start of file. I think it is ok\n  to just print values and how to interpret values should be part of\n  documentation.\n\nSigned-off-by: Vivek Goyal \u003cvgoyal@redhat.com\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "b5af921ec02333e943efb59aca4f56b78fc0e100",
      "tree": "fcf966ccbee9c5f8b8f652100f033bc781b91b91",
      "parents": [
        "eec7ecfede74bb996060efefd5c157acd5794e8a"
      ],
      "author": {
        "name": "Will Drewry",
        "email": "wad@chromium.org",
        "time": "Tue Aug 31 15:47:07 2010 -0500"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Wed Sep 15 16:14:03 2010 +0200"
      },
      "message": "init: add support for root devices specified by partition UUID\n\nThis is the third patch in a series which adds support for\nstoring partition metadata, optionally, off of the hd_struct.\n\nOne major use for that data is being able to resolve partition\nby other identities than just the index on a block device.  Device\nenumeration varies by platform and there\u0027s a benefit to being able\nto use something like EFI GPT\u0027s GUIDs to determine the correct\nblock device and partition to mount as the root.\n\nThis change adds that support to root\u003d by adding support for\nthe following syntax:\n\n  root\u003dPARTUUID\u003dhex-uuid\n\nSigned-off-by: Will Drewry \u003cwad@chromium.org\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "6d1d8050b4bc89d0165d29b58e894aeba2564a97",
      "tree": "b5c5b730bd7b80fe9041c031a6fcf08f42fff0d5",
      "parents": [
        "144177991ca624841ddbd1e7edff958fc0f6d1fe"
      ],
      "author": {
        "name": "Will Drewry",
        "email": "wad@chromium.org",
        "time": "Tue Aug 31 15:47:05 2010 -0500"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Wed Sep 15 16:13:18 2010 +0200"
      },
      "message": "block, partition: add partition_meta_info to hd_struct\n\nI\u0027m reposting this patch series as v4 since there have been no additional\ncomments, and I cleaned up one extra bit of unneeded code (in 3/3). The patches\nare against Linus\u0027s tree: 2bfc96a127bc1cc94d26bfaa40159966064f9c8c\n(2.6.36-rc3).\n\nWould this patchset be suitable for inclusion in an mm branch?\n\nThis changes adds a partition_meta_info struct which itself contains a\nunion of structures that provide partition table specific metadata.\n\nThis change leaves the union empty. The subsequent patch includes an\nimplementation for CONFIG_EFI_PARTITION-based metadata.\n\nSigned-off-by: Will Drewry \u003cwad@chromium.org\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "144177991ca624841ddbd1e7edff958fc0f6d1fe",
      "tree": "793a42427d46585c0acfcfe97d23e604174a2c10",
      "parents": [
        "8dcbdc742fec9e6c542ff9cb599d2ee620753d07"
      ],
      "author": {
        "name": "Namhyung Kim",
        "email": "namhyung@gmail.com",
        "time": "Wed Sep 15 13:08:27 2010 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Wed Sep 15 13:08:27 2010 +0200"
      },
      "message": "block: fix an address space warning in blk-map.c\n\nChange type of 2nd parameter of blk_rq_aligned() into unsigned long\nand remove unnecessary casting. Now we can call it with \u0027uaddr\u0027\ninstead of \u0027ubuf\u0027 in __blk_rq_map_user() so that it can remove\nfollowing warnings from sparse:\n\n block/blk-map.c:57:31: warning: incorrect type in argument 2 (different address spaces)\n block/blk-map.c:57:31:    expected void *addr\n block/blk-map.c:57:31:    got void [noderef] \u003casn:1\u003e*ubuf\n\nHowever blk_rq_map_kern() needs one more local variable to handle it.\n\nSigned-off-by: Namhyung Kim \u003cnamhyung@gmail.com\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "8dcbdc742fec9e6c542ff9cb599d2ee620753d07",
      "tree": "45e7a5f4be8c27773d303d66fe316e491bbf800f",
      "parents": [
        "175b79f0632544d62aae72e5496c14e3e3ff2ae7"
      ],
      "author": {
        "name": "San Mehat",
        "email": "san@android.com",
        "time": "Tue Sep 14 08:48:01 2010 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Tue Sep 14 08:48:01 2010 +0200"
      },
      "message": "block: block_dump: Add number of sectors to debug output\n\nSigned-off-by: San Mehat \u003csan@android.com\u003e\nSigned-off-by: Linus Walleij \u003clinus.walleij@stericsson.com\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "13f05c8d8e98bbdce89158bfdb2e380940695a88",
      "tree": "055215e7e2b1bdc684ead64daa61b30b35eaa3c5",
      "parents": [
        "c8bf1336824ebd698d37b71763e1c43190f2229a"
      ],
      "author": {
        "name": "Martin K. Petersen",
        "email": "martin.petersen@oracle.com",
        "time": "Fri Sep 10 20:50:10 2010 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@carl.home.kernel.dk",
        "time": "Fri Sep 10 20:50:10 2010 +0200"
      },
      "message": "block/scsi: Provide a limit on the number of integrity segments\n\nSome controllers have a hardware limit on the number of protection\ninformation scatter-gather list segments they can handle.\n\nIntroduce a max_integrity_segments limit in the block layer and provide\na new scsi_host_template setting that allows HBA drivers to provide a\nvalue suitable for the hardware.\n\nAdd support for honoring the integrity segment limit when merging both\nbios and requests.\n\nSigned-off-by: Martin K. Petersen \u003cmartin.petersen@oracle.com\u003e\nSigned-off-by: Jens Axboe \u003caxboe@carl.home.kernel.dk\u003e\n"
    },
    {
      "commit": "c8bf1336824ebd698d37b71763e1c43190f2229a",
      "tree": "19948b3c686ba71bb2e85883a5325cec069015b7",
      "parents": [
        "76be97c1fc945db08aae1f1b746012662d643e97"
      ],
      "author": {
        "name": "Martin K. Petersen",
        "email": "martin.petersen@oracle.com",
        "time": "Fri Sep 10 20:07:38 2010 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@carl.home.kernel.dk",
        "time": "Fri Sep 10 20:07:38 2010 +0200"
      },
      "message": "Consolidate min_not_zero\n\nWe have several users of min_not_zero, each of them using their own\ndefinition.  Move the define to kernel.h.\n\nSigned-off-by: Martin K. Petersen \u003cmartin.petersen@oracle.com\u003e\nSigned-off-by: Jens Axboe \u003caxboe@carl.home.kernel.dk\u003e\n"
    },
    {
      "commit": "8c5553678237b7121355108e03c36086037d8975",
      "tree": "7ecbc41837bf2dac6010230839e3312d6d33dd35",
      "parents": [
        "31725e65c7214b52b607eba705fc4f306be4d5a5"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@infradead.org",
        "time": "Wed Aug 18 05:29:22 2010 -0400"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Fri Sep 10 12:35:40 2010 +0200"
      },
      "message": "block: remove the BLKDEV_IFL_BARRIER flag\n\nRemove support for barriers on discards, which is unused now.  Also\nremove the DISCARD_NOBARRIER I/O type in favour of just setting the\nrw flags up locally in blkdev_issue_discard.\n\ntj: Also remove DISCARD_SECURE and use REQ_SECURE directly.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nAcked-by: Mike Snitzer \u003csnitzer@redhat.com\u003e\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "3a2edd0d6ddbd5fa3b389ea6db811285415ce6c8",
      "tree": "5752d02cc755e242270f700d442f35b5fc9557d9",
      "parents": [
        "e9c7469bb4f502dafc092166201bea1ad5fc0fbf"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Fri Sep 03 11:56:18 2010 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Fri Sep 10 12:35:38 2010 +0200"
      },
      "message": "block: make __blk_rq_prep_clone() copy most command flags\n\nCurrently __blk_rq_prep_clone() copies only REQ_WRITE and REQ_DISCARD.\nThere\u0027s no reason to omit other command flags and REQ_FUA needs to be\ncopied to implement FUA support in request-based dm.\n\nREQ_COMMON_MASK which specifies flags to be copied from bio to request\nalready identifies all the command flags.  Define REQ_CLONE_MASK to be\nthe same as REQ_COMMON_MASK for clarity and make __blk_rq_prep_clone()\ncopy all flags in the mask.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nReviewed-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "d391a2dda2f1c993f094bdb3a8a342c5e0546553",
      "tree": "315b4d8431db05b96d578e2d7183081b91fa4e84",
      "parents": [
        "04ccc65cd1f57aee861708e08cd2272c5a0d088c"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Fri Sep 03 11:56:17 2010 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Fri Sep 10 12:35:37 2010 +0200"
      },
      "message": "block: use REQ_FLUSH in blkdev_issue_flush()\n\nUpdate blkdev_issue_flush() to use new REQ_FLUSH interface.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nCc: Christoph Hellwig \u003chch@infradead.org\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "09d60c701b64b509f328cac72970eb894f485b9e",
      "tree": "ef5d88b6fe6449395eeceb15988142c6297cefdc",
      "parents": [
        "47f70d5a6ca78c40a1c799d43506efbfed914f7b"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Fri Sep 03 11:56:17 2010 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Fri Sep 10 12:35:37 2010 +0200"
      },
      "message": "block: make sure FSEQ_DATA request has the same rq_disk as the original\n\nrq-\u003erq_disk and bio-\u003ebi_bdev-\u003ebd_disk may differ if a request has\npassed through remapping drivers.  FSEQ_DATA request incorrectly\nfollowed bio-\u003ebi_bdev-\u003ebd_disk ending up being issued w/ mismatching\nrq_disk.  Make it follow orig_rq-\u003erq_disk.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nReported-by: Kiyoshi Ueda \u003ck-ueda@ct.jp.nec.com\u003e\nTested-by: Kiyoshi Ueda \u003ck-ueda@ct.jp.nec.com\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "47f70d5a6ca78c40a1c799d43506efbfed914f7b",
      "tree": "fff5197359b989197eda76dd019746fbba054e88",
      "parents": [
        "337238be1bf52e1242f940fc6fe83fb395e55057"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Fri Sep 03 11:56:17 2010 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Fri Sep 10 12:35:37 2010 +0200"
      },
      "message": "block: kick queue after sequencing REQ_FLUSH/FUA\n\nWhile completing a request from a REQ_FLUSH/FUA sequence, another\nrequest can be pushed to the request queue.  If a driver tests\nelv_queue_empty() before completing a request and runs the queue again\nonly if the queue wasn\u0027t empty, this may lead to hang.  Please note\nthat most drivers either kick the queue unconditionally or test queue\nemptiness after completing the current request and don\u0027t have this\nproblem.\n\nThis patch removes this possibility by making REQ_FLUSH/FUA sequence\ncode kick the queue if the queue was empty before completing a request\nfrom REQ_FLUSH/FUA sequence.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "337238be1bf52e1242f940fc6fe83fb395e55057",
      "tree": "cb3a81ebb1bb73aaac692f38d7d3e47007e39093",
      "parents": [
        "cde4c406d8fb051c5aafc917643adbb9dbd0abc2"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Fri Sep 03 11:56:17 2010 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Fri Sep 10 12:35:37 2010 +0200"
      },
      "message": "block: initialize flush request with WRITE_FLUSH instead of REQ_FLUSH\n\ninit_flush_request() only set REQ_FLUSH when initializing flush\nrequests making them READ requests.  Use WRITE_FLUSH instead.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nReported-by: Mike Snitzer \u003csnitzer@redhat.com\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "cde4c406d8fb051c5aafc917643adbb9dbd0abc2",
      "tree": "554f623851e5b30069e5e0c5706100ed7b82a3bd",
      "parents": [
        "1e87901e189c8f01750d67485009fe3827c691bf"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@lst.de",
        "time": "Fri Sep 03 11:56:17 2010 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Fri Sep 10 12:35:37 2010 +0200"
      },
      "message": "block: simplify queue_next_fseq\n\nWe need to call blk_rq_init and elv_insert for all cases in queue_next_fseq,\nso take these calls into common code.  Also move the end_io initialization\nfrom queue_flush into queue_next_fseq and rename queue_flush to\ninit_flush_request now that it\u0027s old name doesn\u0027t apply anymore.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "1e87901e189c8f01750d67485009fe3827c691bf",
      "tree": "13a8378830f866aff8461fb47ddfed207c8d2bd2",
      "parents": [
        "4fed947cb311e5aa51781d316cefca836352f6ce"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Fri Sep 03 11:56:17 2010 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Fri Sep 10 12:35:37 2010 +0200"
      },
      "message": "block: filter flush bio\u0027s in __generic_make_request()\n\nThere are a number of make_request based drivers which don\u0027t support\ncache flushes.  Filter out flush bio\u0027s in __generic_make_request() so\nthat they don\u0027t have to worry about them.  All FLUSH/FUA requests with\ndata are converted to regular IO requests and empty ones are completed\nimmediately.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "4fed947cb311e5aa51781d316cefca836352f6ce",
      "tree": "eada83d5bf503244628e3c190e97e8c7af847e35",
      "parents": [
        "dd4c133f387c48f526022860ad70354637a80f4c"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Fri Sep 03 11:56:17 2010 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Fri Sep 10 12:35:37 2010 +0200"
      },
      "message": "block: implement REQ_FLUSH/FUA based interface for FLUSH/FUA requests\n\nNow that the backend conversion is complete, export sequenced\nFLUSH/FUA capability through REQ_FLUSH/FUA flags.  REQ_FLUSH means the\ndevice cache should be flushed before executing the request.  REQ_FUA\nmeans that the data in the request should be on non-volatile media on\ncompletion.\n\nBlock layer will choose the correct way of implementing the semantics\nand execute it.  The request may be passed to the device directly if\nthe device can handle it; otherwise, it will be sequenced using one or\nmore proxy requests.  Devices will never see REQ_FLUSH and/or FUA\nwhich it doesn\u0027t support.\n\nAlso, unlike the original REQ_HARDBARRIER, REQ_FLUSH/FUA requests are\nnever failed with -EOPNOTSUPP.  If the underlying device doesn\u0027t\nsupport FLUSH/FUA, the block layer simply make those noop.  IOW, it no\nlonger distinguishes between writeback cache which doesn\u0027t support\ncache flush and writethrough/no cache.  Devices which have WB cache\nw/o flush are very difficult to come by these days and there\u0027s nothing\nmuch we can do anyway, so it doesn\u0027t make sense to require everyone to\nimplement -EOPNOTSUPP handling.  This will simplify filesystems and\nblock drivers as they can drop -EOPNOTSUPP retry logic for barriers.\n\n* QUEUE_ORDERED_* are removed and QUEUE_FSEQ_* are moved into\n  blk-flush.c.\n\n* REQ_FLUSH w/o data can also be directly passed to drivers without\n  sequencing but some drivers assume that zero length requests don\u0027t\n  have rq-\u003ebio which isn\u0027t true for these requests requiring the use\n  of proxy requests.\n\n* REQ_COMMON_MASK now includes REQ_FLUSH | REQ_FUA so that they are\n  copied from bio to request.\n\n* WRITE_BARRIER is marked deprecated and WRITE_FLUSH, WRITE_FUA and\n  WRITE_FLUSH_FUA are added.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nCc: Christoph Hellwig \u003chch@infradead.org\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "dd4c133f387c48f526022860ad70354637a80f4c",
      "tree": "7b741150d37d327b69e483468278d9de3a43a4e1",
      "parents": [
        "8839a0e055d9abd6c011d533373a8dd266cad011"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Fri Sep 03 11:56:16 2010 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Fri Sep 10 12:35:36 2010 +0200"
      },
      "message": "block: rename barrier/ordered to flush\n\nWith ordering requirements dropped, barrier and ordered are misnomers.\nNow all block layer does is sequencing FLUSH and FUA.  Rename them to\nflush.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nCc: Christoph Hellwig \u003chch@infradead.org\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "8839a0e055d9abd6c011d533373a8dd266cad011",
      "tree": "61025bafd53a3a5595579e552d7d354c01e585c2",
      "parents": [
        "28e7d1845216538303bb95d679d8fd4de50e2f1a"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Fri Sep 03 11:56:16 2010 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Fri Sep 10 12:35:36 2010 +0200"
      },
      "message": "block: rename blk-barrier.c to blk-flush.c\n\nWithout ordering requirements, barrier and ordering are minomers.\nRename block/blk-barrier.c to block/blk-flush.c.  Rename of symbols\nwill follow.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nCc: Christoph Hellwig \u003chch@infradead.org\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "28e7d1845216538303bb95d679d8fd4de50e2f1a",
      "tree": "0ef56dc0d7c894657c4ae71a3e8da6e1164fb933",
      "parents": [
        "dd831006d5be7f74c3fe7aef82380c51c3637960"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Fri Sep 03 11:56:16 2010 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Fri Sep 10 12:35:36 2010 +0200"
      },
      "message": "block: drop barrier ordering by queue draining\n\nFilesystems will take all the responsibilities for ordering requests\naround commit writes and will only indicate how the commit writes\nthemselves should be handled by block layers.  This patch drops\nbarrier ordering by queue draining from block layer.  Ordering by\ndraining implementation was somewhat invasive to request handling.\nList of notable changes follow.\n\n* Each queue has 1 bit color which is flipped on each barrier issue.\n  This is used to track whether a given request is issued before the\n  current barrier or not.  REQ_ORDERED_COLOR flag and coloring\n  implementation in __elv_add_request() are removed.\n\n* Requests which shouldn\u0027t be processed yet for draining were stalled\n  by returning -EAGAIN from blk_do_ordered() according to the test\n  result between blk_ordered_req_seq() and blk_blk_ordered_cur_seq().\n  This logic is removed.\n\n* Draining completion logic in elv_completed_request() removed.\n\n* All barrier sequence requests were queued to request queue and then\n  trckled to lower layer according to progress and thus maintaining\n  request orders during requeue was necessary.  This is replaced by\n  queueing the next request in the barrier sequence only after the\n  current one is complete from blk_ordered_complete_seq(), which\n  removes the need for multiple proxy requests in struct request_queue\n  and the request sorting logic in the ELEVATOR_INSERT_REQUEUE path of\n  elv_insert().\n\n* As barriers no longer have ordering constraints, there\u0027s no need to\n  dump the whole elevator onto the dispatch queue on each barrier.\n  Insert barriers at the front instead.\n\n* If other barrier requests come to the front of the dispatch queue\n  while one is already in progress, they are stored in\n  q-\u003epending_barriers and restored to dispatch queue one-by-one after\n  each barrier completion from blk_ordered_complete_seq().\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nCc: Christoph Hellwig \u003chch@infradead.org\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "dd831006d5be7f74c3fe7aef82380c51c3637960",
      "tree": "30a86749f0c4f7980b2982dbde8bbcfff37b08f9",
      "parents": [
        "9cbbdca44ae1a6f512ea1e2be11ced8bbb9d430a"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Fri Sep 03 11:56:16 2010 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Fri Sep 10 12:35:36 2010 +0200"
      },
      "message": "block: misc cleanups in barrier code\n\nMake the following cleanups in preparation of barrier/flush update.\n\n* blk_do_ordered() declaration is moved from include/linux/blkdev.h to\n  block/blk.h.\n\n* blk_do_ordered() now returns pointer to struct request, with %NULL\n  meaning \"try the next request\" and ERR_PTR(-EAGAIN) \"try again\n  later\".  The third case will be dropped with further changes.\n\n* In the initialization of proxy barrier request, data direction is\n  already set by init_request_from_bio().  Drop unnecessary explicit\n  REQ_WRITE setting and move init_request_from_bio() above REQ_FUA\n  flag setting.\n\n* add_request() is collapsed into __make_request().\n\nThese changes don\u0027t make any functional difference.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "4913efe456c987057e5d36a3f0a55422a9072cae",
      "tree": "295f04a7214e1933df3301dd42c12ff3f282a22c",
      "parents": [
        "6958f145459ca7ad9715024de97445addacb8510"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Fri Sep 03 11:56:16 2010 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Fri Sep 10 12:35:36 2010 +0200"
      },
      "message": "block: deprecate barrier and replace blk_queue_ordered() with blk_queue_flush()\n\nBarrier is deemed too heavy and will soon be replaced by FLUSH/FUA\nrequests.  Deprecate barrier.  All REQ_HARDBARRIERs are failed with\n-EOPNOTSUPP and blk_queue_ordered() is replaced with simpler\nblk_queue_flush().\n\nblk_queue_flush() takes combinations of REQ_FLUSH and FUA.  If a\ndevice has write cache and can flush it, it should set REQ_FLUSH.  If\nthe device can handle FUA writes, it should also set REQ_FUA.\n\nAll blk_queue_ordered() users are converted.\n\n* ORDERED_DRAIN is mapped to 0 which is the default value.\n* ORDERED_DRAIN_FLUSH is mapped to REQ_FLUSH.\n* ORDERED_DRAIN_FLUSH_FUA is mapped to REQ_FLUSH | REQ_FUA.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nAcked-by: Boaz Harrosh \u003cbharrosh@panasas.com\u003e\nCc: Christoph Hellwig \u003chch@infradead.org\u003e\nCc: Nick Piggin \u003cnpiggin@kernel.dk\u003e\nCc: Michael S. Tsirkin \u003cmst@redhat.com\u003e\nCc: Jeremy Fitzhardinge \u003cjeremy@xensource.com\u003e\nCc: Chris Wright \u003cchrisw@sous-sol.org\u003e\nCc: FUJITA Tomonori \u003cfujita.tomonori@lab.ntt.co.jp\u003e\nCc: Geert Uytterhoeven \u003cGeert.Uytterhoeven@sonycom.com\u003e\nCc: David S. Miller \u003cdavem@davemloft.net\u003e\nCc: Alasdair G Kergon \u003cagk@redhat.com\u003e\nCc: Pierre Ossman \u003cdrzeus@drzeus.cx\u003e\nCc: Stefan Weinhuber \u003cwein@de.ibm.com\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "6958f145459ca7ad9715024de97445addacb8510",
      "tree": "c8c945eb68ceb88bd34647d7bcaedd13a0d753ca",
      "parents": [
        "589d7ed02ade0d06a3510da2e15a7edfdb2ef3d8"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Fri Sep 03 11:56:16 2010 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Fri Sep 10 12:35:36 2010 +0200"
      },
      "message": "block: kill QUEUE_ORDERED_BY_TAG\n\nNobody is making meaningful use of ORDERED_BY_TAG now and queue\ndraining for barrier requests will be removed soon which will render\nthe advantage of tag ordering moot.  Kill ORDERED_BY_TAG.  The\nfollowing users are affected.\n\n* brd: converted to ORDERED_DRAIN.\n* virtio_blk: ORDERED_TAG path was already marked deprecated.  Removed.\n* xen-blkfront: ORDERED_TAG case dropped.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nCc: Christoph Hellwig \u003chch@infradead.org\u003e\nCc: Nick Piggin \u003cnpiggin@kernel.dk\u003e\nCc: Michael S. Tsirkin \u003cmst@redhat.com\u003e\nCc: Jeremy Fitzhardinge \u003cjeremy@xensource.com\u003e\nCc: Chris Wright \u003cchrisw@sous-sol.org\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "be14eb619108fa8b7120eb2c42d66d5f623ae10e",
      "tree": "cfc8a496c62a429a97c4bc2c5e638c39374f560b",
      "parents": [
        "edce6820a9fdda85521211cb334a183e34cc455e"
      ],
      "author": {
        "name": "Brian King",
        "email": "brking@linux.vnet.ibm.com",
        "time": "Fri Sep 10 09:03:21 2010 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Fri Sep 10 09:03:21 2010 +0200"
      },
      "message": "block: Range check cpu in blk_cpu_to_group\n\nWhile testing CPU DLPAR, the following problem was discovered.\nWe were DLPAR removing the first CPU, which in this case was\nlogical CPUs 0-3. CPUs 0-2 were already marked offline and\nwe were in the process of offlining CPU 3. After marking\nthe CPU inactive and offline in cpu_disable, but before the\ncpu was completely idle (cpu_die), we ended up in __make_request\non CPU 3. There we looked at the topology map to see which CPU\nto complete the I/O on and found no CPUs in the cpu_sibling_map.\nThis resulted in the block layer setting the completion cpu\nto be NR_CPUS, which then caused an oops when we tried to\ncomplete the I/O.\n\nFix this by sanity checking the value we return from blk_cpu_to_group\nto be a valid cpu value.\n\nSigned-off-by: Brian King \u003cbrking@linux.vnet.ibm.com\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "5dd531a03ad721b41911ddb32e6e0481404e7aaf",
      "tree": "3d07d0aa902eb61a575bbc7cc2a57c03431e2b01",
      "parents": [
        "220eb7fd984bfc7e6b4005fdf32efe9cd8af7cf2"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Mon Aug 23 13:52:19 2010 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Mon Aug 23 13:52:19 2010 +0200"
      },
      "message": "block: add function call to switch the IO scheduler from a driver\n\nCurrently drivers must do an elevator_exit() + elevator_init()\nto switch IO schedulers. There are a few problems with this:\n\n- Since commit 1abec4fdbb142e3ccb6ce99832fae42129134a96,\n  elevator_init() requires a zeroed out q-\u003eelevator\n  pointer. The two existing in-kernel users don\u0027t do that.\n\n- It will only work at initialization time, since using the\n  above two-staged construct does not properly quisce the queue.\n\nSo add elevator_change() which takes care of this, and convert\nthe elv_iosched_store() sysfs interface to use this helper as well.\n\nReported-by: Peter Oberparleiter \u003coberpar@linux.vnet.ibm.com\u003e\nReported-by: Kevin Vigor \u003ckevin@vigor.nu\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "5e00d1b5b4c10fb839afd5ce61db8e24339454b0",
      "tree": "150de7f5b3e887a75013796542897ef2e1e4775a",
      "parents": [
        "c87ffbb812cf6150097a5095b031f4013a8f78a5"
      ],
      "author": {
        "name": "Jiri Slaby",
        "email": "jslaby@suse.cz",
        "time": "Thu Aug 12 14:31:06 2010 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Mon Aug 23 12:33:10 2010 +0200"
      },
      "message": "BLOCK: fix bio.bi_rw handling\n\nReturn of the bi_rw tests is no longer bool after commit 74450be1. But\nresults of such tests are stored in bools. This doesn\u0027t fit in there\nfor some compilers (gcc 4.5 here), so either use !! magic to get real\nbools or use ulong where the result is assigned somewhere.\n\nSigned-off-by: Jiri Slaby \u003cjslaby@suse.cz\u003e\nCc: Christoph Hellwig \u003chch@lst.de\u003e\nReviewed-by: Jeff Moyer \u003cjmoyer@redhat.com\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "c87ffbb812cf6150097a5095b031f4013a8f78a5",
      "tree": "f22328b7cbaac2166024d9e0fdac9332b9b1115e",
      "parents": [
        "4ee69851cd4880f574d22f5ce08bec35b01c94e3"
      ],
      "author": {
        "name": "Xiaotian Feng",
        "email": "dfeng@redhat.com",
        "time": "Mon Aug 23 12:30:29 2010 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Mon Aug 23 12:30:29 2010 +0200"
      },
      "message": "block: put dev-\u003ekobj in blk_register_queue fail path\n\nkernel needs to kobject_put on dev-\u003ekobj if elv_register_queue fails.\n\nSigned-off-by: Xiaotian Feng \u003cdfeng@redhat.com\u003e\nCc: \"Martin K. Petersen\" \u003cmartin.petersen@oracle.com\u003e\nCc: Stephen Hemminger \u003cshemminger@vyatta.com\u003e\nCc: Nikanth Karthikesan \u003cknikanth@suse.de\u003e\nCc: David Teigland \u003cteigland@redhat.com\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "c4e7893ebc3a5c507b53f59b9de448db20849944",
      "tree": "bcb89e402cf8c36c33d70f04dc5fd434e1d58321",
      "parents": [
        "80bdf0c78fff075dfa21576273c8b0c7db22bdfe"
      ],
      "author": {
        "name": "Vivek Goyal",
        "email": "vgoyal@redhat.com",
        "time": "Mon Aug 23 12:25:03 2010 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Mon Aug 23 12:25:03 2010 +0200"
      },
      "message": "cfq-iosched: blktrace print per slice sector stats\n\no Divyesh had gotten rid of this code in the past. I want to re-introduce it\n  back as it helps me a lot during debugging.\n\nReviewed-by: Jeff Moyer \u003cjmoyer@redhat.com\u003e\nReviewed-by: Divyesh Shah \u003cdpshah@google.com\u003e\nSigned-off-by: Vivek Goyal \u003cvgoyal@redhat.com\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "80bdf0c78fff075dfa21576273c8b0c7db22bdfe",
      "tree": "f9075075f282e1e2adf1b2cb1fbc25991df7c6af",
      "parents": [
        "02b35081fc98f681411586d3acf9eaad8b8f6e07"
      ],
      "author": {
        "name": "Vivek Goyal",
        "email": "vgoyal@redhat.com",
        "time": "Mon Aug 23 12:24:26 2010 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Mon Aug 23 12:24:26 2010 +0200"
      },
      "message": "cfq-iosched: Implement tunable group_idle\n\no Implement a new tunable group_idle, which allows idling on the group\n  instead of a cfq queue. Hence one can set slice_idle \u003d 0 and not idle\n  on the individual queues but idle on the group. This way on fast storage\n  we can get fairness between groups at the same time overall throughput\n  improves.\n\nSigned-off-by: Vivek Goyal \u003cvgoyal@redhat.com\u003e\nAcked-by: Jeff Moyer \u003cjmoyer@redhat.com\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "02b35081fc98f681411586d3acf9eaad8b8f6e07",
      "tree": "66cc8c375205a5b032859cdcb0b9b82f04f97443",
      "parents": [
        "b6508c1618e7aab085f191efb41b7b019a94ea38"
      ],
      "author": {
        "name": "Vivek Goyal",
        "email": "vgoyal@redhat.com",
        "time": "Mon Aug 23 12:23:53 2010 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Mon Aug 23 12:23:53 2010 +0200"
      },
      "message": "cfq-iosched: Do group share accounting in IOPS when slice_idle\u003d0\n\no Implement another CFQ mode where we charge group in terms of number\n  of requests dispatched instead of measuring the time. Measuring in terms\n  of time is not possible when we are driving deeper queue depths and there\n  are requests from multiple cfq queues in the request queue.\n\no This mode currently gets activated if one sets slice_idle\u003d0 and associated\n  disk supports NCQ. Again the idea is that on an NCQ disk with idling disabled\n  most of the queues will dispatch 1 or more requests and then cfq queue\n  expiry happens and we don\u0027t have a way to measure time. So start providing\n  fairness in terms of IOPS.\n\no Currently IOPS mode works only with cfq group scheduling. CFQ is following\n  different scheduling algorithms for queue and group scheduling. These IOPS\n  stats are used only for group scheduling hence in non-croup mode nothing\n  should change.\n\no For CFQ group scheduling one can disable slice idling so that we don\u0027t idle\n  on queue and drive deeper request queue depths (achieving better throughput),\n  at the same time group idle is enabled so one should get service\n  differentiation among groups.\n\nSigned-off-by: Vivek Goyal \u003cvgoyal@redhat.com\u003e\nAcked-by: Jeff Moyer \u003cjmoyer@redhat.com\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "b6508c1618e7aab085f191efb41b7b019a94ea38",
      "tree": "9568819705ebbdc3f4bca2d3d0290fe1a0773085",
      "parents": [
        "75230ff2751e88d594a13a70eae2c146f45e323b"
      ],
      "author": {
        "name": "Vivek Goyal",
        "email": "vgoyal@redhat.com",
        "time": "Mon Aug 23 12:23:33 2010 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Mon Aug 23 12:23:33 2010 +0200"
      },
      "message": "cfq-iosched: Do not idle if slice_idle\u003d0\n\nDo not idle either on cfq queue or service tree if slice_idle\u003d0. User does\nnot want any queue or service tree idling. Currently even if slice_idle\u003d0,\nwe were waiting for request to finish before expiring the queue and that\ncan lead to lower queue depths.\n\nAcked-by: Jeff Moyer \u003cjmoyer@redhat.com\u003e\nSigned-off-by: Vivek Goyal \u003cvgoyal@redhat.com\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "96aa1b419d47286db446f292cf898bb1a8b27f24",
      "tree": "1b7a7c5c8131374396df69fd52d02de5de06e978",
      "parents": [
        "9ee47476d6734c9deb9ae9ab05d963302f6b6150"
      ],
      "author": {
        "name": "Ciju Rajan K",
        "email": "ciju@linux.vnet.ibm.com",
        "time": "Mon Aug 23 10:56:30 2010 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Mon Aug 23 10:56:30 2010 +0200"
      },
      "message": "blkio: Fix return code for mkdir calls\n\nIf the cgroup hierarchy for blkio control groups is deeper than two\nlevels, kernel should not allow the creation of further levels. mkdir\nsystem call does not except EINVAL as a return value. This patch\nreplaces EINVAL with more appropriate EPERM\n\nSigned-off-by: Ciju Rajan K \u003cciju@linux.vnet.ibm.com\u003e\nReviewed-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "8d57a98ccd0b4489003473979da8f5a1363ba7a3",
      "tree": "2982997ce66bb6a92c020b7189966c3097095fd7",
      "parents": [
        "93caf8e69eac763f6a20cf253ace8e7fc1ab7953"
      ],
      "author": {
        "name": "Adrian Hunter",
        "email": "adrian.hunter@nokia.com",
        "time": "Wed Aug 11 14:17:49 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Aug 12 08:43:30 2010 -0700"
      },
      "message": "block: add secure discard\n\nSecure discard is the same as discard except that all copies of the\ndiscarded sectors (perhaps created by garbage collection) must also be\nerased.\n\nSigned-off-by: Adrian Hunter \u003cadrian.hunter@nokia.com\u003e\nAcked-by: Jens Axboe \u003caxboe@kernel.dk\u003e\nCc: Kyungmin Park \u003ckmpark@infradead.org\u003e\nCc: Madhusudhan Chikkature \u003cmadhu.cr@ti.com\u003e\nCc: Christoph Hellwig \u003chch@lst.de\u003e\nCc: Ben Gardiner \u003cbengardiner@nanometrics.ca\u003e\nCc: \u003clinux-mmc@vger.kernel.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "6396fc3b3ff3f6b942992b653a62df11dcef9bea",
      "tree": "db3c7cbe833b43c653adc99f70941431c5ff7c4e",
      "parents": [
        "4785879e4d340e24e54f6de2ccfc42728b912808",
        "3d30701b58970425e1d45994d6cb82f828924fdd"
      ],
      "author": {
        "name": "Jiri Kosina",
        "email": "jkosina@suse.cz",
        "time": "Wed Aug 11 09:36:51 2010 +0200"
      },
      "committer": {
        "name": "Jiri Kosina",
        "email": "jkosina@suse.cz",
        "time": "Wed Aug 11 09:36:51 2010 +0200"
      },
      "message": "Merge branch \u0027master\u0027 into for-next\n\nConflicts:\n\tfs/exofs/inode.c\n"
    },
    {
      "commit": "eef35c2d41ddcc653c20d26b977acaa45c811e1f",
      "tree": "616db0eb06b6a3881902db59a0a5bd590277b5a1",
      "parents": [
        "3cfc2c42c1cbc8e238bb9c0612c0df4565e3a8b4"
      ],
      "author": {
        "name": "Stefan Weil",
        "email": "weil@mail.berlios.de",
        "time": "Fri Aug 06 21:11:15 2010 +0200"
      },
      "committer": {
        "name": "Jiri Kosina",
        "email": "jkosina@suse.cz",
        "time": "Mon Aug 09 11:22:49 2010 +0200"
      },
      "message": "Fix spelling fuction -\u003e function in comments\n\nTo avoid more patches, I also fixed other spelling\nand grammar bugs when they were in the same or\nfollowing line:\n\nsuccessfull -\u003e successful\nparse -\u003e parses\ncontroler -\u003e controller\ncontrolers -\u003e controllers\n\nCc: Jiri Kosina \u003ctrivial@kernel.org\u003e\nCc: linux-kernel@vger.kernel.org\nSigned-off-by: Stefan Weil \u003cweil@mail.berlios.de\u003e\nSigned-off-by: Jiri Kosina \u003cjkosina@suse.cz\u003e\n"
    },
    {
      "commit": "18edc8eaa68070771bdb2098260e44efe74de722",
      "tree": "989c6560f5e9bf5e7156853fccb9c4e1bb30adaf",
      "parents": [
        "3383977fadc4027f20907f6208a9033cd043adab"
      ],
      "author": {
        "name": "Dmitry Monakhov",
        "email": "dmonakhov@openvz.org",
        "time": "Fri Aug 06 13:23:25 2010 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Sun Aug 08 12:31:08 2010 -0400"
      },
      "message": "blkdev: fix blkdev_issue_zeroout return value\n\n- If function called without barrier option retvalue is incorrect\n\nSigned-off-by: Dmitry Monakhov \u003cdmonakhov@openvz.org\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "3383977fadc4027f20907f6208a9033cd043adab",
      "tree": "4c950e22a7db4c2f0d5a65462b3f9081f4f6132e",
      "parents": [
        "387ac089361fbe5ef287e6950c5c40f6b18e5c55"
      ],
      "author": {
        "name": "ike Snitzer",
        "email": "snitzer@redhat.com",
        "time": "Sun Aug 08 12:11:33 2010 -0400"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Sun Aug 08 12:11:33 2010 -0400"
      },
      "message": "block: update request stacking methods to support discards\n\nPropagate REQ_DISCARD in cmd_flags when cloning a discard request.\nSkip blk_rq_check_limits\u0027s existing checks for discard requests because\ndiscard limits will have already been checked in blkdev_issue_discard.\n\nSigned-off-by: Mike Snitzer \u003csnitzer@redhat.com\u003e\nReviewed-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "16f2319fd67b169c0b34391d3fa0870fff129891",
      "tree": "986105ef1ea459ad54a28cd19a1585a7e23e850f",
      "parents": [
        "28e18d0188b9e3ab82ebd09d9b1d1c7f8d1822aa"
      ],
      "author": {
        "name": "FUJITA Tomonori",
        "email": "fujita.tomonori@lab.ntt.co.jp",
        "time": "Fri Jul 09 09:38:25 2010 +0900"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Sat Aug 07 18:52:41 2010 +0200"
      },
      "message": "block: set up rq-\u003erq_disk properly for flush requests\n\nq-\u003ebar_rq.rq_disk is NULL. Use the rq_disk of the original request\ninstead.\n\nSigned-off-by: FUJITA Tomonori \u003cfujita.tomonori@lab.ntt.co.jp\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "28e18d0188b9e3ab82ebd09d9b1d1c7f8d1822aa",
      "tree": "cad96b3566ee8da92003689cdba800f8a4f7ca04",
      "parents": [
        "3b06c21e8462b77186613e70db286cfa8616088b"
      ],
      "author": {
        "name": "FUJITA Tomonori",
        "email": "fujita.tomonori@lab.ntt.co.jp",
        "time": "Fri Jul 09 09:38:24 2010 +0900"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Sat Aug 07 18:52:40 2010 +0200"
      },
      "message": "block: set REQ_TYPE_FS on flush requests\n\nthe block layer doesn\u0027t set rq-\u003ecmd_type on flush requests. By\ndefinition, it should be REQ_TYPE_FS (the lower layers build a command\nand interpret the result of it, that is, the block layer doesn\u0027t know\nthe details).\n\nSigned-off-by: FUJITA Tomonori \u003cfujita.tomonori@lab.ntt.co.jp\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "10d1f9e2ccfff40665a00ea0e0a0d11e54c9cbb1",
      "tree": "222c661376d8530a1bdf4e18cf5ff84267529bb3",
      "parents": [
        "f10d9f617a65905c556c3b37c9b9646ae7d04ed7"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Thu Jul 15 10:49:31 2010 -0600"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Sat Aug 07 18:26:33 2010 +0200"
      },
      "message": "block: fix problem with sending down discard that isn\u0027t of correct granularity\n\nIf the queue doesn\u0027t have a limit set, or it just set UINT_MAX like\nwe default to, we coud be sending down a discard request that isn\u0027t\nof the correct granularity if the block size is \u003e 512b.\n\nFix this by adjusting max_discard_sectors down to the proper\nalignment.\n\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "f10d9f617a65905c556c3b37c9b9646ae7d04ed7",
      "tree": "0e1d1a28578e8c1b2115b8486add3b235f7e3619",
      "parents": [
        "2669b19fa4debcdd6a660ace1a124c0900f113e6"
      ],
      "author": {
        "name": "Dave Chinner",
        "email": "dchinner@redhat.com",
        "time": "Tue Jul 13 17:50:50 2010 +1000"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Sat Aug 07 18:26:29 2010 +0200"
      },
      "message": "blkdev: check for valid request queue before issuing flush\n\nIssuing a blkdev_issue_flush() on an unconfigured loop device causes a panic as\nq-\u003emake_request_fn is not configured. This can occur when trying to mount the\nunconfigured loop device as an XFS filesystem. There are no guards that catch\nthe bio before the request function is called because we don\u0027t add a payload to\nthe bio. Instead, manually check this case as soon as we have a pointer to the\nqueue to flush.\n\nSigned-off-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "15392efb9d427482754f6d267262452878667499",
      "tree": "e71dd54c88454971750436f5b4e5e512b0c9368a",
      "parents": [
        "6de43703108bb1d3fc9495b3e8107d6ec72f97e4"
      ],
      "author": {
        "name": "Arnd Bergmann",
        "email": "arnd@arndb.de",
        "time": "Wed Jul 07 16:51:28 2010 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Sat Aug 07 18:26:08 2010 +0200"
      },
      "message": "block: remove BKL from partition ioctls\n\nThe blkpg_ioctl and blkdev_reread_part access fields of\nthe bdev and gendisk structures, yet they always do so\nunder the protection of bdev-\u003ebd_mutex, which seems\nsufficient.\n\nSigned-off-by: Arnd Bergmann \u003carnd@arndb.de\u003e\ncked-by: Christoph Hellwig \u003chch@infradead.org\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "6de43703108bb1d3fc9495b3e8107d6ec72f97e4",
      "tree": "86a5e955f33b0478b61631d373ca01ecf1558bc6",
      "parents": [
        "62c2a7d969f30163f733c81158254b3095b23e72"
      ],
      "author": {
        "name": "Arnd Bergmann",
        "email": "arnd@arndb.de",
        "time": "Wed Jul 07 16:51:27 2010 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Sat Aug 07 18:26:08 2010 +0200"
      },
      "message": "block: remove BKL from BLKROSET and BLKFLSBUF\n\nWe only call the functions set_device_ro(),\ninvalidate_bdev(), sync_filesystem() and sync_blockdev()\nwhile holding the BKL in these commands. All\nof these are also done in other code paths without\nthe BKL, which leads me to the conclusion that\nthe BKL is not needed here either.\n\nThe reason we hold it here is that it was originally\npushed down into the ioctl function from vfs_ioctl.\n\nSigned-off-by: Arnd Bergmann \u003carnd@arndb.de\u003e\nReviewed-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "62c2a7d969f30163f733c81158254b3095b23e72",
      "tree": "3e5dd79d874b996757814562b874a18415599a61",
      "parents": [
        "6e9624b8caec290d28b4c6d9ec75749df6372b87"
      ],
      "author": {
        "name": "Arnd Bergmann",
        "email": "arnd@arndb.de",
        "time": "Wed Jul 07 16:51:26 2010 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Sat Aug 07 18:26:08 2010 +0200"
      },
      "message": "block: push BKL into blktrace ioctls\n\nThe blktrace driver currently needs the BKL, but\nwe should not need to take that in the block layer,\nso just push it down into the driver itself.\n\nIt is quite likely that the BKL is not actually\nrequired in blktrace code and could be removed\nin a follow-on patch.\n\nSigned-off-by: Arnd Bergmann \u003carnd@arndb.de\u003e\nAcked-by: Christoph Hellwig \u003chch@infradead.org\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "8a6cfeb6deca3a8fefd639d898b0d163c0b5d368",
      "tree": "9a633ad48c3b1ada0519ee7bade0602f940037f6",
      "parents": [
        "34484062445fe905bf02c72f87ddda21881acda3"
      ],
      "author": {
        "name": "Arnd Bergmann",
        "email": "arnd@arndb.de",
        "time": "Thu Jul 08 10:18:46 2010 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Sat Aug 07 18:25:00 2010 +0200"
      },
      "message": "block: push down BKL into .locked_ioctl\n\nAs a preparation for the removal of the big kernel\nlock in the block layer, this removes the BKL\nfrom the common ioctl handling code, moving it\ninto every single driver still using it.\n\nSigned-off-by: Arnd Bergmann \u003carnd@arndb.de\u003e\nAcked-by: Christoph Hellwig \u003chch@infradead.org\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "00fff26539bfe3fad21c164fc4002d9ede056fb0",
      "tree": "4909c8eed03133b1d46f689e465ed1f579b8e282",
      "parents": [
        "afc23068103ccfbf1917eb2a007bc15ab5418cc9"
      ],
      "author": {
        "name": "FUJITA Tomonori",
        "email": "fujita.tomonori@lab.ntt.co.jp",
        "time": "Sat Jul 03 17:45:40 2010 +0900"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Sat Aug 07 18:24:15 2010 +0200"
      },
      "message": "block: remove q-\u003eprepare_flush_fn completely\n\nThis removes q-\u003eprepare_flush_fn completely (changes the\nblk_queue_ordered API).\n\nSigned-off-by: FUJITA Tomonori \u003cfujita.tomonori@lab.ntt.co.jp\u003e\nReviewed-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "b6a903151d05e3912ab66b186f74c61851efb88c",
      "tree": "dbf0f8d2da9aba48cac375304a9842e0166628c8",
      "parents": [
        "8749534fe6826596b71bc409c872b047a8e2755b"
      ],
      "author": {
        "name": "FUJITA Tomonori",
        "email": "fujita.tomonori@lab.ntt.co.jp",
        "time": "Sat Jul 03 17:45:33 2010 +0900"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Sat Aug 07 18:23:56 2010 +0200"
      },
      "message": "block: permit PREFLUSH and POSTFLUSH without prepare_flush_fn\n\nThis is preparation for removing q-\u003eprepare_flush_fn.\n\nTemporarily, blk_queue_ordered() permits QUEUE_ORDERED_DO_PREFLUSH and\nQUEUE_ORDERED_DO_POSTFLUSH without prepare_flush_fn.\n\nSigned-off-by: FUJITA Tomonori \u003cfujita.tomonori@lab.ntt.co.jp\u003e\nReviewed-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "8749534fe6826596b71bc409c872b047a8e2755b",
      "tree": "29ceb928f03dfb33d3a03df1c00e4a51d22b55b3",
      "parents": [
        "802447c1c0513a0ea0e29d6bda23b19ac0686654"
      ],
      "author": {
        "name": "FUJITA Tomonori",
        "email": "fujita.tomonori@lab.ntt.co.jp",
        "time": "Sat Jul 03 17:45:32 2010 +0900"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Sat Aug 07 18:23:53 2010 +0200"
      },
      "message": "block: introduce REQ_FLUSH flag\n\nSCSI-ml needs a way to mark a request as flush request in\nq-\u003eprepare_flush_fn because it needs to identify them later (e.g. in\nq-\u003erequest_fn or prep_rq_fn).\n\nqueue_flush sets REQ_HARDBARRIER in rq-\u003ecmd_flags however the block\nlayer also sends normal REQ_TYPE_FS requests with REQ_HARDBARRIER. So\nSCSI-ml can\u0027t use REQ_HARDBARRIER to identify flush requests.\n\nWe could change the block layer to clear REQ_HARDBARRIER bit before\nsending non flush requests to the lower layers. However, intorudcing\nthe new flag looks cleaner (surely easier).\n\nSigned-off-by: FUJITA Tomonori \u003cfujita.tomonori@lab.ntt.co.jp\u003e\nCc: James Bottomley \u003cJames.Bottomley@suse.de\u003e\nCc: David S. Miller \u003cdavem@davemloft.net\u003e\nCc: Rusty Russell \u003crusty@rustcorp.com.au\u003e\nCc: Alasdair G Kergon \u003cagk@redhat.com\u003e\nReviewed-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "28018c242a4ec7017bbbf81d2d3952f820a27118",
      "tree": "03732bef20d0e4dad30d81d9b9ad9ffcf5a2e41c",
      "parents": [
        "e597cd09f711b28b8466ebdc2f12e55b44fa81e4"
      ],
      "author": {
        "name": "James Bottomley",
        "email": "James.Bottomley@suse.de",
        "time": "Thu Jul 01 19:49:17 2010 +0900"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Sat Aug 07 18:23:47 2010 +0200"
      },
      "message": "block: implement an unprep function corresponding directly to prep\n\nReviewed-by: FUJITA Tomonori \u003cfujita.tomonori@lab.ntt.co.jp\u003e\n\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "3ffb52e73b47d6ad86b645942ff49035efdbcd31",
      "tree": "1bc8e681b7b4249c0cbb804014769b0370885c73",
      "parents": [
        "511d37af66246c67f65e7896c230bdb81d853b6c"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Tue Jun 29 13:33:38 2010 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Sat Aug 07 18:23:41 2010 +0200"
      },
      "message": "block: fixup missing conversion from BIO_RW_DISCARD to REQ_DISCARD\n\nDidn\u0027t cause a merge conflict, so fixed this one up manually\npost merge.\n\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "2c8919dee659928d66cc13333d4e7a5bdd2206d5",
      "tree": "c60a8c1208cd89b0f5bdb7fc8cdc082b4569f289",
      "parents": [
        "66ac0280197981f88774e74b60c8e5f9f07c1dba"
      ],
      "author": {
        "name": "Andi Kleen",
        "email": "andi@firstfloor.org",
        "time": "Mon Jun 21 11:02:47 2010 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Sat Aug 07 18:23:10 2010 +0200"
      },
      "message": "gcc-4.6: block: fix unused but set variables in blk-merge\n\nJust some dead code.\n\nSigned-off-by: Andi Kleen \u003cak@linux.intel.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "66ac0280197981f88774e74b60c8e5f9f07c1dba",
      "tree": "d093ce493146779926df88b5831805c6f9ee14e1",
      "parents": [
        "082439004b31adc146e96e5f1c574dd2b57dcd93"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@lst.de",
        "time": "Fri Jun 18 16:59:42 2010 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Sat Aug 07 18:23:08 2010 +0200"
      },
      "message": "block: don\u0027t allocate a payload for discard request\n\nAllocating a fixed payload for discard requests always was a horrible hack,\nand it\u0027s not coming to byte us when adding support for discard in DM/MD.\n\nSo change the code to leave the allocation of a payload to the lowlevel\ndriver.  Unfortunately that means we\u0027ll need another hack, which allows\nus to update the various block layer length fields indicating that we\nhave a payload.  Instead of hiding this in sd.c, which we already partially\ndo for UNMAP support add a documented helper in the core block layer for it.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nAcked-by: Mike Snitzer \u003csnitzer@redhat.com\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "7b6d91daee5cac6402186ff224c3af39d79f4a0e",
      "tree": "b1518cf0b6c301178e0a320f80610cd5b3aa7625",
      "parents": [
        "33659ebbae262228eef4e0fe990f393d1f0ed941"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@lst.de",
        "time": "Sat Aug 07 18:20:39 2010 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Sat Aug 07 18:20:39 2010 +0200"
      },
      "message": "block: unify flags for struct bio and struct request\n\nRemove the current bio flags and reuse the request flags for the bio, too.\nThis allows to more easily trace the type of I/O from the filesystem\ndown to the block driver.  There were two flags in the bio that were\nmissing in the requests:  BIO_RW_UNPLUG and BIO_RW_AHEAD.  Also I\u0027ve\nrenamed two request flags that had a superflous RW in them.\n\nNote that the flags are in bio.h despite having the REQ_ name - as\nblkdev.h includes bio.h that is the only way to go for now.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "33659ebbae262228eef4e0fe990f393d1f0ed941",
      "tree": "fcb537f09359c8dad3a6f6e16dc4319562dc42cc",
      "parents": [
        "7e005f79791dcd58436c88ded4a7f5aed1b82147"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@lst.de",
        "time": "Sat Aug 07 18:17:56 2010 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Sat Aug 07 18:17:56 2010 +0200"
      },
      "message": "block: remove wrappers for request type/flags\n\nRemove all the trivial wrappers for the cmd_type and cmd_flags fields in\nstruct requests.  This allows much easier grepping for different request\ntypes instead of unwinding through macros.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "956bcb7c1a9a73c6d5db66e83f32c785d06dc8fc",
      "tree": "dca3c08c3bff512c9d47a78c6762b006e165cc5d",
      "parents": [
        "e2e1a148bc45855816ae6b4692ce29d0020fa22e"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Sat Aug 07 18:13:50 2010 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Sat Aug 07 18:13:50 2010 +0200"
      },
      "message": "block: add helpers for the trivial queue flag sysfs show/store entries\n\nThe code for nonrot, random, and io stats are completely identical.\n\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "e2e1a148bc45855816ae6b4692ce29d0020fa22e",
      "tree": "fd5ec8a580d4333b471acfe50f6f92b4cc880087",
      "parents": [
        "841fdffdd382722d33579a6aa1487e8a4e526dbd"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Wed Jun 09 10:42:09 2010 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Sat Aug 07 18:13:00 2010 +0200"
      },
      "message": "block: add sysfs knob for turning off disk entropy contributions\n\nThere are two reasons for doing this:\n\n- On SSD disks, the completion times aren\u0027t as random as they\n  are for rotational drives. So it\u0027s questionable whether they\n  should contribute to the random pool in the first place.\n\n- Calling add_disk_randomness() has a lot of overhead.\n\nThis adds /sys/block/\u003cdev\u003e/queue/add_random that will allow you to\nswitch off on a per-device basis. The default setting is on, so there\nshould be no functional changes from this patch.\n\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "1b99973f1c82707e46e8cb9416865a1e955e8f8c",
      "tree": "b264a9cbd3a36016d312484dcad38f778122af49",
      "parents": [
        "9e495db1a1f931e82c9edccd677dd171be5b85d2"
      ],
      "author": {
        "name": "Tao Ma",
        "email": "tao.ma@oracle.com",
        "time": "Thu Jun 24 07:43:57 2010 +0800"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Thu Jun 24 08:14:22 2010 +0200"
      },
      "message": "block: Don\u0027t count_vm_events for discard bio in submit_bio.\n\nIn submit_bio, we count vm events by check READ/WRITE.\nBut actually DISCARD_NOBARRIER also has the WRITE flag set.\nIt looks as if in blkdev_issue_discard, we also add a\npage as the payload and the bio_has_data check isn\u0027t enough.\nSo add another check for discard bio.\n\nSigned-off-by: Tao Ma \u003ctao.ma@oracle.com\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "9e495db1a1f931e82c9edccd677dd171be5b85d2",
      "tree": "4f2470127b030df35b10bd0bbedaab586cf38b58",
      "parents": [
        "e98ef89b30b8a2e882b11d4965347015770f3627"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Mon Jun 21 09:10:55 2010 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Mon Jun 21 09:10:55 2010 +0200"
      },
      "message": "cfq: fix recursive call in cfq_blkiocg_update_completion_stats()\n\ne98ef89b has a typo, causing cfq_blkiocg_update_completion_stats()\nto call itself instead of blkiocg_update_completion_stats().\n\nReported-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    }
  ],
  "next": "e98ef89b30b8a2e882b11d4965347015770f3627"
}
