)]}'
{
  "log": [
    {
      "commit": "019ceb7d5d252ce71001a157cf29f4ac28501b72",
      "tree": "53faeec57ba2149658b7eb7b85830f9bcdbe1540",
      "parents": [
        "a2c2a0e668e26e020731ce2a40e6474d1d37210a"
      ],
      "author": {
        "name": "Shaohua Li",
        "email": "shaohua.li@intel.com",
        "time": "Wed Nov 16 09:21:50 2011 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@kernel.dk",
        "time": "Wed Nov 16 09:21:50 2011 +0100"
      },
      "message": "block: add missed trace_block_plug\n\nAfter flush plug list, the list has no request, so we need to add a\ntrace_block_plug().\n\nSigned-off-by: Shaohua Li \u003cshaohua.li@intel.com\u003e\nReviewed-by: Namhyung Kim \u003cnamhyung@gmail.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Jens Axboe \u003caxboe@kernel.dk\u003e\n"
    },
    {
      "commit": "3540d5e89b2ac268fcfc9b07a50a9ba4acc2e5e5",
      "tree": "10bb06165130e4ffe90bd990fbba497be8fb4e8a",
      "parents": [
        "0007a4c90a11a5371c8b3f80b220fa402a399189"
      ],
      "author": {
        "name": "Shaohua Li",
        "email": "shaohua.li@intel.com",
        "time": "Wed Nov 16 09:21:50 2011 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@kernel.dk",
        "time": "Wed Nov 16 09:21:50 2011 +0100"
      },
      "message": "block: avoid unnecessary plug list flush\n\nget_request_wait() could sleep and flush the plug list.  If the list is\nalready flushed, don\u0027t flush again.\n\nSigned-off-by: Shaohua Li \u003cshaohua.li@intel.com\u003e\nReviewed-by: Namhyung Kim \u003cnamhyung@gmail.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Jens Axboe \u003caxboe@kernel.dk\u003e\n"
    },
    {
      "commit": "6b76106d8ef31111d6fc469564b83b5f5542794f",
      "tree": "3df7d414b200aa07f083f70a1c4f5c8da7a11043",
      "parents": [
        "193733585692301f38d489b8ad8724c2f88349c0"
      ],
      "author": {
        "name": "Ben Hutchings",
        "email": "ben@decadent.org.uk",
        "time": "Sun Nov 13 19:58:09 2011 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@kernel.dk",
        "time": "Sun Nov 13 19:58:09 2011 +0100"
      },
      "message": "block: Always check length of all iov entries in blk_rq_map_user_iov()\n\nEven after commit 5478755616ae2ef1ce144dded589b62b2a50d575\n(\"block: check for proper length of iov entries earlier ...\")\nwe still won\u0027t check for zero-length entries after an unaligned\nentry.  Remove the break-statement, so all entries are checked.\n\nSigned-off-by: Ben Hutchings \u003cben@decadent.org.uk\u003e\nCc: stable@vger.kernel.org\nSigned-off-by: Jens Axboe \u003caxboe@kernel.dk\u003e\n"
    },
    {
      "commit": "d0985394e7fee6b25a7cc8335d45bc1c1a8ab2d3",
      "tree": "44f19c0500580fd0c3ea39f355c9636bec59d677",
      "parents": [
        "1ea6b8f48918282bdca0b32a34095504ee65bab5"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Thu Nov 10 09:03:55 2011 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@kernel.dk",
        "time": "Thu Nov 10 09:03:55 2011 +0100"
      },
      "message": "block: Revert \"[SCSI] genhd: add a new attribute \"alias\" in gendisk\"\n\nThis reverts commit a72c5e5eb738033938ab30d6a634b74d1d060f10.\n\nThe commit introduced alias for block devices which is intended to be\nused during logging although actual usage hasn\u0027t been committed yet.\nThis approach adds very limited benefit (raw log might be easier to\nfollow) which can be trivially implemented in userland but has a lot\nof problems.\n\nIt is much worse than netif renames because it doesn\u0027t rename the\nactual device but just adds conveninence name which isn\u0027t used\nuniversally or enforced.  Everything internal including device lookup\nand sysfs still uses the internal name and nothing prevents two\ndevices from using conflicting alias - ie. sda can have sdb as its\nalias.\n\nThis has been nacked by people working on device driver core, block\nlayer and kernel-userland interface and shouldn\u0027t have been\nupstreamed.  Revert it.\n\n http://thread.gmane.org/gmane.linux.kernel/1155104\n http://thread.gmane.org/gmane.linux.scsi/68632\n http://thread.gmane.org/gmane.linux.scsi/69776\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nAcked-by: Greg Kroah-Hartman \u003cgregkh@suse.de\u003e\n Acked-by: Kay Sievers \u003ckay.sievers@vrfy.org\u003e\nCc: \"James E.J. Bottomley\" \u003cJames.Bottomley@HansenPartnership.com\u003e\nCc: Nao Nishijima \u003cnao.nishijima.xt@hitachi.com\u003e\nCc: Alan Cox \u003calan@linux.intel.com\u003e\nCc: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nSigned-off-by: Jens Axboe \u003caxboe@kernel.dk\u003e\n"
    },
    {
      "commit": "32aaeffbd4a7457bf2f7448b33b5946ff2a960eb",
      "tree": "faf7ad871d87176423ff9ed1d1ba4d9c688fc23f",
      "parents": [
        "208bca0860406d16398145ddd950036a737c3c9d",
        "67b84999b1a8b1af5625b1eabe92146c5eb42932"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Nov 06 19:44:47 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Nov 06 19:44:47 2011 -0800"
      },
      "message": "Merge branch \u0027modsplit-Oct31_2011\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/paulg/linux\n\n* \u0027modsplit-Oct31_2011\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/paulg/linux: (230 commits)\n  Revert \"tracing: Include module.h in define_trace.h\"\n  irq: don\u0027t put module.h into irq.h for tracking irqgen modules.\n  bluetooth: macroize two small inlines to avoid module.h\n  ip_vs.h: fix implicit use of module_get/module_put from module.h\n  nf_conntrack.h: fix up fallout from implicit moduleparam.h presence\n  include: replace linux/module.h with \"struct module\" wherever possible\n  include: convert various register fcns to macros to avoid include chaining\n  crypto.h: remove unused crypto_tfm_alg_modname() inline\n  uwb.h: fix implicit use of asm/page.h for PAGE_SIZE\n  pm_runtime.h: explicitly requires notifier.h\n  linux/dmaengine.h: fix implicit use of bitmap.h and asm/page.h\n  miscdevice.h: fix up implicit use of lists and types\n  stop_machine.h: fix implicit use of smp.h for smp_processor_id\n  of: fix implicit use of errno.h in include/linux/of.h\n  of_platform.h: delete needless include \u003clinux/module.h\u003e\n  acpi: remove module.h include from platform/aclinux.h\n  miscdevice.h: delete unnecessary inclusion of module.h\n  device_cgroup.h: delete needless include \u003clinux/module.h\u003e\n  net: sch_generic remove redundant use of \u003clinux/module.h\u003e\n  net: inet_timewait_sock doesnt need \u003clinux/module.h\u003e\n  ...\n\nFix up trivial conflicts (other header files, and  removal of the ab3550 mfd driver) in\n - drivers/media/dvb/frontends/dibx000_common.c\n - drivers/media/video/{mt9m111.c,ov6650.c}\n - drivers/mfd/ab3550-core.c\n - include/linux/dmaengine.h\n"
    },
    {
      "commit": "3d0a8d10cfb4cc3d1877c29a866ee7d8a46aa2fa",
      "tree": "11a85044d1472f5972ae47ce10a2f446ad981e9f",
      "parents": [
        "b4fdcb02f1e39c27058a885905bd0277370ba441",
        "a0eda62552eba4e1f92d5354bb65c68fb6b45f87"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Nov 04 17:22:14 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Nov 04 17:22:14 2011 -0700"
      },
      "message": "Merge branch \u0027for-3.2/drivers\u0027 of git://git.kernel.dk/linux-block\n\n* \u0027for-3.2/drivers\u0027 of git://git.kernel.dk/linux-block: (30 commits)\n  virtio-blk: use ida to allocate disk index\n  hpsa: add small delay when using PCI Power Management to reset for kump\n  cciss: add small delay when using PCI Power Management to reset for kump\n  xen/blkback: Fix two races in the handling of barrier requests.\n  xen/blkback: Check for proper operation.\n  xen/blkback: Fix the inhibition to map pages when discarding sector ranges.\n  xen/blkback: Report VBD_WSECT (wr_sect) properly.\n  xen/blkback: Support \u0027feature-barrier\u0027 aka old-style BARRIER requests.\n  xen-blkfront: plug device number leak in xlblk_init() error path\n  xen-blkfront: If no barrier or flush is supported, use invalid operation.\n  xen-blkback: use kzalloc() in favor of kmalloc()+memset()\n  xen-blkback: fixed indentation and comments\n  xen-blkfront: fix a deadlock while handling discard response\n  xen-blkfront: Handle discard requests.\n  xen-blkback: Implement discard requests (\u0027feature-discard\u0027)\n  xen-blkfront: add BLKIF_OP_DISCARD and discard request struct\n  drivers/block/loop.c: remove unnecessary bdev argument from loop_clr_fd()\n  drivers/block/loop.c: emit uevent on auto release\n  drivers/block/cpqarray.c: use pci_dev-\u003erevision\n  loop: always allow userspace partitions and optionally support automatic scanning\n  ...\n\nFic up trivial header file includsion conflict in drivers/block/loop.c\n"
    },
    {
      "commit": "b4fdcb02f1e39c27058a885905bd0277370ba441",
      "tree": "fd4cfd1994f21f44afe5e7904681fb5ac09f81b8",
      "parents": [
        "044595d4e448305fbaec472eb7d22636d24e7d8c",
        "6dd9ad7df2019b1e33a372a501907db293ebcd0d"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Nov 04 17:06:58 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Nov 04 17:06:58 2011 -0700"
      },
      "message": "Merge branch \u0027for-3.2/core\u0027 of git://git.kernel.dk/linux-block\n\n* \u0027for-3.2/core\u0027 of git://git.kernel.dk/linux-block: (29 commits)\n  block: don\u0027t call blk_drain_queue() if elevator is not up\n  blk-throttle: use queue_is_locked() instead of lockdep_is_held()\n  blk-throttle: Take blkcg-\u003elock while traversing blkcg-\u003epolicy_list\n  blk-throttle: Free up policy node associated with deleted rule\n  block: warn if tag is greater than real_max_depth.\n  block: make gendisk hold a reference to its queue\n  blk-flush: move the queue kick into\n  blk-flush: fix invalid BUG_ON in blk_insert_flush\n  block: Remove the control of complete cpu from bio.\n  block: fix a typo in the blk-cgroup.h file\n  block: initialize the bounce pool if high memory may be added later\n  block: fix request_queue lifetime handling by making blk_queue_cleanup() properly shutdown\n  block: drop @tsk from attempt_plug_merge() and explain sync rules\n  block: make get_request[_wait]() fail if queue is dead\n  block: reorganize throtl_get_tg() and blk_throtl_bio()\n  block: reorganize queue draining\n  block: drop unnecessary blk_get/put_queue() in scsi_cmd_ioctl() and blk_get_tg()\n  block: pass around REQ_* flags instead of broken down booleans during request alloc/free\n  block: move blk_throtl prototypes to block/blk.h\n  block: fix genhd refcounting in blkio_policy_parse_and_set()\n  ...\n\nFix up trivial conflicts due to \"mddev_t\" -\u003e \"struct mddev\" conversion\nand making the request functions be of type \"void\" instead of \"int\" in\n - drivers/md/{faulty.c,linear.c,md.c,md.h,multipath.c,raid0.c,raid1.c,raid10.c,raid5.c}\n - drivers/staging/zram/zram_drv.c\n"
    },
    {
      "commit": "6dd9ad7df2019b1e33a372a501907db293ebcd0d",
      "tree": "1a07cfde1f3ea94b3f5f62e688d21668ff7831e4",
      "parents": [
        "334c2b0b8b2ab186fa198413386cba41fffcb4f2"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Thu Nov 03 18:52:11 2011 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@kernel.dk",
        "time": "Thu Nov 03 18:52:11 2011 +0100"
      },
      "message": "block: don\u0027t call blk_drain_queue() if elevator is not up\n\nblk_cleanup_queue() may be called before elevator is set up on a\nqueue which triggers the following oops.\n\n BUG: unable to handle kernel NULL pointer dereference at           (null)\n IP: [\u003cffffffff8125a69c\u003e] elv_drain_elevator+0x1c/0x70\n ...\n Pid: 830, comm: kworker/0:2 Not tainted 3.1.0-next-20111025_64+ #1590\n Bochs Bochs\n RIP: 0010:[\u003cffffffff8125a69c\u003e]  [\u003cffffffff8125a69c\u003e] elv_drain_elevator+0x1c/0x70\n ...\n Call Trace:\n  [\u003cffffffff8125da92\u003e] blk_drain_queue+0x42/0x70\n  [\u003cffffffff8125db90\u003e] blk_cleanup_queue+0xd0/0x1c0\n  [\u003cffffffff81469640\u003e] md_free+0x50/0x70\n  [\u003cffffffff8126f43b\u003e] kobject_release+0x8b/0x1d0\n  [\u003cffffffff81270d56\u003e] kref_put+0x36/0xa0\n  [\u003cffffffff8126f2b7\u003e] kobject_put+0x27/0x60\n  [\u003cffffffff814693af\u003e] mddev_delayed_delete+0x2f/0x40\n  [\u003cffffffff81083450\u003e] process_one_work+0x100/0x3b0\n  [\u003cffffffff8108527f\u003e] worker_thread+0x15f/0x3a0\n  [\u003cffffffff81089937\u003e] kthread+0x87/0x90\n  [\u003cffffffff81621834\u003e] kernel_thread_helper+0x4/0x10\n\nFix it by making blk_cleanup_queue() check whether q-\u003eelevator is set\nup before invoking blk_drain_queue.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nReported-and-tested-by: Jiri Slaby \u003cjslaby@suse.cz\u003e\nSigned-off-by: Jens Axboe \u003caxboe@kernel.dk\u003e\n"
    },
    {
      "commit": "6adb1236b5c1220987209aa68192e0cbad73e9fc",
      "tree": "7ad3f412de234888be103c807bffbe67457a865a",
      "parents": [
        "0c8d44f239b453517d25d0fcfd2737bb5cb34ef8"
      ],
      "author": {
        "name": "Paul Gortmaker",
        "email": "paul.gortmaker@windriver.com",
        "time": "Wed Sep 28 18:26:05 2011 -0400"
      },
      "committer": {
        "name": "Paul Gortmaker",
        "email": "paul.gortmaker@windriver.com",
        "time": "Mon Oct 31 19:31:13 2011 -0400"
      },
      "message": "block: Change module.h -\u003e export.h in bsg-lib.c\n\nThis file isn\u0027t using full modular functionality, and hence\ncan be \"downgraded\" to just using the export.h header.\n\nReported-by: Stephen Rothwell \u003csfr@canb.auug.org.au\u003e\nSigned-off-by: Paul Gortmaker \u003cpaul.gortmaker@windriver.com\u003e\n"
    },
    {
      "commit": "d5decd3b9512e35c87492312a72443192eebdda9",
      "tree": "96aec1c137a09e3b8c4129862d117ce9775909fb",
      "parents": [
        "a0e5cc581b3fc0e0a909e3cab48d9ec286c2a276"
      ],
      "author": {
        "name": "Paul Gortmaker",
        "email": "paul.gortmaker@windriver.com",
        "time": "Thu May 26 16:00:52 2011 -0400"
      },
      "committer": {
        "name": "Paul Gortmaker",
        "email": "paul.gortmaker@windriver.com",
        "time": "Mon Oct 31 19:31:12 2011 -0400"
      },
      "message": "block: add export.h to files using EXPORT_SYMBOL/THIS_MODULE macros\n\nThese files were getting \u003clinux/module.h\u003e via an implicit include\npath, but we want to crush those out of existence since they cost\ntime during compiles of processing thousands of lines of headers\nfor no reason.  Give them the lightweight header that just contains\nthe EXPORT_SYMBOL infrastructure.\n\nSigned-off-by: Paul Gortmaker \u003cpaul.gortmaker@windriver.com\u003e\n"
    },
    {
      "commit": "ec7ae517537ae5c7b0b2cd7f562dfa3e7a05b954",
      "tree": "e6b0c64a51a7c0aa0efd09d4f7a80872e3b1657a",
      "parents": [
        "97d2eb13a019ec09cc1a7ea2d3705c0b117b3c0d",
        "590134fa78fbdbe5fea78c7ae0b2c3364bc9572f"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Oct 28 16:44:18 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Oct 28 16:44:18 2011 -0700"
      },
      "message": "Merge git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi-misc-2.6\n\n* git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi-misc-2.6: (204 commits)\n  [SCSI] qla4xxx: export address/port of connection (fix udev disk names)\n  [SCSI] ipr: Fix BUG on adapter dump timeout\n  [SCSI] megaraid_sas: Fix instance access in megasas_reset_timer\n  [SCSI] hpsa: change confusing message to be more clear\n  [SCSI] iscsi class: fix vlan configuration\n  [SCSI] qla4xxx: fix data alignment and use nl helpers\n  [SCSI] iscsi class: fix link local mispelling\n  [SCSI] iscsi class: Replace iscsi_get_next_target_id with IDA\n  [SCSI] aacraid: use lower snprintf() limit\n  [SCSI] lpfc 8.3.27: Change driver version to 8.3.27\n  [SCSI] lpfc 8.3.27: T10 additions for SLI4\n  [SCSI] lpfc 8.3.27: Fix queue allocation failure recovery\n  [SCSI] lpfc 8.3.27: Change algorithm for getting physical port name\n  [SCSI] lpfc 8.3.27: Changed worst case mailbox timeout\n  [SCSI] lpfc 8.3.27: Miscellanous logic and interface fixes\n  [SCSI] megaraid_sas: Changelog and version update\n  [SCSI] megaraid_sas: Add driver workaround for PERC5/1068 kdump kernel panic\n  [SCSI] megaraid_sas: Add multiple MSI-X vector/multiple reply queue support\n  [SCSI] megaraid_sas: Add support for MegaRAID 9360/9380 12GB/s controllers\n  [SCSI] megaraid_sas: Clear FUSION_IN_RESET before enabling interrupts\n  ...\n"
    },
    {
      "commit": "334c2b0b8b2ab186fa198413386cba41fffcb4f2",
      "tree": "56c4648cd19c6a613ff653933697ee5cc3e18c87",
      "parents": [
        "a38eb630fa224d6fba8c14a4063174bc5e0f63bb"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "axboe@kernel.dk",
        "time": "Tue Oct 25 15:51:48 2011 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@kernel.dk",
        "time": "Tue Oct 25 15:51:48 2011 +0200"
      },
      "message": "blk-throttle: use queue_is_locked() instead of lockdep_is_held()\n\nWe can\u0027t use the latter if !CONFIG_LOCKDEP.\n\nReported-by: Sedat Dilek \u003csedat.dilek@googlemail.com\u003e\nSigned-off-by: Jens Axboe \u003caxboe@kernel.dk\u003e\n"
    },
    {
      "commit": "a38eb630fa224d6fba8c14a4063174bc5e0f63bb",
      "tree": "b86cb5b0aaa4b6d45d798b5155ed2089177f8206",
      "parents": [
        "e060f00beee23568fe2c4faf1e88ff22edefd7b2"
      ],
      "author": {
        "name": "Vivek Goyal",
        "email": "vgoyal@redhat.com",
        "time": "Tue Oct 25 15:48:12 2011 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@kernel.dk",
        "time": "Tue Oct 25 15:48:12 2011 +0200"
      },
      "message": "blk-throttle: Take blkcg-\u003elock while traversing blkcg-\u003epolicy_list\n\nblkcg-\u003epolicy_list is protected by blkcg-\u003elock. Its not rcu protected\nlist. So even for readers, they need to take blkcg-\u003elock. There are\nfew functions which were reading the list without taking lock. Fix it.\n\nSigned-off-by: Vivek Goyal \u003cvgoyal@redhat.com\u003e\nAcked-by: Tejun Heo \u003ctj@kernel.org\u003e\nSigned-off-by: Jens Axboe \u003caxboe@kernel.dk\u003e\n"
    },
    {
      "commit": "e060f00beee23568fe2c4faf1e88ff22edefd7b2",
      "tree": "a953ca37996c2010c4e8dda7fbdd76b270a9b4df",
      "parents": [
        "5e08159197b5b98a6648a172008de23f420e6c11"
      ],
      "author": {
        "name": "Vivek Goyal",
        "email": "vgoyal@redhat.com",
        "time": "Tue Oct 25 15:48:12 2011 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@kernel.dk",
        "time": "Tue Oct 25 15:48:12 2011 +0200"
      },
      "message": "blk-throttle: Free up policy node associated with deleted rule\n\nIf a rule is being deleted, free up associated policy node. Otherwise\nthat memory is leaked.\n\nSigned-off-by: Vivek Goyal \u003cvgoyal@redhat.com\u003e\nAcked-by: Tejun Heo \u003ctj@kernel.org\u003e\nSigned-off-by: Jens Axboe \u003caxboe@kernel.dk\u003e\n"
    },
    {
      "commit": "5e08159197b5b98a6648a172008de23f420e6c11",
      "tree": "7d9d9b275f8b62fa5069012df293e0af364bce86",
      "parents": [
        "83157223defe3be490cfea048e83451b6f254216"
      ],
      "author": {
        "name": "Tao Ma",
        "email": "boyu.mt@taobao.com",
        "time": "Tue Oct 25 10:20:05 2011 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@kernel.dk",
        "time": "Tue Oct 25 10:20:05 2011 +0200"
      },
      "message": "block: warn if tag is greater than real_max_depth.\n\nIn case tag depth is reduced, it is max_depth not real_max_depth.\nSo we should allow a request with tag \u003e\u003d max_depth, but for a\ntag \u003e\u003d real_max_depth, there really should be some problem.\n\nSigned-off-by: Tao Ma \u003cboyu.mt@taobao.com\u003e\nSigned-off-by: Jens Axboe \u003caxboe@kernel.dk\u003e\n"
    },
    {
      "commit": "83157223defe3be490cfea048e83451b6f254216",
      "tree": "fa484185d27765a13036bb43ae68d8cdb63f585b",
      "parents": [
        "9562ad9ab36df7ccef920d119f3b5100025db95f",
        "f992ae801a7dec34a4ed99a6598bbbbfb82af4fb"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "axboe@kernel.dk",
        "time": "Mon Oct 24 16:24:38 2011 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@kernel.dk",
        "time": "Mon Oct 24 16:24:38 2011 +0200"
      },
      "message": "Merge branch \u0027for-linus\u0027 into for-3.2/core\n"
    },
    {
      "commit": "f992ae801a7dec34a4ed99a6598bbbbfb82af4fb",
      "tree": "5c8892f67867cb09e9c3c046f881e56200926ff8",
      "parents": [
        "e67b77c791ca2778198c9e7088f3266ed2da7a55"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Mon Oct 17 13:42:43 2011 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@kernel.dk",
        "time": "Mon Oct 24 16:24:31 2011 +0200"
      },
      "message": "block: make gendisk hold a reference to its queue\n\nThe following command sequence triggers an oops.\n\n# mount /dev/sdb1 /mnt\n# echo 1 \u003e /sys/class/scsi_device/0\\:0\\:1\\:0/device/delete\n# umount /mnt\n\n general protection fault: 0000 [#1] PREEMPT SMP\n CPU 2\n Modules linked in:\n\n Pid: 791, comm: umount Not tainted 3.1.0-rc3-work+ #8 Bochs Bochs\n RIP: 0010:[\u003cffffffff810d0879\u003e]  [\u003cffffffff810d0879\u003e] __lock_acquire+0x389/0x1d60\n...\n Call Trace:\n  [\u003cffffffff810d2845\u003e] lock_acquire+0x95/0x140\n  [\u003cffffffff81aed87b\u003e] _raw_spin_lock+0x3b/0x50\n  [\u003cffffffff811573bc\u003e] bdi_lock_two+0x5c/0x70\n  [\u003cffffffff811c2f6c\u003e] bdev_inode_switch_bdi+0x4c/0xf0\n  [\u003cffffffff811c3fcb\u003e] __blkdev_put+0x11b/0x1d0\n  [\u003cffffffff811c4010\u003e] __blkdev_put+0x160/0x1d0\n  [\u003cffffffff811c40df\u003e] blkdev_put+0x5f/0x190\n  [\u003cffffffff8118f18d\u003e] kill_block_super+0x4d/0x80\n  [\u003cffffffff8118f4a5\u003e] deactivate_locked_super+0x45/0x70\n  [\u003cffffffff8119003a\u003e] deactivate_super+0x4a/0x70\n  [\u003cffffffff811ac4ad\u003e] mntput_no_expire+0xed/0x130\n  [\u003cffffffff811acf2e\u003e] sys_umount+0x7e/0x3a0\n  [\u003cffffffff81aeeeab\u003e] system_call_fastpath+0x16/0x1b\n\nThis is because bdev holds on to disk but disk doesn\u0027t pin the\nassociated queue.  If a SCSI device is removed while the device is\nstill open, the sdev puts the base reference to the queue on release.\nWhen the bdev is finally released, the associated queue is already\ngone along with the bdi and bdev_inode_switch_bdi() ends up\ndereferencing already freed bdi.\n\nEven if it were not for this bug, disk not holding onto the associated\nqueue is very unusual and error-prone.\n\nFix it by making add_disk() take an extra reference to its queue and\nput it on disk_release() and ensuring that disk and its fops owner are\nput in that order after all accesses to the disk and queue are\ncomplete.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nCc: Jens Axboe \u003caxboe@kernel.dk\u003e\nCc: stable@kernel.org\nSigned-off-by: Jens Axboe \u003caxboe@kernel.dk\u003e\n"
    },
    {
      "commit": "e67b77c791ca2778198c9e7088f3266ed2da7a55",
      "tree": "9c65ce6b5679d1f45fa1e4720430ea17b11fa2aa",
      "parents": [
        "834f9f61a525d2f6d3d0c93894e26326c8d3ceed"
      ],
      "author": {
        "name": "Jeff Moyer",
        "email": "jmoyer@redhat.com",
        "time": "Mon Oct 17 12:57:23 2011 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@kernel.dk",
        "time": "Mon Oct 24 16:24:31 2011 +0200"
      },
      "message": "blk-flush: move the queue kick into\n\nA dm-multipath user reported[1] a problem when trying to boot\na kernel with commit 4853abaae7e4a2af938115ce9071ef8684fb7af4\n(block: fix flush machinery for stacking drivers with differring\nflush flags) applied.  It turns out that an empty flush request\ncan be sent into blk_insert_flush.  When the BUG_ON was fixed\nto allow for this, I/O on the underlying device would stall.  The\nreason is that blk_insert_cloned_request does not kick the queue.\nIn the aforementioned commit, I had added a special case to\nkick the queue if data was sent down but the queue flags did\nnot require a flush.  A better solution is to push the queue\nkick up into blk_insert_cloned_request.\n\nThis patch, along with a follow-on which fixes the BUG_ON, fixes\nthe issue reported.\n\n[1] http://www.redhat.com/archives/dm-devel/2011-September/msg00154.html\n\nReported-by: Christophe Saout \u003cchristophe@saout.de\u003e\nSigned-off-by: Jeff Moyer \u003cjmoyer@redhat.com\u003e\nAcked-by: Tejun Heo \u003ctj@kernel.org\u003e\n\nStable note: 3.1\nCc: stable@vger.kernel.org\nSigned-off-by: Jens Axboe \u003caxboe@kernel.dk\u003e\n"
    },
    {
      "commit": "834f9f61a525d2f6d3d0c93894e26326c8d3ceed",
      "tree": "73e973ad0c01ce4ac0317f089c9cbb3707186834",
      "parents": [
        "456be1484ffc72a24bdb4200b5847c4fa90139d9"
      ],
      "author": {
        "name": "Jeff Moyer",
        "email": "jmoyer@redhat.com",
        "time": "Mon Oct 17 12:57:22 2011 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@kernel.dk",
        "time": "Mon Oct 24 16:24:30 2011 +0200"
      },
      "message": "blk-flush: fix invalid BUG_ON in blk_insert_flush\n\nA user reported a regression due to commit\n4853abaae7e4a2af938115ce9071ef8684fb7af4 (block: fix flush\nmachinery for stacking drivers with differring flush flags).\nPart of the problem is that blk_insert_flush required a\nsingle bio be attached to the request.  In reality, having\nno attached bio is also a valid case, as can be observed with\nan empty flush.\n\n[1] http://www.redhat.com/archives/dm-devel/2011-September/msg00154.html\n\nReported-by: Christophe Saout \u003cchristophe@saout.de\u003e\nSigned-off-by: Jeff Moyer \u003cjmoyer@redhat.com\nAcked-by: Tejun Heo \u003ctj@kernel.org\u003e\n\nStable note: 3.1\nCc: stable@vger.kernel.org\nSigned-off-by: Jens Axboe \u003caxboe@kernel.dk\u003e\n"
    },
    {
      "commit": "9562ad9ab36df7ccef920d119f3b5100025db95f",
      "tree": "b5e32ca469cbefca4122c1a08db80cdb12e655fb",
      "parents": [
        "e890413af4c2dfebf5432ef30cc70cb11dad3213"
      ],
      "author": {
        "name": "Tao Ma",
        "email": "boyu.mt@taobao.com",
        "time": "Mon Oct 24 16:11:30 2011 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@kernel.dk",
        "time": "Mon Oct 24 16:11:30 2011 +0200"
      },
      "message": "block: Remove the control of complete cpu from bio.\n\nbio originally has the functionality to set the complete cpu, but\nit is broken.\n\nChirstoph said that \"This code is unused, and from the all the\ndiscussions lately pretty obviously broken.  The only thing keeping\nit serves is creating more confusion and possibly more bugs.\"\n\nAnd Jens replied with \"We can kill bio_set_completion_cpu(). I\u0027m fine\nwith leaving cpu control to the request based drivers, they are the\nonly ones that can toggle the setting anyway\".\n\nSo this patch tries to remove all the work of controling complete cpu\nfrom a bio.\n\nCc: Shaohua Li \u003cshaohua.li@intel.com\u003e\nCc: Christoph Hellwig \u003chch@infradead.org\u003e\nSigned-off-by: Tao Ma \u003cboyu.mt@taobao.com\u003e\nSigned-off-by: Jens Axboe \u003caxboe@kernel.dk\u003e\n"
    },
    {
      "commit": "e890413af4c2dfebf5432ef30cc70cb11dad3213",
      "tree": "26649bfe90854128ce87b57ef8aa3ca985454e78",
      "parents": [
        "3bcfeaf93f44112053e1c36aa681d9efc1185ddc"
      ],
      "author": {
        "name": "Jie Liu",
        "email": "jeff.liu@oracle.com",
        "time": "Mon Oct 24 16:08:38 2011 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@kernel.dk",
        "time": "Mon Oct 24 16:08:38 2011 +0200"
      },
      "message": "block: fix a typo in the blk-cgroup.h file\n\nbyptes -\u003e bytes.\n\nSigned-off-by: Jie Liu \u003cjeff.liu@oracle.com\u003e\nSigned-off-by: Jens Axboe \u003caxboe@kernel.dk\u003e\n"
    },
    {
      "commit": "c9a929dde3913780b5c416f4bb9d9ed804f509ce",
      "tree": "1acadc374d8f1faebdf07f08fae0993a38a8fd0d",
      "parents": [
        "bd87b5898a72b1aef6acf3705c61c9f6372adf0c"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Wed Oct 19 14:42:16 2011 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@kernel.dk",
        "time": "Wed Oct 19 14:42:16 2011 +0200"
      },
      "message": "block: fix request_queue lifetime handling by making blk_queue_cleanup() properly shutdown\n\nrequest_queue is refcounted but actually depdends on lifetime\nmanagement from the queue owner - on blk_cleanup_queue(), block layer\nexpects that there\u0027s no request passing through request_queue and no\nnew one will.\n\nThis is fundamentally broken.  The queue owner (e.g. SCSI layer)\ndoesn\u0027t have a way to know whether there are other active users before\ncalling blk_cleanup_queue() and other users (e.g. bsg) don\u0027t have any\nguarantee that the queue is and would stay valid while it\u0027s holding a\nreference.\n\nWith delay added in blk_queue_bio() before queue_lock is grabbed, the\nfollowing oops can be easily triggered when a device is removed with\nin-flight IOs.\n\n sd 0:0:1:0: [sdb] Stopping disk\n ata1.01: disabled\n general protection fault: 0000 [#1] PREEMPT SMP\n CPU 2\n Modules linked in:\n\n Pid: 648, comm: test_rawio Not tainted 3.1.0-rc3-work+ #56 Bochs Bochs\n RIP: 0010:[\u003cffffffff8137d651\u003e]  [\u003cffffffff8137d651\u003e] elv_rqhash_find+0x61/0x100\n ...\n Process test_rawio (pid: 648, threadinfo ffff880019efa000, task ffff880019ef8a80)\n ...\n Call Trace:\n  [\u003cffffffff8137d774\u003e] elv_merge+0x84/0xe0\n  [\u003cffffffff81385b54\u003e] blk_queue_bio+0xf4/0x400\n  [\u003cffffffff813838ea\u003e] generic_make_request+0xca/0x100\n  [\u003cffffffff81383994\u003e] submit_bio+0x74/0x100\n  [\u003cffffffff811c53ec\u003e] dio_bio_submit+0xbc/0xc0\n  [\u003cffffffff811c610e\u003e] __blockdev_direct_IO+0x92e/0xb40\n  [\u003cffffffff811c39f7\u003e] blkdev_direct_IO+0x57/0x60\n  [\u003cffffffff8113b1c5\u003e] generic_file_aio_read+0x6d5/0x760\n  [\u003cffffffff8118c1ca\u003e] do_sync_read+0xda/0x120\n  [\u003cffffffff8118ce55\u003e] vfs_read+0xc5/0x180\n  [\u003cffffffff8118cfaa\u003e] sys_pread64+0x9a/0xb0\n  [\u003cffffffff81afaf6b\u003e] system_call_fastpath+0x16/0x1b\n\nThis happens because blk_queue_cleanup() destroys the queue and\nelevator whether IOs are in progress or not and DEAD tests are\nsprinkled in the request processing path without proper\nsynchronization.\n\nSimilar problem exists for blk-throtl.  On queue cleanup, blk-throtl\nis shutdown whether it has requests in it or not.  Depending on\ntiming, it either oopses or throttled bios are lost putting tasks\nwhich are waiting for bio completion into eternal D state.\n\nThe way it should work is having the usual clear distinction between\nshutdown and release.  Shutdown drains all currently pending requests,\nmarks the queue dead, and performs partial teardown of the now\nunnecessary part of the queue.  Even after shutdown is complete,\nreference holders are still allowed to issue requests to the queue\nalthough they will be immmediately failed.  The rest of teardown\nhappens on release.\n\nThis patch makes the following changes to make blk_queue_cleanup()\nbehave as proper shutdown.\n\n* QUEUE_FLAG_DEAD is now set while holding both q-\u003eexit_mutex and\n  queue_lock.\n\n* Unsynchronized DEAD check in generic_make_request_checks() removed.\n  This couldn\u0027t make any meaningful difference as the queue could die\n  after the check.\n\n* blk_drain_queue() updated such that it can drain all requests and is\n  now called during cleanup.\n\n* blk_throtl updated such that it checks DEAD on grabbing queue_lock,\n  drains all throttled bios during cleanup and free td when queue is\n  released.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nCc: Vivek Goyal \u003cvgoyal@redhat.com\u003e\nSigned-off-by: Jens Axboe \u003caxboe@kernel.dk\u003e\n"
    },
    {
      "commit": "bd87b5898a72b1aef6acf3705c61c9f6372adf0c",
      "tree": "a1954f352d16307d0846e42b2246be6b1594fb9b",
      "parents": [
        "da8303c63b8de73619884382d6e573d44aae0810"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Wed Oct 19 14:33:08 2011 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@kernel.dk",
        "time": "Wed Oct 19 14:33:08 2011 +0200"
      },
      "message": "block: drop @tsk from attempt_plug_merge() and explain sync rules\n\nattempt_plug_merge() accesses elevator without holding queue_lock and\nmay call into -\u003eelevator_bio_merge_fn().  The elvator is guaranteed to\nbe valid because it\u0027s accessed iff the plugged list has requests and\nelevator is never exited with live requests, so as long as the\nelevator method can deal with unlocked access, this is safe.\n\nExplain the sync rules around attempt_plug_merge() and drop the\nunnecessary @tsk parameter.\n\nThis patch doesn\u0027t introduce any functional change.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nSigned-off-by: Jens Axboe \u003caxboe@kernel.dk\u003e\n"
    },
    {
      "commit": "da8303c63b8de73619884382d6e573d44aae0810",
      "tree": "d8560fa6452c5a7583aa21a2e5505d68899e2df5",
      "parents": [
        "bc16a4f933bc5ed50826b20561e4c3515061998b"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Wed Oct 19 14:33:05 2011 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@kernel.dk",
        "time": "Wed Oct 19 14:33:05 2011 +0200"
      },
      "message": "block: make get_request[_wait]() fail if queue is dead\n\nCurrently get_request[_wait]() allocates request whether queue is dead\nor not.  This patch makes get_request[_wait]() return NULL if @q is\ndead.  blk_queue_bio() is updated to fail the submitted bio if request\nallocation fails.  While at it, add docbook comments for\nget_request[_wait]().\n\nNote that the current code has rather unclear (there are spurious DEAD\ntests scattered around) assumption that the owner of a queue\nguarantees that no request travels block layer if the queue is dead\nand this patch in itself doesn\u0027t change much; however, this will allow\nfixing the broken assumption in the next patch.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nSigned-off-by: Jens Axboe \u003caxboe@kernel.dk\u003e\n"
    },
    {
      "commit": "bc16a4f933bc5ed50826b20561e4c3515061998b",
      "tree": "07c0dc65408932176c32df08e7a8adbbc2ca1d07",
      "parents": [
        "e3c78ca524d230bc145e902625e88c392a58ddf3"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Wed Oct 19 14:33:01 2011 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@kernel.dk",
        "time": "Wed Oct 19 14:33:01 2011 +0200"
      },
      "message": "block: reorganize throtl_get_tg() and blk_throtl_bio()\n\nblk_throtl_bio() and throtl_get_tg() have rather unusual interface.\n\n* throtl_get_tg() returns pointer to a valid tg or ERR_PTR(-ENODEV),\n  and drops queue_lock in the latter case.  Different locking context\n  depending on return value is error-prone and DEAD state is scheduled\n  to be protected by queue_lock anyway.  Move DEAD check inside\n  queue_lock and return valid tg or NULL.\n\n* blk_throtl_bio() indicates return status both with its return value\n  and in/out param **@bio.  The former is used to indicate whether\n  queue is found to be dead during throtl processing.  The latter\n  whether the bio is throttled.\n\n  There\u0027s no point in returning DEAD check result from\n  blk_throtl_bio().  The queue can die after blk_throtl_bio() is\n  finished but before make_request_fn() grabs queue lock.\n\n  Make it take *@bio instead and return boolean result indicating\n  whether the request is throttled or not.\n\nThis patch doesn\u0027t cause any visible functional difference.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nCc: Vivek Goyal \u003cvgoyal@redhat.com\u003e\nSigned-off-by: Jens Axboe \u003caxboe@kernel.dk\u003e\n"
    },
    {
      "commit": "e3c78ca524d230bc145e902625e88c392a58ddf3",
      "tree": "833eb544dd4180fd626f60da17788aae7830f4dc",
      "parents": [
        "315fceee81155ef2aeed9316ca72aeea9347db5c"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Wed Oct 19 14:32:38 2011 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@kernel.dk",
        "time": "Wed Oct 19 14:32:38 2011 +0200"
      },
      "message": "block: reorganize queue draining\n\nReorganize queue draining related code in preparation of queue exit\nchanges.\n\n* Factor out actual draining from elv_quiesce_start() to\n  blk_drain_queue().\n\n* Make elv_quiesce_start/end() responsible for their own locking.\n\n* Replace open-coded ELVSWITCH clearing in elevator_switch() with\n  elv_quiesce_end().\n\nThis patch doesn\u0027t cause any visible functional difference.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nSigned-off-by: Jens Axboe \u003caxboe@kernel.dk\u003e\n"
    },
    {
      "commit": "315fceee81155ef2aeed9316ca72aeea9347db5c",
      "tree": "91ac02284b6737e6b65e855da771f52dbb3ad32d",
      "parents": [
        "75eb6c372d41d6d140b893873f6687d78c987a44"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Wed Oct 19 14:31:25 2011 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@kernel.dk",
        "time": "Wed Oct 19 14:31:25 2011 +0200"
      },
      "message": "block: drop unnecessary blk_get/put_queue() in scsi_cmd_ioctl() and blk_get_tg()\n\nblk_get/put_queue() in scsi_cmd_ioctl() and throtl_get_tg() are\ncompletely bogus.  The caller must have a reference to the queue on\nentry and taking an extra reference doesn\u0027t change anything.\n\nFor scsi_cmd_ioctl(), the only effect is that it ends up checking\nQUEUE_FLAG_DEAD on entry; however, this is bogus as queue can die\nright after blk_get_queue().  Dead queue should be and is handled in\nrequest issue path (it\u0027s somewhat broken now but that\u0027s a separate\nproblem and doesn\u0027t affect this one much).\n\nthrotl_get_tg() incorrectly assumes that q is rcu freed.  Also, it\ndoesn\u0027t check return value of blk_get_queue().  If the queue is\nalready dead, it ends up doing an extra put.\n\nDrop them.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nCc: Vivek Goyal \u003cvgoyal@redhat.com\u003e\nSigned-off-by: Jens Axboe \u003caxboe@kernel.dk\u003e\n"
    },
    {
      "commit": "75eb6c372d41d6d140b893873f6687d78c987a44",
      "tree": "51864b2efe0415ad30226f218bc56c1a505bfb75",
      "parents": [
        "bc9fcbf9cb8ec76d340da16fbf48a9a316e14c52"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Wed Oct 19 14:31:22 2011 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@kernel.dk",
        "time": "Wed Oct 19 14:31:22 2011 +0200"
      },
      "message": "block: pass around REQ_* flags instead of broken down booleans during request alloc/free\n\nblk_alloc_request() and freed_request() take different combinations of\nREQ_* @flags, @priv and @is_sync when @flags is superset of the latter\ntwo.  Make them take @flags only.  This cleans up the code a bit and\nwill ease updating allocation related REQ_* flags.\n\nThis patch doesn\u0027t introduce any functional difference.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nSigned-off-by: Jens Axboe \u003caxboe@kernel.dk\u003e\n"
    },
    {
      "commit": "bc9fcbf9cb8ec76d340da16fbf48a9a316e14c52",
      "tree": "89376b8811a0d440328dc4f31ef062c811db1cc1",
      "parents": [
        "ece84241b93c4693bfe0a8ec9a043a16d216d0cd"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Wed Oct 19 14:31:18 2011 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@kernel.dk",
        "time": "Wed Oct 19 14:31:18 2011 +0200"
      },
      "message": "block: move blk_throtl prototypes to block/blk.h\n\nblk_throtl interface is block internal and there\u0027s no reason to have\nthem in linux/blkdev.h.  Move them to block/blk.h.\n\nThis patch doesn\u0027t introduce any functional change.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nCc: Vivek Goyal \u003cvgoyal@redhat.com\u003e\nSigned-off-by: Jens Axboe \u003caxboe@kernel.dk\u003e\n"
    },
    {
      "commit": "ece84241b93c4693bfe0a8ec9a043a16d216d0cd",
      "tree": "4bddd724aaecaf391488d3194d59cef80ef0c9eb",
      "parents": [
        "523e1d399ce0e23bec562abe2b2f8d297af81161"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Wed Oct 19 14:31:15 2011 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@kernel.dk",
        "time": "Wed Oct 19 14:31:15 2011 +0200"
      },
      "message": "block: fix genhd refcounting in blkio_policy_parse_and_set()\n\nblkio_policy_parse_and_set() calls blkio_check_dev_num() to check\nwhether the given dev_t is valid.  blkio_check_dev_num() uses\nget_gendisk() for verification but never puts the returned genhd\nleaking the reference.\n\nThis patch collapses blkio_check_dev_num() into its caller and updates\nit such that the genhd is put before returning.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nSigned-off-by: Jens Axboe \u003caxboe@kernel.dk\u003e\n"
    },
    {
      "commit": "523e1d399ce0e23bec562abe2b2f8d297af81161",
      "tree": "7d7c89d0a51fa4db19cc0b3436875c80406e37df",
      "parents": [
        "5c04b426f2e8b46cfc7969a35b2631063a3c646c"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Wed Oct 19 14:31:07 2011 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@kernel.dk",
        "time": "Wed Oct 19 14:31:07 2011 +0200"
      },
      "message": "block: make gendisk hold a reference to its queue\n\nThe following command sequence triggers an oops.\n\n# mount /dev/sdb1 /mnt\n# echo 1 \u003e /sys/class/scsi_device/0\\:0\\:1\\:0/device/delete\n# umount /mnt\n\n general protection fault: 0000 [#1] PREEMPT SMP\n CPU 2\n Modules linked in:\n\n Pid: 791, comm: umount Not tainted 3.1.0-rc3-work+ #8 Bochs Bochs\n RIP: 0010:[\u003cffffffff810d0879\u003e]  [\u003cffffffff810d0879\u003e] __lock_acquire+0x389/0x1d60\n...\n Call Trace:\n  [\u003cffffffff810d2845\u003e] lock_acquire+0x95/0x140\n  [\u003cffffffff81aed87b\u003e] _raw_spin_lock+0x3b/0x50\n  [\u003cffffffff811573bc\u003e] bdi_lock_two+0x5c/0x70\n  [\u003cffffffff811c2f6c\u003e] bdev_inode_switch_bdi+0x4c/0xf0\n  [\u003cffffffff811c3fcb\u003e] __blkdev_put+0x11b/0x1d0\n  [\u003cffffffff811c4010\u003e] __blkdev_put+0x160/0x1d0\n  [\u003cffffffff811c40df\u003e] blkdev_put+0x5f/0x190\n  [\u003cffffffff8118f18d\u003e] kill_block_super+0x4d/0x80\n  [\u003cffffffff8118f4a5\u003e] deactivate_locked_super+0x45/0x70\n  [\u003cffffffff8119003a\u003e] deactivate_super+0x4a/0x70\n  [\u003cffffffff811ac4ad\u003e] mntput_no_expire+0xed/0x130\n  [\u003cffffffff811acf2e\u003e] sys_umount+0x7e/0x3a0\n  [\u003cffffffff81aeeeab\u003e] system_call_fastpath+0x16/0x1b\n\nThis is because bdev holds on to disk but disk doesn\u0027t pin the\nassociated queue.  If a SCSI device is removed while the device is\nstill open, the sdev puts the base reference to the queue on release.\nWhen the bdev is finally released, the associated queue is already\ngone along with the bdi and bdev_inode_switch_bdi() ends up\ndereferencing already freed bdi.\n\nEven if it were not for this bug, disk not holding onto the associated\nqueue is very unusual and error-prone.\n\nFix it by making add_disk() take an extra reference to its queue and\nput it on disk_release() and ensuring that disk and its fops owner are\nput in that order after all accesses to the disk and queue are\ncomplete.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nCc: stable@kernel.org\nSigned-off-by: Jens Axboe \u003caxboe@kernel.dk\u003e\n"
    },
    {
      "commit": "5c04b426f2e8b46cfc7969a35b2631063a3c646c",
      "tree": "2d27d9f5d2fe5d5e8fbc01a467ec58bcb50235c1",
      "parents": [
        "499337bb6511e665a236a6a947f819d98ea340c6",
        "899e3ee404961a90b828ad527573aaaac39f0ab1"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "axboe@kernel.dk",
        "time": "Wed Oct 19 14:30:42 2011 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@kernel.dk",
        "time": "Wed Oct 19 14:30:42 2011 +0200"
      },
      "message": "Merge branch \u0027v3.1-rc10\u0027 into for-3.2/core\n\nConflicts:\n\tblock/blk-core.c\n\tinclude/linux/blkdev.h\n\nSigned-off-by: Jens Axboe \u003caxboe@kernel.dk\u003e\n"
    },
    {
      "commit": "777eb1bf15b8532c396821774bf6451e563438f5",
      "tree": "8363e63bae76eb049f4c8d0460ef8e1f74f0ca91",
      "parents": [
        "a102a9ece5489e1718cd7543aa079082450ac3a2"
      ],
      "author": {
        "name": "Hannes Reinecke",
        "email": "hare@suse.de",
        "time": "Wed Sep 28 08:07:01 2011 -0600"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@kernel.dk",
        "time": "Wed Sep 28 08:07:01 2011 -0600"
      },
      "message": "block: Free queue resources at blk_release_queue()\n\nA kernel crash is observed when a mounted ext3/ext4 filesystem is\nphysically removed. The problem is that blk_cleanup_queue() frees up\nsome resources eg by calling elevator_exit(), which are not checked for\nin normal operation. So we should rather move these calls to the\ndestructor function blk_release_queue() as at that point all remaining\nreferences are gone. However, in doing so we have to ensure that any\nexternally supplied queue_lock is disconnected as the driver might free\nup the lock after the call of blk_cleanup_queue(),\n\nSigned-off-by: Hannes Reinecke \u003chare@suse.de\u003e\nSigned-off-by: Jens Axboe \u003caxboe@kernel.dk\u003e\n"
    },
    {
      "commit": "d11bb4462c4cc6ddd45c6927c617ad79fa6fb8fc",
      "tree": "248949fdd3c8894db0e161e9338a3a984c1ce0f7",
      "parents": [
        "8ad6a56f5679a987bfeacad1bd818a2a381aa98e"
      ],
      "author": {
        "name": "Wanlong Gao",
        "email": "gaowanlong@cn.fujitsu.com",
        "time": "Wed Sep 21 10:22:10 2011 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@kernel.dk",
        "time": "Wed Sep 21 10:22:10 2011 +0200"
      },
      "message": "blk-cgroup: be able to remove the record of unplugged device\n\nThe bug is we\u0027re not able to remove the device from blkio cgroup\u0027s\nper-device control files if it gets unplugged.\n\nTo reproduce the bug:\n\n  # mount -t cgroup -o blkio xxx /cgroup\n  # cd /cgroup\n  # echo \"8:0 1000\" \u003e blkio.throttle.read_bps_device\n  # unplug the device\n  # cat blkio.throttle.read_bps_device\n  8:0\t1000\n  # echo \"8:0 0\" \u003e blkio.throttle.read_bps_device\n  -bash: echo: write error: No such device\n\nAfter patching, the device removal will succeed.\n\nThanks for the comments of Paul, Zefan, and Vivek.\n\nSigned-off-by: Wanlong Gao \u003cgaowanlong@cn.fujitsu.com\u003e\nCc: Li Zefan \u003clizf@cn.fujitsu.com\u003e\nCc: Paul Menage \u003cpaul@paulmenage.org\u003e\nAcked-by: Vivek Goyal \u003cvgoyal@redhat.com\u003e\nCc: Jens Axboe \u003caxboe@kernel.dk\u003e\nCc: \u003cstable@kernel.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Jens Axboe \u003caxboe@kernel.dk\u003e\n"
    },
    {
      "commit": "499337bb6511e665a236a6a947f819d98ea340c6",
      "tree": "40ec21dd59a8108a731c991d9d590540d42d23ff",
      "parents": [
        "75df713627f28f88b901b329c8857747545fd4ab"
      ],
      "author": {
        "name": "Andrew Morton",
        "email": "akpm@linux-foundation.org",
        "time": "Wed Sep 21 10:01:22 2011 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@kernel.dk",
        "time": "Wed Sep 21 10:01:22 2011 +0200"
      },
      "message": "block/blk-sysfs.c: fix kerneldoc references\n\nThe kerneldoc for blk_release_queue() is referring to blk_cleanup_queue().\n\nCc: Jens Axboe \u003caxboe@kernel.dk\u003e\nSigned-off-by: Andrew Morton \u003cakpm@google.com\u003e\nSigned-off-by: Jens Axboe \u003caxboe@kernel.dk\u003e\n"
    },
    {
      "commit": "75df713627f28f88b901b329c8857747545fd4ab",
      "tree": "0986bc4d82595dae4a3fabb15fce4780c053f004",
      "parents": [
        "27a84d54c02591e815d291ae0ee4bfb9cfd21065"
      ],
      "author": {
        "name": "Suresh Jayaraman",
        "email": "sjayaraman@suse.de",
        "time": "Wed Sep 21 10:00:16 2011 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@kernel.dk",
        "time": "Wed Sep 21 10:00:16 2011 +0200"
      },
      "message": "block: document blk-plug\n\nThus spake Andrew Morton:\n\n\"And I have the usual maintainability whine.  If someone comes up to\nvmscan.c and sees it calling blk_start_plug(), how are they supposed to\nwork out why that call is there?  They go look at the blk_start_plug()\ndefinition and it is undocumented.  I think we can do better than this?\"\n\nAdapted from the LWN article - http://lwn.net/Articles/438256/ by Jens\nAxboe and from an earlier attempt by Shaohua Li to document blk-plug.\n\n[akpm@linux-foundation.org: grammatical and spelling tweaks]\nSigned-off-by: Suresh Jayaraman \u003csjayaraman@suse.de\u003e\nCc: Shaohua Li \u003cshaohua.li@intel.com\u003e\nCc: Jonathan Corbet \u003ccorbet@lwn.net\u003e\nSigned-off-by: Andrew Morton \u003cakpm@google.com\u003e\nSigned-off-by: Jens Axboe \u003caxboe@kernel.dk\u003e\n"
    },
    {
      "commit": "27a84d54c02591e815d291ae0ee4bfb9cfd21065",
      "tree": "a65129a8c7053241fe51886f279bb4522599b6b6",
      "parents": [
        "5a7bbad27a410350e64a2d7f5ec18fc73836c14f"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@infradead.org",
        "time": "Thu Sep 15 14:01:40 2011 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@kernel.dk",
        "time": "Thu Sep 15 14:01:40 2011 +0200"
      },
      "message": "block: refactor generic_make_request\n\nMove all the checks performed on a bio into a new helper, and call it as\nsoon as bio is submitted even if it is a re-submission from -\u003emake_request.\n\nWe explicitly mark the new helper as beeing non-inlined as the stack\nusage for printing the block device name in the failure case is quite\nhigh and this a patch where we have to be extremely conservative about\nstack usage.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Jens Axboe \u003caxboe@kernel.dk\u003e\n"
    },
    {
      "commit": "8ad6a56f5679a987bfeacad1bd818a2a381aa98e",
      "tree": "945959995bd601627b300db0971deb4648770718",
      "parents": [
        "09f40f98bfa2ac22a332a713629a2f8f92896834"
      ],
      "author": {
        "name": "Tao Ma",
        "email": "boyu.mt@taobao.com",
        "time": "Wed Sep 14 09:31:01 2011 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Wed Sep 14 09:31:01 2011 +0200"
      },
      "message": "block: Don\u0027t check QUEUE_FLAG_SAME_COMP in __blk_complete_request\n\nIn __blk_complete_request, we check both QUEUE_FLAG_SAME_COMP and req-\u003ecpu\nto decide whether we should use req-\u003ecpu. Actually the user can also\nselect the complete cpu by either setting BIO_CPU_AFFINE or by calling\nbio_set_completion_cpu. Current solution makes these 2 ways don\u0027t work\nany more. So we\u0027d better just check req-\u003ecpu.\n\nSigned-off-by: Tao Ma \u003cboyu.mt@taobao.com\u003e\nSigned-off-by: Jens Axboe \u003caxboe@kernel.dk\u003e\n"
    },
    {
      "commit": "5a7bbad27a410350e64a2d7f5ec18fc73836c14f",
      "tree": "3447cd62dbcbd77b4071e2eb7576f1d7632ef2d3",
      "parents": [
        "c20e8de27fef9f59869c81c288ad6cf28200e00c"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@infradead.org",
        "time": "Mon Sep 12 12:12:01 2011 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Mon Sep 12 12:12:01 2011 +0200"
      },
      "message": "block: remove support for bio remapping from -\u003emake_request\n\nThere is very little benefit in allowing to let a -\u003emake_request\ninstance update the bios device and sector and loop around it in\n__generic_make_request when we can archive the same through calling\ngeneric_make_request from the driver and letting the loop in\ngeneric_make_request handle it.\n\nNote that various drivers got the return value from -\u003emake_request and\nreturned non-zero values for errors.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nAcked-by: NeilBrown \u003cneilb@suse.de\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "c20e8de27fef9f59869c81c288ad6cf28200e00c",
      "tree": "c1d972bfdf6b0f562169a923f2d77f422578fac1",
      "parents": [
        "166e1f901b01872e8b70733a3f2e2c6980389cf8"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Mon Sep 12 12:03:37 2011 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Mon Sep 12 12:08:31 2011 +0200"
      },
      "message": "block: rename __make_request() to blk_queue_bio()\n\nNow that it\u0027s exported, lets put it in a more sane namespace.\n\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "166e1f901b01872e8b70733a3f2e2c6980389cf8",
      "tree": "bb0a52bfe76e60bb430cd6a5f91ceb9b6ecaa7b2",
      "parents": [
        "484fc254b88257a2d8b3759aa062e8e8b35e0988"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@infradead.org",
        "time": "Mon Sep 12 12:08:27 2011 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Mon Sep 12 12:08:27 2011 +0200"
      },
      "message": "block: export __make_request\n\nAvoid the hacks need for request based device mappers currently by simply\nexporting the symbol instead of trying to get it through the back door.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "484fc254b88257a2d8b3759aa062e8e8b35e0988",
      "tree": "d46d04f9a25a223d46eb94a28ae61542dde236d7",
      "parents": [
        "322a8b034003c0d46d39af85bf24fee27b902f48"
      ],
      "author": {
        "name": "Wang Sheng-Hui",
        "email": "shhuiw@gmail.com",
        "time": "Thu Sep 08 12:32:14 2011 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Mon Sep 12 08:59:20 2011 +0200"
      },
      "message": "elevator: use ELV_NAME_MAX instead of magic number 16 for chosen_elevator\n\nWe have ELV_NAME_MAX defined to 16, and hence we should use it\ninstead of the magic nubmer 16 for elevator\u0027s name string.\n\nSigned-off-by: Wang Sheng-Hui \u003cshhuiw@gmail.com\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "a72c5e5eb738033938ab30d6a634b74d1d060f10",
      "tree": "72cea6d75a62f7003d55f8a754c2d17149ada85f",
      "parents": [
        "76e4e12ff2b3ef86773989fd897b194eb38016e6"
      ],
      "author": {
        "name": "Nao Nishijima",
        "email": "nao.nishijima.xt@hitachi.com",
        "time": "Thu Aug 25 18:04:06 2011 +0900"
      },
      "committer": {
        "name": "James Bottomley",
        "email": "JBottomley@Parallels.com",
        "time": "Mon Aug 29 00:16:19 2011 -0700"
      },
      "message": "[SCSI] genhd: add a new attribute \"alias\" in gendisk\n\nThis patch allows the user to set an \"alias\" of the disk via sysfs interface.\n\nThis patch only adds a new attribute \"alias\" in gendisk structure.\nTo show the alias instead of the device name in kernel messages,\nwe need to revise printk messages and use alias_name() in them.\n\nExample:\n(current) printk(\"disk name is %s\\n\", disk-\u003edisk_name);\n(new)     printk(\"disk name is %s\\n\", alias_name(disk));\n\nUsers can use alphabets, numbers, \u0027-\u0027 and \u0027_\u0027 in \"alias\" attribute. A disk can\nhave an \"alias\" which length is up to 255 bytes. This attribute is write-once.\n\nSuggested-by: James Bottomley \u003cJames.Bottomley@HansenPartnership.com\u003e\nSuggested-by: Jon Masters \u003cjcm@redhat.com\u003e\nSigned-off-by: Nao Nishijima \u003cnao.nishijima.xt@hitachi.com\u003e\nSigned-off-by: James Bottomley \u003cJBottomley@Parallels.com\u003e\n"
    },
    {
      "commit": "56ebdaf2fa3c5276be201c5d1aff1490b682ecf2",
      "tree": "f99669db0cd846baac7bb468e2cc14324e8950a3",
      "parents": [
        "a63271627521b825b0dd0a564e9a9c62b4c1ca89"
      ],
      "author": {
        "name": "Shaohua Li",
        "email": "shaohua.li@intel.com",
        "time": "Wed Aug 24 16:04:34 2011 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Wed Aug 24 16:04:34 2011 +0200"
      },
      "message": "block: simplify force plug flush code a little bit\n\nCleaning up the code a little bit. attempt_plug_merge() traverses the plug\nlist anyway, we can do the request counting there, so stack size is reduced\na little bit.\nThe motivation here is I suspect if we should count the requests for each\nqueue (task could handle multiple disks in the meantime), but my test doesn\u0027t\nshow it\u0027s worthy doing. If somebody proves we should do it, below change\nwill make that more easier.\n\nSigned-off-by: Shaohua Li \u003cshli@kernel.org\u003e\nSigned-off-by: Shaohua Li \u003cshaohua.li@intel.com\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "a63271627521b825b0dd0a564e9a9c62b4c1ca89",
      "tree": "8cb0076737679544da5de89484548c921e2131cc",
      "parents": [
        "e8037d49835482c9534a9a07bed0d0ea831135ae"
      ],
      "author": {
        "name": "Shaohua Li",
        "email": "shaohua.li@intel.com",
        "time": "Wed Aug 24 16:04:32 2011 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Wed Aug 24 16:04:32 2011 +0200"
      },
      "message": "block: change force plug flush call order\n\nDo blk_flush_plug_list() first and then add new request aDo blk_flush_plug_list() first and then add new request aDo blk_flush_plug_list() first and then add new request at the tail. New\nrequest can\u0027t be merged to existing requests, but later new requests might\nbe merged with this new one. If blk_flush_plug_list() is done later, the\nmerge doesn\u0027t happen.\nBelieve it or not, this fixes a 10% regression running sysbench workload.\n\nSigned-off-by: Shaohua Li \u003cshli@kernel.org\u003e\nSigned-off-by: Shaohua Li \u003cshaohua.li@intel.com\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "e8037d49835482c9534a9a07bed0d0ea831135ae",
      "tree": "f4d7f714c8a4165cacdcc83e9c6bfe7efb527a24",
      "parents": [
        "89c63a8ef36a621cb6790c1a56c737e6805ad8f4"
      ],
      "author": {
        "name": "Eric Seppanen",
        "email": "eric@purestorage.com",
        "time": "Tue Aug 23 21:25:12 2011 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Wed Aug 24 08:51:34 2011 +0200"
      },
      "message": "block: Fix queue_flag update when rq_affinity goes from 2 to 1\n\nCommit 5757a6d76cdf added the QUEUE_FLAG_SAME_FORCE flag, but fails to\nclear that flag when the current state is \u00272\u0027 (SAME_COMP + SAME_FORCE)\nand the new state is \u00271\u0027 (SAME_COMP).\n\nAcked-by: Dan Williams \u003cdan.j.williams@intel.com\u003e\nReviewed-by: Roland Dreier \u003croland@purestorage.com\u003e\nSigned-off-by: Eric Seppanen \u003ceric@purestorage.com\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "d27769ec3df1a8de9ca450d2dcd72d1ab259ba32",
      "tree": "f17c064e0d8ac26fa80c1c72dccaca053bb55e94",
      "parents": [
        "322a8b034003c0d46d39af85bf24fee27b902f48"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Tue Aug 23 20:01:04 2011 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Tue Aug 23 20:01:04 2011 +0200"
      },
      "message": "block: add GENHD_FL_NO_PART_SCAN\n\nThere are cases where suppressing partition scan is useful - e.g. for\nlo devices and pseudo SATA devices which advertise to be a disk but\nget upset on partition scan (some port multiplier control devices show\nsuch behavior).\n\nThis patch adds GENHD_FL_NO_PART_SCAN which suppresses partition scan\nregardless of the number of possible partitions.  disk_partitionable()\nis renamed to disk_part_scan_enabled() as suppressing partition scan\ndoesn\u0027t imply the device can\u0027t be partitioned using\nBLKPG_ADD/DEL_PARTITION calls from userland.  show_partition() now\ndirectly tests disk_max_parts() to maintain backward-compatibility.\n\n-v2: Updated to make it clear that only partition scan is suppressed\n     not partitioning itself as suggested by Kay Sievers.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nCc: Kay Sievers \u003ckay.sievers@vrfy.org\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "65299a3b788bd274bed92f9fa3232082c9f3ea70",
      "tree": "191c0afe31c15ac4c1bab96e0a07fddb097d0de8",
      "parents": [
        "5dc06c5a70b79a323152bec7e55783e705767e63"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@infradead.org",
        "time": "Tue Aug 23 14:50:29 2011 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Tue Aug 23 14:50:29 2011 +0200"
      },
      "message": "block: separate priority boosting from REQ_META\n\nAdd a new REQ_PRIO to let requests preempt others in the cfq I/O schedule,\nand lave REQ_META purely for marking requests as metadata in blktrace.\n\nAll existing callers of REQ_META except for XFS are updated to also\nset REQ_PRIO for now.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nReviewed-by: Namhyung Kim \u003cnamhyung@gmail.com\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "5ccc38740a283aba81a00e92941310d0c1aeb2ee",
      "tree": "ba7d725947975a9391e085bd1d5958b004bfdc3e",
      "parents": [
        "0c3bef612881ee6216a36952ffaabfc35b83545c",
        "b53d1ed734a2b9af8da115b836b658daa7d47a48"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Aug 19 10:47:07 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Aug 19 10:47:07 2011 -0700"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.dk/linux-block\n\n* \u0027for-linus\u0027 of git://git.kernel.dk/linux-block: (23 commits)\n  Revert \"cfq: Remove special treatment for metadata rqs.\"\n  block: fix flush machinery for stacking drivers with differring flush flags\n  block: improve rq_affinity placement\n  blktrace: add FLUSH/FUA support\n  Move some REQ flags to the common bio/request area\n  allow blk_flush_policy to return REQ_FSEQ_DATA independent of *FLUSH\n  xen/blkback: Make description more obvious.\n  cfq-iosched: Add documentation about idling\n  block: Make rq_affinity \u003d 1 work as expected\n  block: swim3: fix unterminated of_device_id table\n  block/genhd.c: remove useless cast in diskstats_show()\n  drivers/cdrom/cdrom.c: relax check on dvd manufacturer value\n  drivers/block/drbd/drbd_nl.c: use bitmap_parse instead of __bitmap_parse\n  bsg-lib: add module.h include\n  cfq-iosched: Reduce linked group count upon group destruction\n  blk-throttle: correctly determine sync bio\n  loop: fix deadlock when sysfs and LOOP_CLR_FD race against each other\n  loop: add BLK_DEV_LOOP_MIN_COUNT\u003d%i to allow distros 0 pre-allocated loop devices\n  loop: add management interface for on-demand device allocation\n  loop: replace linked list of allocated devices with an idr index\n  ...\n"
    },
    {
      "commit": "b53d1ed734a2b9af8da115b836b658daa7d47a48",
      "tree": "07ed12caa6fd50f97568f419448cf03906d980c4",
      "parents": [
        "4853abaae7e4a2af938115ce9071ef8684fb7af4"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Fri Aug 19 08:34:48 2011 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Fri Aug 19 08:34:48 2011 +0200"
      },
      "message": "Revert \"cfq: Remove special treatment for metadata rqs.\"\n\nWe have a kernel build regression since 3.1-rc1, which is about 10%\nregression. The kernel source is in an ext3 filesystem.\nAlex Shi bisect it to commit:\ncommit a07405b7802691d29ab3b23bdc76ee6d006aad0b\nAuthor: Justin TerAvest \u003cteravest@google.com\u003e\nDate:   Sun Jul 10 22:09:19 2011 +0200\n\n    cfq: Remove special treatment for metadata rqs.\n\nApparently this is caused by lack metadata preemption, where ext3/ext4\ndo use READ_META. I didn\u0027t see a way to fix the issue, so suggest\nreverting the patch.\n\nThis reverts commit a07405b7802691d29ab3b23bdc76ee6d006aad0b.\n\nReported-by: Alex Shi\u003calex.shi@intel.com\u003e\nReported-by: Shaohua Li\u003cshaohua.li@intel.com\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "4853abaae7e4a2af938115ce9071ef8684fb7af4",
      "tree": "167eb7cb1b48541fa6d0ca5042f7452e2dd9e4de",
      "parents": [
        "bcf30e75b773b60379338768677a1301ef602ff9"
      ],
      "author": {
        "name": "Jeff Moyer",
        "email": "jmoyer@redhat.com",
        "time": "Mon Aug 15 21:37:25 2011 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Mon Aug 15 21:37:25 2011 +0200"
      },
      "message": "block: fix flush machinery for stacking drivers with differring flush flags\n\nCommit ae1b1539622fb46e51b4d13b3f9e5f4c713f86ae, block: reimplement\nFLUSH/FUA to support merge, introduced a performance regression when\nrunning any sort of fsyncing workload using dm-multipath and certain\nstorage (in our case, an HP EVA).  The test I ran was fs_mark, and it\ndropped from ~800 files/sec on ext4 to ~100 files/sec.  It turns out\nthat dm-multipath always advertised flush+fua support, and passed\ncommands on down the stack, where those flags used to get stripped off.\nThe above commit changed that behavior:\n\nstatic inline struct request *__elv_next_request(struct request_queue *q)\n{\n        struct request *rq;\n\n        while (1) {\n-               while (!list_empty(\u0026q-\u003equeue_head)) {\n+               if (!list_empty(\u0026q-\u003equeue_head)) {\n                        rq \u003d list_entry_rq(q-\u003equeue_head.next);\n-                       if (!(rq-\u003ecmd_flags \u0026 (REQ_FLUSH | REQ_FUA)) ||\n-                           (rq-\u003ecmd_flags \u0026 REQ_FLUSH_SEQ))\n-                               return rq;\n-                       rq \u003d blk_do_flush(q, rq);\n-                       if (rq)\n-                               return rq;\n+                       return rq;\n                }\n\nNote that previously, a command would come in here, have\nREQ_FLUSH|REQ_FUA set, and then get handed off to blk_do_flush:\n\nstruct request *blk_do_flush(struct request_queue *q, struct request *rq)\n{\n        unsigned int fflags \u003d q-\u003eflush_flags; /* may change, cache it */\n        bool has_flush \u003d fflags \u0026 REQ_FLUSH, has_fua \u003d fflags \u0026 REQ_FUA;\n        bool do_preflush \u003d has_flush \u0026\u0026 (rq-\u003ecmd_flags \u0026 REQ_FLUSH);\n        bool do_postflush \u003d has_flush \u0026\u0026 !has_fua \u0026\u0026 (rq-\u003ecmd_flags \u0026\n        REQ_FUA);\n        unsigned skip \u003d 0;\n...\n        if (blk_rq_sectors(rq) \u0026\u0026 !do_preflush \u0026\u0026 !do_postflush) {\n                rq-\u003ecmd_flags \u0026\u003d ~REQ_FLUSH;\n\t\tif (!has_fua)\n\t\t\trq-\u003ecmd_flags \u0026\u003d ~REQ_FUA;\n\t        return rq;\n\t}\n\nSo, the flush machinery was bypassed in such cases (q-\u003eflush_flags \u003d\u003d 0\n\u0026\u0026 rq-\u003ecmd_flags \u0026 (REQ_FLUSH|REQ_FUA)).\n\nNow, however, we don\u0027t get into the flush machinery at all.  Instead,\n__elv_next_request just hands a request with flush and fua bits set to\nthe scsi_request_fn, even if the underlying request_queue does not\nsupport flush or fua.\n\nThe agreed upon approach is to fix the flush machinery to allow\nstacking.  While this isn\u0027t used in practice (since there is only one\nrequest-based dm target, and that target will now reflect the flush\nflags of the underlying device), it does future-proof the solution, and\nmake it function as designed.\n\nIn order to make this work, I had to add a field to the struct request,\ninside the flush structure (to store the original req-\u003eend_io).  Shaohua\nhad suggested overloading the union with rb_node and completion_data,\nbut the completion data is used by device mapper and can also be used by\nother drivers.  So, I didn\u0027t see a way around the additional field.\n\nI tested this patch on an HP EVA with both ext4 and xfs, and it recovers\nthe lost performance.  Comments and other testers, as always, are\nappreciated.\n\nCheers,\nJeff\n\nSigned-off-by: Jeff Moyer \u003cjmoyer@redhat.com\u003e\nAcked-by: Tejun Heo \u003ctj@kernel.org\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "bcf30e75b773b60379338768677a1301ef602ff9",
      "tree": "2e3e657fe4c5bbf65ffb16198e4a416429c8c173",
      "parents": [
        "c09c47caedc9854d59378d6e34c989e51cfdd2b4"
      ],
      "author": {
        "name": "Shaohua Li",
        "email": "shaohua.li@intel.com",
        "time": "Thu Aug 11 10:39:04 2011 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Thu Aug 11 10:39:04 2011 +0200"
      },
      "message": "block: improve rq_affinity placement\n\nThis patch reverts commit 35ae66e0a09ab70ed(block: Make rq_affinity \u003d 1\nwork as expected). The purpose is to avoid an unnecessary IPI.\nLet\u0027s take an example. My test box has cpu 0-7, one socket. Say request is\nadded from CPU 1, blk_complete_request() occurs at CPU 7. Without the reverted\npatch, softirq will be done at CPU 7. With it, an IPI will be directed to CPU\n0, and softirq will be done at CPU 0. In this case, doing softirq at CPU 0 and\nCPU 7 have no difference from cache sharing point view and we can avoid an\nipi if doing it in CPU 7.\nAn immediate concern is this is just like QUEUE_FLAG_SAME_FORCE, but actually\nnot. blk_complete_request() is running in interrupt handler, and currently\nI/O controller doesn\u0027t support multiple interrupts (I checked several LSI\ncards and AHCI), so only one CPU can run blk_complete_request(). This is\nstill quite different as QUEUE_FLAG_SAME_FORCE.\nSince only one CPU runs softirq, the only difference with below patch is\nsoftirq not always runs at the first CPU of a group.\n\nSigned-off-by: Shaohua Li \u003cshaohua.li@intel.com\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "fa1bf42ff9296ac4cf211b0a1b450a6071d26a95",
      "tree": "0c7f43ca005c70022e64abb8b8d0b0d549b73959",
      "parents": [
        "4931402a9dd00b2997e95bfbb89409b2a6dbb383"
      ],
      "author": {
        "name": "Jeff Moyer",
        "email": "jmoyer@redhat.com",
        "time": "Tue Aug 09 20:32:09 2011 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Tue Aug 09 20:32:09 2011 +0200"
      },
      "message": "allow blk_flush_policy to return REQ_FSEQ_DATA independent of *FLUSH\n\nblk_insert_flush has the following check:\n\n\t/*\n\t * If there\u0027s data but flush is not necessary, the request can be\n\t * processed directly without going through flush machinery.  Queue\n\t * for normal execution.\n\t */\n\tif ((policy \u0026 REQ_FSEQ_DATA) \u0026\u0026\n\t    !(policy \u0026 (REQ_FSEQ_PREFLUSH | REQ_FSEQ_POSTFLUSH))) {\n\t\tlist_add_tail(\u0026rq-\u003equeuelist, \u0026q-\u003equeue_head);\n\t\treturn;\n\t}\n\nHowever, blk_flush_policy will not return with policy set to only\nREQ_FSEQ_DATA:\n\nstatic unsigned int blk_flush_policy(unsigned int fflags, struct request *rq)\n{\n\tunsigned int policy \u003d 0;\n\n\tif (fflags \u0026 REQ_FLUSH) {\n\t\tif (rq-\u003ecmd_flags \u0026 REQ_FLUSH)\n\t\t\tpolicy |\u003d REQ_FSEQ_PREFLUSH;\n\t\tif (blk_rq_sectors(rq))\n\t\t\tpolicy |\u003d REQ_FSEQ_DATA;\n\t\tif (!(fflags \u0026 REQ_FUA) \u0026\u0026 (rq-\u003ecmd_flags \u0026 REQ_FUA))\n\t\t\tpolicy |\u003d REQ_FSEQ_POSTFLUSH;\n\t}\n\treturn policy;\n}\n\nNotice that REQ_FSEQ_DATA is only set if REQ_FLUSH is set.  Fix this\nmismatch by moving the setting of REQ_FSEQ_DATA outside of the REQ_FLUSH\ncheck.\n\nTejun notes:\n\n  Hmmm... yes, this can become a correctness issue if (and only if)\n  blk_queue_flush() is called to change q-\u003eflush_flags while requests\n  are in-flight; otherwise, requests wouldn\u0027t reach the function at all.\n  Also, I think it would be a generally good idea to always set\n  FSEQ_DATA if the request has data.\n\nCheers,\nJeff\n\nSigned-off-by: Jeff Moyer \u003cjmoyer@redhat.com\u003e\nAcked-by: Tejun Heo \u003ctj@kernel.org\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "35ae66e0a09ab70ed588e65f26b4c725cd1656b6",
      "tree": "10f866f13a32109f7fa23ab8ab392fab759c9f6d",
      "parents": [
        "f41c53a569c4cf0556893ec9cfcf697d069799e1"
      ],
      "author": {
        "name": "Tao Ma",
        "email": "boyu.mt@taobao.com",
        "time": "Fri Aug 05 09:37:10 2011 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Fri Aug 05 09:37:47 2011 +0200"
      },
      "message": "block: Make rq_affinity \u003d 1 work as expected\n\nCommit 5757a6d76c introduced a new rq_affinity \u003d 2 so as to make\nthe request completed in the __make_request cpu. But it makes the\nold rq_affinity \u003d 1 not work any more. The root cause is that\nif the \u0027cpu\u0027 and \u0027req-\u003ecpu\u0027 is in the same group and cpu !\u003d req-\u003ecpu,\nccpu will be the same as group_cpu, so the completion will be\nexcuted in the \u0027cpu\u0027 not \u0027group_cpu\u0027.\n\nThis patch fix problem by simpling removing group_cpu and the codes\nare more explicit now. If ccpu \u003d\u003d cpu, we complete in cpu, otherwise\nwe raise_blk_irq to ccpu.\n\nCc: Christoph Hellwig \u003chch@infradead.org\u003e\nCc: Roland Dreier \u003croland@purestorage.com\u003e\nCc: Dan Williams \u003cdan.j.williams@intel.com\u003e\nCc: Jens Axboe \u003cjaxboe@fusionio.com\u003e\nSigned-off-by: Tao Ma \u003cboyu.mt@taobao.com\u003e\nReviewed-by: Shaohua Li \u003cshaohua.li@intel.com\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "dd48c085c1cdf9446f92826f1fd451167fb6c2fd",
      "tree": "d62870378cc08af36ea7a41531436bdebddec232",
      "parents": [
        "f48d1915b86f06a943087e5f9b29542a1ef4cd4d"
      ],
      "author": {
        "name": "Akinobu Mita",
        "email": "akinobu.mita@gmail.com",
        "time": "Wed Aug 03 16:21:01 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Aug 03 14:25:20 2011 -1000"
      },
      "message": "fault-injection: add ability to export fault_attr in arbitrary directory\n\ninit_fault_attr_dentries() is used to export fault_attr via debugfs.\nBut it can only export it in debugfs root directory.\n\nPer Forlin is working on mmc_fail_request which adds support to inject\ndata errors after a completed host transfer in MMC subsystem.\n\nThe fault_attr for mmc_fail_request should be defined per mmc host and\nexport it in debugfs directory per mmc host like\n/sys/kernel/debug/mmc0/mmc_fail_request.\n\ninit_fault_attr_dentries() doesn\u0027t help for mmc_fail_request.  So this\nintroduces fault_create_debugfs_attr() which is able to create a\ndirectory in the arbitrary directory and replace\ninit_fault_attr_dentries().\n\n[akpm@linux-foundation.org: extraneous semicolon, per Randy]\nSigned-off-by: Akinobu Mita \u003cakinobu.mita@gmail.com\u003e\nTested-by: Per Forlin \u003cper.forlin@linaro.org\u003e\nCc: Jens Axboe \u003caxboe@kernel.dk\u003e\nCc: Christoph Lameter \u003ccl@linux-foundation.org\u003e\nCc: Pekka Enberg \u003cpenberg@kernel.org\u003e\nCc: Matt Mackall \u003cmpm@selenic.com\u003e\nCc: Randy Dunlap \u003crdunlap@xenotime.net\u003e\nCc: Stephen Rothwell \u003csfr@canb.auug.org.au\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "f95fe9cfb49f6e625fbb5888cae2ed6f3a276b89",
      "tree": "aed2067ffc71e6d5eb08049692fabdb4d62d6355",
      "parents": [
        "aec9f377e4f235c47e27fd8a429555dfa2dda342"
      ],
      "author": {
        "name": "Herbert Poetzl",
        "email": "herbert@13thfloor.at",
        "time": "Tue Aug 02 12:43:50 2011 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Tue Aug 02 12:43:50 2011 +0200"
      },
      "message": "block/genhd.c: remove useless cast in diskstats_show()\n\nRemove the (unsigned long long) cast in diskstats_show() and adjusts the\nseq_printf() format string to \u0027unsigned long\u0027\n\ndiskstats_show() uses part_stat_read() to get the stats, which either\naccesses the specified field in the struct disk_stats directly (non SMP)\nor sums up the per CPU values in a variable of the same type as the field,\nso in any case the result will have the same type and range as the\nspecified field which for all disk_stats entries is unsigned long\n\nAlso, for unsigned long ranges the output of %lu should be identical to\nthe one of %llu, so no change in the actual proc entry contents.\n\nSigned-off-by: Herbert Poetzl \u003cherbert@13thfloor.at\u003e\nCc: Jens Axboe \u003caxboe@kernel.dk\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "e2a5429ff7947ad251310376384f449297b7492a",
      "tree": "516df1989b1ed323602776f443e0859ae5fab5e1",
      "parents": [
        "a5395b83b78f62ccf5e3af854aacd025c2a6e7b5"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Tue Aug 02 10:43:35 2011 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Tue Aug 02 10:43:35 2011 +0200"
      },
      "message": "bsg-lib: add module.h include\n\nDue to conflicts with the moduleh tree in linux-next, we\nrun into an include file mess. We really need export.h\nin that tree, but if we add module.h locally then the\nissue is easier to resolve.\n\nReported-by: Stephen Rothwell \u003csfr@canb.auug.org.au\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "a5395b83b78f62ccf5e3af854aacd025c2a6e7b5",
      "tree": "9705672ce8d806582abe667f06b4d302954b1795",
      "parents": [
        "e5a94f56845bb4b272d82e84b5a1e2080b07ba82"
      ],
      "author": {
        "name": "Vivek Goyal",
        "email": "vgoyal@redhat.com",
        "time": "Tue Aug 02 09:24:09 2011 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Tue Aug 02 09:24:09 2011 +0200"
      },
      "message": "cfq-iosched: Reduce linked group count upon group destruction\n\nFQ keeps track of number of groups which are linked on blkcg-\u003eblkg_list.\nThis is useful to avoid races between queue exit and cgroup exit code\npaths. So if at the request queue exit time linked group count is not\nzero, that means there are some group out there which is yet to be\ndeleted under rcu read period and queue exit code should wait for\non rcu period.\n\nIn my previous patch I forgot to decrease the number of group count.\nSo in current form, we nr_blkcg_linked_grps is always non-zero and\nwe will always wait one rcu period (if BLK_CGROUP\u003dy). The side effect\nof this is that it can increase boot time. I am surprised, nobody\ncomplained so far.\n\nSigned-off-by: Vivek Goyal \u003cvgoyal@redhat.com\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "e5a94f56845bb4b272d82e84b5a1e2080b07ba82",
      "tree": "884fcc9d3c7cab28416084ba793a181d37858ca1",
      "parents": [
        "05eb0f252b04aa94ace0794f73d56c6a02351d80"
      ],
      "author": {
        "name": "Shaohua Li",
        "email": "shaohua.li@intel.com",
        "time": "Mon Aug 01 10:31:06 2011 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Mon Aug 01 10:31:06 2011 +0200"
      },
      "message": "blk-throttle: correctly determine sync bio\n\nread request is always sync. Using rw_is_sync() to determine\nif a bio is sync.\n\nSigned-off-by: Shaohua Li \u003cshaohua.li@intel.com\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "aa387cc895672b00f807ad7c734a2defaf677712",
      "tree": "31c2c3f3e0d58ff2524cdf8f94abecc394f5eb49",
      "parents": [
        "24c3047095fa3954f114bfff2e37b8fcbb216396"
      ],
      "author": {
        "name": "Mike Christie",
        "email": "michaelc@cs.wisc.edu",
        "time": "Sun Jul 31 22:05:09 2011 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Sun Jul 31 22:05:09 2011 +0200"
      },
      "message": "block: add bsg helper library\n\nThis moves the FC classes bsg code to the block layer and\nmakes it a lib so that other classes like iscsi and SAS can use it.\n\nIt is helpful because working with the request queue, bios,\ncreating scatterlists, etc are a pain that the LLD does not\nhave to worry about with normal IOs and should not have to\nworry about for bsg requests.\n\nSigned-off-by: Mike Christie \u003cmichaelc@cs.wisc.edu\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "b2c9cd3793e5878e301ec2219785a7b8ca402ef1",
      "tree": "e0a8a447ea8c6d59c20a1e190e2c397bfcd46a49",
      "parents": [
        "b2588c4b4c3c075e9b45d61065d86c60de2b6441"
      ],
      "author": {
        "name": "Akinobu Mita",
        "email": "akinobu.mita@gmail.com",
        "time": "Tue Jul 26 16:09:03 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jul 26 16:49:46 2011 -0700"
      },
      "message": "fail_make_request: cleanup should_fail_request\n\nThis changes should_fail_request() to more usable wrapper function of\nshould_fail().  It can avoid putting #ifdef CONFIG_FAIL_MAKE_REQUEST in\nthe middle of a function.\n\nSigned-off-by: Akinobu Mita \u003cakinobu.mita@gmail.com\u003e\nCc: Jens Axboe \u003caxboe@kernel.dk\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "11ccf116d0d756d06989775288e41f737d98e0c5",
      "tree": "457ceb665282ed1c8ec2aa6faaba9cd4e4652e8c",
      "parents": [
        "45b583b10a8b438b970e95a7d1d4db22c9e35004"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Tue Jul 26 15:01:15 2011 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Tue Jul 26 15:01:15 2011 +0200"
      },
      "message": "block: fix warning with calling smp_processor_id() in preemptible section\n\nAfter commit 5757a6d7 introduced an unsafe calling of\nsmp_processor_id(), with preempt debuggin turned on we spew a lot of:\n\nBUG: using smp_processor_id() in preemptible [00000000] code: kjournald/514\ncaller is __make_request+0x1b8/0x308\n[\u003cc0019f44\u003e] (unwind_backtrace+0x0/0xe8) from [\u003cc024b4cc\u003e] (debug_smp_processor_id+0xbc/0xf0)\n[\u003cc024b4cc\u003e] (debug_smp_processor_id+0xbc/0xf0) from [\u003cc0223d14\u003e] (__make_request+0x1b8/0x308)\n[\u003cc0223d14\u003e] (__make_request+0x1b8/0x308) from [\u003cc02215ac\u003e] (generic_make_request+0x4dc/0x558)\n[\u003cc02215ac\u003e] (generic_make_request+0x4dc/0x558) from [\u003cc022173c\u003e] (submit_bio+0x114/0x138)\n[\u003cc022173c\u003e] (submit_bio+0x114/0x138) from [\u003cc011f504\u003e] (submit_bh+0x148/0x16c)\n[\u003cc011f504\u003e] (submit_bh+0x148/0x16c) from [\u003cc0121ed8\u003e] (__sync_dirty_buffer+0x88/0xd8)\n[\u003cc0121ed8\u003e] (__sync_dirty_buffer+0x88/0xd8) from [\u003cc01aff78\u003e] (journal_commit_transaction+0x1198/0x1688)\n[\u003cc01aff78\u003e] (journal_commit_transaction+0x1198/0x1688) from [\u003cc01b4034\u003e] (kjournald+0xb4/0x224)\n[\u003cc01b4034\u003e] (kjournald+0xb4/0x224) from [\u003cc0069ea0\u003e] (kthread+0x8c/0x94)\n[\u003cc0069ea0\u003e] (kthread+0x8c/0x94) from [\u003cc00137f8\u003e] (kernel_thread_exit+0x0/0x8)\n\nFix this by just using raw_smp_processor_id(), it\u0027s just a hint\nafter all. There\u0027s no pinning of the CPU or accessing per-cpu\nstructures involved.\n\nReported-by: Ming Lei \u003ctom.leiming@gmail.com\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "8ded371f81fba8b38a049f8c5f30ce6438fc7b75",
      "tree": "0684d176cb6f35c92c4bf0185b1af9f5380077eb",
      "parents": [
        "096a705bbc080a4041636d07514560da8d78acbe",
        "07d0c38e7d84f911c72058a124c7f17b3c779a65"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Jul 25 10:38:18 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Jul 25 10:38:18 2011 -0700"
      },
      "message": "Merge branch \u0027for-3.1/drivers\u0027 of git://git.kernel.dk/linux-block\n\n* \u0027for-3.1/drivers\u0027 of git://git.kernel.dk/linux-block:\n  cciss: do not attempt to read from a write-only register\n  xen/blkback: Add module alias for autoloading\n  xen/blkback: Don\u0027t let in-flight requests defer pending ones.\n  bsg: fix address space warning from sparse\n  bsg: remove unnecessary conditional expressions\n  bsg: fix bsg_poll() to return POLLOUT properly\n"
    },
    {
      "commit": "096a705bbc080a4041636d07514560da8d78acbe",
      "tree": "38c3c01225709ffa53419083ea6332f8a72610de",
      "parents": [
        "fea80311a939a746533a6d7e7c3183729d6a3faf",
        "5757a6d76cdf6dda2a492c09b985c015e86779b1"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Jul 25 10:33:36 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Jul 25 10:33:36 2011 -0700"
      },
      "message": "Merge branch \u0027for-3.1/core\u0027 of git://git.kernel.dk/linux-block\n\n* \u0027for-3.1/core\u0027 of git://git.kernel.dk/linux-block: (24 commits)\n  block: strict rq_affinity\n  backing-dev: use synchronize_rcu_expedited instead of synchronize_rcu\n  block: fix patch import error in max_discard_sectors check\n  block: reorder request_queue to remove 64 bit alignment padding\n  CFQ: add think time check for group\n  CFQ: add think time check for service tree\n  CFQ: move think time check variables to a separate struct\n  fixlet: Remove fs_excl from struct task.\n  cfq: Remove special treatment for metadata rqs.\n  block: document blk_plug list access\n  block: avoid building too big plug list\n  compat_ioctl: fix make headers_check regression\n  block: eliminate potential for infinite loop in blkdev_issue_discard\n  compat_ioctl: fix warning caused by qemu\n  block: flush MEDIA_CHANGE from drivers on close(2)\n  blk-throttle: Make total_nr_queued unsigned\n  block: Add __attribute__((format(printf...) and fix fallout\n  fs/partitions/check.c: make local symbols static\n  block:remove some spare spaces in genhd.c\n  block:fix the comment error in blkdev.h\n  ...\n"
    },
    {
      "commit": "5757a6d76cdf6dda2a492c09b985c015e86779b1",
      "tree": "6356a6353639eb473dd917a1b2062f9e7e20de22",
      "parents": [
        "ef3230880abd36553ab442363d3c9a0661f00769"
      ],
      "author": {
        "name": "Dan Williams",
        "email": "dan.j.williams@intel.com",
        "time": "Sat Jul 23 20:44:25 2011 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Sat Jul 23 20:44:25 2011 +0200"
      },
      "message": "block: strict rq_affinity\n\nSome systems benefit from completions always being steered to the strict\nrequester cpu rather than the looser \"per-socket\" steering that\nblk_cpu_to_group() attempts by default. This is because the first\nCPU in the group mask ends up being completely overloaded with work,\nwhile the others (including the original submitter) has power left\nto spare.\n\nAllow the strict mode to be set by writing \u00272\u0027 to the sysfs control\nfile. This is identical to the scheme used for the nomerges file,\nwhere \u00272\u0027 is a more aggressive setting than just being turned on.\n\necho 2 \u003e /sys/block/\u003cbdev\u003e/queue/rq_affinity\n\nCc: Christoph Hellwig \u003chch@infradead.org\u003e\nCc: Roland Dreier \u003croland@purestorage.com\u003e\nTested-by: Dave Jiang \u003cdave.jiang@intel.com\u003e\nSigned-off-by: Dan Williams \u003cdan.j.williams@intel.com\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "4c64500eada358165d0bb9a20d6c7d30821995b4",
      "tree": "27cb0aed7b45d5043d6bbb0b3471719e9230c868",
      "parents": [
        "d7b7630130e52361af66ce3b994696e2357ba7de"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Sat Jul 23 20:34:59 2011 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Sat Jul 23 20:34:59 2011 +0200"
      },
      "message": "block: fix patch import error in max_discard_sectors check\n\nA \u0027!\u0027 snuck in before the unlikely, rendering it useless.\n\nReported-by: Mike Snitzer \u003csnitzer@redhat.com\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "d4e06701b89286a306b31e20ec69a904fae374a1",
      "tree": "f6adefd65b021ccddb7655109ea8b9ab4e714292",
      "parents": [
        "e4980371059ca4a81ccdcb4381c41af8869ca711",
        "87045b033a62777337ae4aa62834876da09b5fb5"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Jul 23 11:13:11 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Jul 23 11:13:11 2011 -0700"
      },
      "message": "Merge git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi-misc-2.6\n\n* git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi-misc-2.6: (77 commits)\n  [SCSI] fix crash in scsi_dispatch_cmd()\n  [SCSI] sr: check_events() ignore GET_EVENT when TUR says otherwise\n  [SCSI] bnx2i: Fixed kernel panic due to illegal usage of sc-\u003erequest-\u003ecpu\n  [SCSI] bfa: Update the driver version to 3.0.2.1\n  [SCSI] bfa: Driver and BSG enhancements.\n  [SCSI] bfa: Added support to query PHY.\n  [SCSI] bfa: Added HBA diagnostics support.\n  [SCSI] bfa: Added support for flash configuration\n  [SCSI] bfa: Added support to obtain SFP info.\n  [SCSI] bfa: Added support for CEE info and stats query.\n  [SCSI] bfa: Extend BSG interface.\n  [SCSI] bfa: FCS bug fixes.\n  [SCSI] bfa: DMA memory allocation enhancement.\n  [SCSI] bfa: Brocade-1860 Fabric Adapter vHBA support.\n  [SCSI] bfa: Brocade-1860 Fabric Adapter PLL init fixes.\n  [SCSI] bfa: Added Fabric Assigned Address(FAA) support\n  [SCSI] bfa: IOC bug fixes.\n  [SCSI] bfa: Enable ASIC block configuration and query.\n  [SCSI] bnx2i: Updated copyright and bump version\n  [SCSI] bnx2i: Modified to skip CNIC registration if iSCSI is not supported\n  ...\n\nFix up some trivial conflicts in:\n - drivers/scsi/bnx2fc/{bnx2fc.h,bnx2fc_fcoe.c}:\n\tCrazy broadcom version number conflicts\n - drivers/target/tcm_fc/tfc_cmd.c\n\tJust trivial cleanups done on adjacent lines\n"
    },
    {
      "commit": "bfe159a51203c15d23cb3158fffdc25ec4b4dda1",
      "tree": "553b2d7b1422545032cf3c048db7dff5f5c8dbd3",
      "parents": [
        "79b9677d885d1a792bc103f2febb06f91f92de43"
      ],
      "author": {
        "name": "James Bottomley",
        "email": "James.Bottomley@HansenPartnership.com",
        "time": "Thu Jul 07 15:45:40 2011 -0500"
      },
      "committer": {
        "name": "James Bottomley",
        "email": "JBottomley@Parallels.com",
        "time": "Thu Jul 21 14:21:18 2011 -0700"
      },
      "message": "[SCSI] fix crash in scsi_dispatch_cmd()\n\nUSB surprise removal of sr is triggering an oops in\nscsi_dispatch_command().  What seems to be happening is that USB is\nhanging on to a queue reference until the last close of the upper\ndevice, so the crash is caused by surprise remove of a mounted CD\nfollowed by attempted unmount.\n\nThe problem is that USB doesn\u0027t issue its final commands as part of\nthe SCSI teardown path, but on last close when the block queue is long\ngone.  The long term fix is probably to make sr do the teardown in the\nsame way as sd (so remove all the lower bits on ejection, but keep the\nupper disk alive until last close of user space).  However, the\ncurrent oops can be simply fixed by not allowing any commands to be\nsent to a dead queue.\n\nCc: stable@kernel.org\nSigned-off-by: James Bottomley \u003cJBottomley@Parallels.com\u003e\n"
    },
    {
      "commit": "57bdfbf9ee2b0856d8b62180c3b3f8fa1533b8d1",
      "tree": "d39485c723d98fb3d7b2499c59232cd05f4eabc2",
      "parents": [
        "8497a24a43374f0142335b0ef0614ccc459e3d8d"
      ],
      "author": {
        "name": "Lai Jiangshan",
        "email": "laijs@cn.fujitsu.com",
        "time": "Fri Mar 18 11:42:58 2011 +0800"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Wed Jul 20 14:10:13 2011 -0700"
      },
      "message": "block,rcu: Convert call_rcu(disk_free_ptbl_rcu_cb) to kfree_rcu()\n\nThe rcu callback disk_free_ptbl_rcu_cb() just calls a kfree(),\nso we use kfree_rcu() instead of the call_rcu(disk_free_ptbl_rcu_cb).\n\nSigned-off-by: Lai Jiangshan \u003claijs@cn.fujitsu.com\u003e\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\nCc: Jens Axboe \u003caxboe@kernel.dk\u003e\nReviewed-by: Josh Triplett \u003cjosh@joshtriplett.org\u003e\n"
    },
    {
      "commit": "7700fc4f675fa38094e78e345b594363a2fd895b",
      "tree": "000ae1fb3d825240b7e78ad8d3db66be168ffe94",
      "parents": [
        "f5f2b6ceb23e02ff35c6dbc6a39aa776ace99cda"
      ],
      "author": {
        "name": "Shaohua Li",
        "email": "shaohua.li@intel.com",
        "time": "Tue Jul 12 14:24:56 2011 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Tue Jul 12 14:24:56 2011 +0200"
      },
      "message": "CFQ: add think time check for group\n\nCurrently when the last queue of a group has no request, we don\u0027t expire\nthe queue to hope request from the group comes soon, so the group doesn\u0027t\nmiss its share. But if the think time is big, the assumption isn\u0027t correct\nand we just waste bandwidth. In such case, we don\u0027t do idle.\n\n[global]\nruntime\u003d30\ndirect\u003d1\n\n[test1]\ncgroup\u003dtest1\ncgroup_weight\u003d1000\nrw\u003drandread\nioengine\u003dlibaio\nsize\u003d500m\nruntime\u003d30\ndirectory\u003d/mnt\nfilename\u003dfile1\nthinktime\u003d9000\n\n[test2]\ncgroup\u003dtest2\ncgroup_weight\u003d1000\nrw\u003drandread\nioengine\u003dlibaio\nsize\u003d500m\nruntime\u003d30\ndirectory\u003d/mnt\nfilename\u003dfile2\n\n\tpatched\t\tbase\ntest1\t64k\t\t39k\ntest2\t548k\t\t540k\ntotal\t604k\t\t578k\n\ngroup1 gets much better throughput because it waits less time.\n\nTo check if the patch changes behavior of queue without think time. I also\ntried to give test1 2ms think time or no think time. The test result is stable.\nThe thoughput doesn\u0027t change with/without the patch.\n\nSigned-off-by: Shaohua Li \u003cshaohua.li@intel.com\u003e\nAcked-by: Vivek Goyal \u003cvgoyal@redhat.com\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "f5f2b6ceb23e02ff35c6dbc6a39aa776ace99cda",
      "tree": "19ea26a1832c03c1c221675d3372b86abd12cc83",
      "parents": [
        "383cd7213f95a2784ab5038fe292844178768b82"
      ],
      "author": {
        "name": "Shaohua Li",
        "email": "shaohua.li@intel.com",
        "time": "Tue Jul 12 14:24:55 2011 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Tue Jul 12 14:24:55 2011 +0200"
      },
      "message": "CFQ: add think time check for service tree\n\nCurrently when the last queue of a service tree has no request, we don\u0027t\nexpire the queue to hope request from the service tree comes soon, so the\nservice tree doesn\u0027t miss its share. But if the think time is big, the\nassumption isn\u0027t correct and we just waste bandwidth. In such case, we\ndon\u0027t do idle.\n\n[global]\nruntime\u003d10\ndirect\u003d1\n\n[test1]\nrw\u003drandread\nioengine\u003dlibaio\nsize\u003d500m\ndirectory\u003d/mnt\nfilename\u003dfile1\nthinktime\u003d9000\n\n[test2]\nrw\u003dread\nioengine\u003dlibaio\nsize\u003d1G\ndirectory\u003d/mnt\nfilename\u003dfile2\n\n\tpatched\t\tbase\ntest1\t41k/s\t\t33k/s\ntest2\t15868k/s\t15789k/s\ntotal\t15902k/s\t15817k/s\n\nA slightly better\n\nTo check if the patch changes behavior of queue without think time. I also\ntried to give test1 2ms think time or no think time. The test has variation\neven without the patch, but the average throughput doesn\u0027t change with/without\nthe patch.\n\nSigned-off-by: Shaohua Li \u003cshaohua.li@intel.com\u003e\nAcked-by: Vivek Goyal \u003cvgoyal@redhat.com\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "383cd7213f95a2784ab5038fe292844178768b82",
      "tree": "625de0648246daff30a9030e350c29584d29441e",
      "parents": [
        "4aede84b33d6beb401136a3deca0651ae07c5e99"
      ],
      "author": {
        "name": "Shaohua Li",
        "email": "shaohua.li@intel.com",
        "time": "Tue Jul 12 14:24:35 2011 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Tue Jul 12 14:24:35 2011 +0200"
      },
      "message": "CFQ: move think time check variables to a separate struct\n\nMove the variables to do think time check to a sepatate struct. This is\nto prepare adding think time check for service tree and group. No\nfunctional change.\n\nSigned-off-by: Shaohua Li \u003cshaohua.li@intel.com\u003e\nAcked-by: Vivek Goyal \u003cvgoyal@redhat.com\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "4aede84b33d6beb401136a3deca0651ae07c5e99",
      "tree": "831266dbb15227584da5011ae4bb1e5038a69677",
      "parents": [
        "a07405b7802691d29ab3b23bdc76ee6d006aad0b"
      ],
      "author": {
        "name": "Justin TerAvest",
        "email": "teravest@google.com",
        "time": "Tue Jul 12 08:31:45 2011 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Tue Jul 12 08:35:10 2011 +0200"
      },
      "message": "fixlet: Remove fs_excl from struct task.\n\nfs_excl is a poor man\u0027s priority inheritance for filesystems to hint to\nthe block layer that an operation is important. It was never clearly\nspecified, not widely adopted, and will not prevent starvation in many\ncases (like across cgroups).\n\nfs_excl was introduced with the time sliced CFQ IO scheduler, to\nindicate when a process held FS exclusive resources and thus needed\na boost.\n\nIt doesn\u0027t cover all file systems, and it was never fully complete.\nLets kill it.\n\nSigned-off-by: Justin TerAvest \u003cteravest@google.com\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "a07405b7802691d29ab3b23bdc76ee6d006aad0b",
      "tree": "8ca155acb56662e9807af2fa91b801b9f0d25495",
      "parents": [
        "316cc67d5e03801a5ee4ac660a4dfe9e02aed475"
      ],
      "author": {
        "name": "Justin TerAvest",
        "email": "teravest@google.com",
        "time": "Sun Jul 10 22:09:19 2011 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Sun Jul 10 22:09:19 2011 +0200"
      },
      "message": "cfq: Remove special treatment for metadata rqs.\n\nThere is no consistency among filesystems from what bios (or requests)\nare marked as being metadata. It\u0027s interesting to expose this in traces,\nbut we shouldn\u0027t schedule the requests differently based on whether or\nnot they\u0027re marked as being metadata.\n\nSigned-off-by: Justin TerAvest \u003cteravest@google.com\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "55c022bbddb2c056b5dff1bd1b1758d31b6d64c9",
      "tree": "fdd3aa29a1407bbd19b8efe47b2538544da85a70",
      "parents": [
        "719c0c590609809365c6f3da2f923cd84dc99113"
      ],
      "author": {
        "name": "Shaohua Li",
        "email": "shaohua.li@intel.com",
        "time": "Fri Jul 08 08:19:20 2011 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Fri Jul 08 08:19:20 2011 +0200"
      },
      "message": "block: avoid building too big plug list\n\nWhen I test fio script with big I/O depth, I found the total throughput drops\ncompared to some relative small I/O depth. The reason is the thread accumulates\nbig requests in its plug list and causes some delays (surely this depends\non CPU speed).\nI thought we\u0027d better have a threshold for requests. When a threshold reaches,\nthis means there is no request merge and queue lock contention isn\u0027t severe\nwhen pushing per-task requests to queue, so the main advantages of blk plug\ndon\u0027t exist. We can force a plug list flush in this case.\nWith this, my test throughput actually increases and almost equals to small\nI/O depth. Another side effect is irq off time decreases in blk_flush_plug_list()\nfor big I/O depth.\nThe BLK_MAX_REQUEST_COUNT is choosen arbitarily, but 16 is efficiently to\nreduce lock contention to me. But I\u0027m open here, 32 is ok in my test too.\n\nSigned-off-by: Shaohua Li \u003cshaohua.li@intel.com\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "0f79960391a5a1e3679956024e18aeeb0369ac44",
      "tree": "4b7e1f7a2b24f3307259024a5f29dbdc0f8b7bd2",
      "parents": [
        "390192b300570b2bc721d77067ca133f58015ae8"
      ],
      "author": {
        "name": "Mike Snitzer",
        "email": "snitzer@redhat.com",
        "time": "Wed Jul 06 21:30:50 2011 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Wed Jul 06 21:32:02 2011 +0200"
      },
      "message": "block: eliminate potential for infinite loop in blkdev_issue_discard\n\nDue to the recently identified overflow in read_capacity_16() it was\npossible for max_discard_sectors to be zero but still have discards\nenabled on the associated device\u0027s queue.\n\nEliminate the possibility for blkdev_issue_discard to infinitely loop.\n\nInterestingly this issue wasn\u0027t identified until a device, whose\ndiscard_granularity was 0 due to read_capacity_16 overflow, was consumed\nby blk_stack_limits() to construct limits for a higher-level DM\nmultipath device.  The multipath device\u0027s resulting limits never had the\ndiscard limits stacked because blk_stack_limits() will only do so if\nthe bottom device\u0027s discard_granularity !\u003d 0.  This resulted in the\nmultipath device\u0027s limits.max_discard_sectors being 0.\n\nSigned-off-by: Mike Snitzer \u003csnitzer@redhat.com\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "390192b300570b2bc721d77067ca133f58015ae8",
      "tree": "bacbd75f23e74308b814146338bcaa6b3636bae7",
      "parents": [
        "85ef06d1d252f6a2e73b678591ab71caad4667bb"
      ],
      "author": {
        "name": "Johannes Stezenbach",
        "email": "js@sig21.net",
        "time": "Fri Jul 01 22:32:26 2011 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Fri Jul 01 22:32:26 2011 +0200"
      },
      "message": "compat_ioctl: fix warning caused by qemu\n\nOn Linux x86_64 host with 32bit userspace, running\nqemu or even just \"qemu-img create -f qcow2 some.img 1G\"\ncauses a kernel warning:\n\nioctl32(qemu-img:5296): Unknown cmd fd(3) cmd(00005326){t:\u0027S\u0027;sz:0} arg(7fffffff) on some.img\nioctl32(qemu-img:5296): Unknown cmd fd(3) cmd(801c0204){t:02;sz:28} arg(fff77350) on some.img\n\nioctl 00005326 is CDROM_DRIVE_STATUS,\nioctl 801c0204 is FDGETPRM.\n\nThe warning appears because the Linux compat-ioctl handler for these\nioctls only applies to block devices, while qemu also uses the ioctls on\nplain files.\n\nSigned-off-by: Johannes Stezenbach \u003cjs@sig21.net\u003e\nAcked-by: Arnd Bergmann \u003carnd@arndb.de\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "85ef06d1d252f6a2e73b678591ab71caad4667bb",
      "tree": "dc5cbc4f2e54f5b5b3f8653a595799e5fe0f2f18",
      "parents": [
        "04bf7869ca0fd12009aee301cac2264a36df4d98"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Fri Jul 01 16:17:47 2011 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Fri Jul 01 16:17:47 2011 +0200"
      },
      "message": "block: flush MEDIA_CHANGE from drivers on close(2)\n\nCurrently, only open(2) is defined as the \u0027clearing\u0027 point.  It has\ntwo roles - first, it\u0027s an acknowledgement from userland indicating\nthat the event has been received and kernel can clear pending states\nand proceed to generate more events.  Secondly, it\u0027s passed on to\ndevice drivers as a hint indicating that a synchronization point has\nbeen reached and it might want to take a deeper look at the device.\n\nThe latter currently is only used by sr which uses two different\nmechanisms - GET_EVENT_MEDIA_STATUS_NOTIFICATION and TEST_UNIT_READY\nto discover events, where the former is lighter weight and safe to be\nused repeatedly but may not provide full coverage.  Among other\nthings, GET_EVENT can\u0027t detect media removal while TUR can.\n\nThis patch makes close(2) - blkdev_put() - indicate clearing hint for\nMEDIA_CHANGE to drivers.  disk_check_events() is renamed to\ndisk_flush_events() and updated to take @mask for events to flush\nwhich is or\u0027d to ev-\u003eclearing and will be passed to the driver on the\nnext -\u003echeck_events() invocation.\n\nThis change makes sr generate MEDIA_CHANGE when media is ejected from\nuserland - e.g. with eject(1).\n\nNote: Given the current usage, it seems @clearing hint is needlessly\ncomplex.  disk_clear_events() can simply clear all events and the hint\ncan be boolean @flush.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nCc: Kay Sievers \u003ckay.sievers@vrfy.org\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "04bf7869ca0fd12009aee301cac2264a36df4d98",
      "tree": "66cb81ebf8b76560a31433c2c493dc430c914af9",
      "parents": [
        "d2f31a5fd60d168b00fc4f7617b68a1287b21e90",
        "7b28afe01ab6ffb5f152f47831b44933facd2328"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Fri Jul 01 16:17:13 2011 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Fri Jul 01 16:17:13 2011 +0200"
      },
      "message": "Merge branch \u0027for-linus\u0027 into for-3.1/core\n\nConflicts:\n\tblock/blk-throttle.c\n\tblock/cfq-iosched.c\n\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "726e99ab88db059fe1422e15376ae404f8c66eb4",
      "tree": "8d9373239aa568f28631e253d9fd07bc78b312c3",
      "parents": [
        "3181faa85bda3dc3f5e630a1846526c9caaa38e3"
      ],
      "author": {
        "name": "Shaohua Li",
        "email": "shaohua.li@intel.com",
        "time": "Mon Jun 27 09:03:48 2011 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Mon Jun 27 09:36:06 2011 +0200"
      },
      "message": "cfq-iosched: make code consistent\n\nioc-\u003eioc_data is rcu protectd, so uses correct API to access it.\nThis doesn\u0027t change any behavior, but just make code consistent.\n\nSigned-off-by: Shaohua Li \u003cshaohua.li@intel.com\u003e\nCc: stable@kernel.org # after ab4bd22d\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "3181faa85bda3dc3f5e630a1846526c9caaa38e3",
      "tree": "1017c61ebf8a7711ac400e2a728e188ec5770001",
      "parents": [
        "258e43fdb00c73d424b114ae3850accd55b27cbb"
      ],
      "author": {
        "name": "Shaohua Li",
        "email": "shaohua.li@intel.com",
        "time": "Mon Jun 27 09:03:47 2011 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Mon Jun 27 09:36:06 2011 +0200"
      },
      "message": "cfq-iosched: fix a rcu warning\n\nI got a rcu warnning at boot. the ioc-\u003eioc_data is rcu_deferenced, but\ndoesn\u0027t hold rcu_read_lock.\n\nSigned-off-by: Shaohua Li \u003cshaohua.li@intel.com\u003e\nCc: stable@kernel.org # after ab4bd22d\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "2b727c6300b49352f80f63704bb50c256949e95e",
      "tree": "42e688cb7668c19bbd67673f34aa3bc3d162a8dc",
      "parents": [
        "44194e3e88fcfe77a2a6e2333847d4f27816259a"
      ],
      "author": {
        "name": "Namhyung Kim",
        "email": "namhyung@gmail.com",
        "time": "Mon Jun 20 13:27:45 2011 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Mon Jun 20 13:27:45 2011 +0200"
      },
      "message": "bsg: fix address space warning from sparse\n\ncopy_from/to_user() and blk_rq_map_user() want __user pointer.\nThis patch fixes following warnings from sparse:\n\n   CHECK   block/bsg.c\n block/bsg.c:185:38: warning: incorrect type in argument 2 (different address spaces)\n block/bsg.c:185:38:    expected void const [noderef] \u003casn:1\u003e*from\n block/bsg.c:185:38:    got void *\u003cnoident\u003e\n block/bsg.c:295:58: warning: incorrect type in argument 4 (different address spaces)\n block/bsg.c:295:58:    expected void [noderef] \u003casn:1\u003e*\u003cnoident\u003e\n block/bsg.c:295:58:    got void *[assigned] dxferp\n block/bsg.c:311:52: warning: incorrect type in argument 4 (different address spaces)\n block/bsg.c:311:52:    expected void [noderef] \u003casn:1\u003e*\u003cnoident\u003e\n block/bsg.c:311:52:    got void *[assigned] dxferp\n block/bsg.c:448:37: warning: incorrect type in argument 1 (different address spaces)\n block/bsg.c:448:37:    expected void [noderef] \u003casn:1\u003e*dst\n block/bsg.c:448:37:    got void *\u003cnoident\u003e\n\nSigned-off-by: Namhyung Kim \u003cnamhyung@gmail.com\u003e\nAcked-by: FUJITA Tomonori \u003cfujita.tomonori@lab.ntt.co.jp\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "44194e3e88fcfe77a2a6e2333847d4f27816259a",
      "tree": "66d3aa40d385570b0c269b28371f086fa6ca6244",
      "parents": [
        "80ceb057135ad77f513277f3bcd04b885501877a"
      ],
      "author": {
        "name": "Namhyung Kim",
        "email": "namhyung@gmail.com",
        "time": "Mon Jun 20 13:27:44 2011 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Mon Jun 20 13:27:44 2011 +0200"
      },
      "message": "bsg: remove unnecessary conditional expressions\n\nSecond condition in OR always implies first condition is false\nthus bytes_read in the second is not needed. The same goes to\nbytes_written.\n\nSigned-off-by: Namhyung Kim \u003cnamhyung@gmail.com\u003e\nAcked-by: FUJITA Tomonori \u003cfujita.tomonori@lab.ntt.co.jp\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "80ceb057135ad77f513277f3bcd04b885501877a",
      "tree": "78e4c78028097ddcf8229133701d6659bb44fa23",
      "parents": [
        "2c53b436a30867eb6b47dd7bab23ba638d1fb0d2"
      ],
      "author": {
        "name": "Namhyung Kim",
        "email": "namhyung@gmail.com",
        "time": "Mon Jun 20 13:27:44 2011 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Mon Jun 20 13:27:44 2011 +0200"
      },
      "message": "bsg: fix bsg_poll() to return POLLOUT properly\n\nPOLLOUT should be returned only if bd-\u003equeued_cmds \u003c bd-\u003emax_queue\nso that bsg_alloc_command() can proceed.\n\nSigned-off-by: Namhyung Kim \u003cnamhyung@gmail.com\u003e\nAcked-by: FUJITA Tomonori \u003cfujita.tomonori@lab.ntt.co.jp\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "d2f31a5fd60d168b00fc4f7617b68a1287b21e90",
      "tree": "c51b882926a840df57e376d21df74ec4177561a3",
      "parents": [
        "fd16d263194aa6b50b215eb593a567b59d744d6e"
      ],
      "author": {
        "name": "Joe Perches",
        "email": "joe@perches.com",
        "time": "Mon Jun 13 20:19:27 2011 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Mon Jun 13 20:19:27 2011 +0200"
      },
      "message": "blk-throttle: Make total_nr_queued unsigned\n\nThe total of two unsigned values should also be unsigned.\n\nUpdate throtl_log output to unsigned.\nUpdate total_nr_queued test to non-zero to be the\nsame as the other total_nr_queued tests.\n\nSigned-off-by: Joe Perches \u003cjoe@perches.com\u003e\nAcked-by: Vivek Goyal \u003cvgoyal@redhat.com\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "fd16d263194aa6b50b215eb593a567b59d744d6e",
      "tree": "555aac4bd0104ea85643f1a3550c9bc1cbac9256",
      "parents": [
        "dd7740933842202fccaa9ebcba6bce0507b3f6d6"
      ],
      "author": {
        "name": "Joe Perches",
        "email": "joe@perches.com",
        "time": "Mon Jun 13 10:42:49 2011 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Mon Jun 13 20:18:49 2011 +0200"
      },
      "message": "block: Add __attribute__((format(printf...) and fix fallout\n\nUse the compiler to verify format strings and arguments.\n\nFix fallout.\n\nSigned-off-by: Joe Perches \u003cjoe@perches.com\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "9f5e486550456587348e2048eecda5bee778250a",
      "tree": "58e267d7a03deeb13c35b6b737b8307d674d8a9a",
      "parents": [
        "4d0d98b60eba726e0a4f3e6617628b070c444707"
      ],
      "author": {
        "name": "Wanlong Gao",
        "email": "wanlong.gao@gmail.com",
        "time": "Mon Jun 13 10:45:43 2011 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Mon Jun 13 10:45:43 2011 +0200"
      },
      "message": "block:remove some spare spaces in genhd.c\n\nRemove the end-of-line spaces in genhd.c.\n\nSigned-off-by: Wanlong Gao \u003cwanlong.gao@gmail.com\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "08e8138adebdd511e0955e8d6c051904bb4082af",
      "tree": "f73e9adc3e0164bf427f297312dff95c370db5ee",
      "parents": [
        "fdd514e16bb2531c0c61ae8a1f87740ce217f630"
      ],
      "author": {
        "name": "Joe Perches",
        "email": "joe@perches.com",
        "time": "Mon Jun 13 10:42:49 2011 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Mon Jun 13 10:42:49 2011 +0200"
      },
      "message": "block: Add __attribute__((format(printf...) and fix fallout\n\nUse the compiler to verify format strings and arguments.\n\nFix fallout.\n\nSigned-off-by: Joe Perches \u003cjoe@perches.com\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "fdd514e16bb2531c0c61ae8a1f87740ce217f630",
      "tree": "5d7b6d4f9112b0b6f93f7ce939045fb634abc3fa",
      "parents": [
        "c3af54afbac3675337cedf326b7b127ffa7f7327"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Thu Jun 09 20:43:59 2011 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Thu Jun 09 20:43:59 2011 +0200"
      },
      "message": "block: make disk_block_events() properly wait for work cancellation\n\ndisk_block_events() should guarantee that the event work is not in\nflight on return and once blocked it shouldn\u0027t issue further\ncancellations.\n\nBecause there was no synchronization between the first blocker doing\ncancel_delayed_work_sync() and the following blockers, the following\nblockers could finish before cancellation was complete, which broke\nboth guarantees - event work could be in flight and cancellation could\nhappen after return.\n\nThis bug triggered WARN_ON_ONCE() in disk_clear_events() reported in\nbug#34662.\n\n  https://bugzilla.kernel.org/show_bug.cgi?id\u003d34662\n\nFix it by adding an outer mutex which protects both block count\nmanipulation and work cancellation.\n\n-v2: Use outer mutex instead of bit waitqueue per Linus.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nTested-by: Sitsofe Wheeler \u003csitsofe@yahoo.com\u003e\nReported-by: Sitsofe Wheeler \u003csitsofe@yahoo.com\u003e\nReported-by: Borislav Petkov \u003cbp@alien8.de\u003e\nReported-by: Meelis Roos \u003cmroos@linux.ee\u003e\nReported-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\nCc: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nCc: Jens Axboe \u003caxboe@kernel.dk\u003e\nCc: Kay Sievers \u003ckay.sievers@vrfy.org\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "c3af54afbac3675337cedf326b7b127ffa7f7327",
      "tree": "cc49ada3a2ef88f1415af73635cff7d062615856",
      "parents": [
        "a9dce2a3b4f0686dd66cb44d4826a59508bce969"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Thu Jun 09 20:43:55 2011 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Thu Jun 09 20:43:55 2011 +0200"
      },
      "message": "block: remove non-syncing __disk_block_events() and fold it into disk_block_events()\n\nAfter the previous update to disk_check_events(), nobody is using\nnon-syncing __disk_block_events().  Remove @sync and, as this makes\n__disk_block_events() virtually identical to disk_block_events(),\nremove the underscore prefixed version.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nCc: Jens Axboe \u003caxboe@kernel.dk\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "a9dce2a3b4f0686dd66cb44d4826a59508bce969",
      "tree": "3a5ed54316884a86102e99a4442a13d2f0c81d57",
      "parents": [
        "ab4bd22d3cce6977dc039664cc2d052e3147d662"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Thu Jun 09 20:43:54 2011 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Thu Jun 09 20:43:54 2011 +0200"
      },
      "message": "block: don\u0027t use non-syncing event blocking in disk_check_events()\n\nThis patch is part of fix for triggering of WARN_ON_ONCE() in\ndisk_clear_events() reported in bug#34662.\n\n  https://bugzilla.kernel.org/show_bug.cgi?id\u003d34662\n\ndisk_clear_events() blocks events, schedules and flushes the event\nwork.  It expects the work to have started execution on schedule and\nfinished on return from flush.  WARN_ON_ONCE() triggers if the event\nwork hasn\u0027t executed as expected.  This problem happens because\n__disk_block_events() fails to guarantee that the event work item is\nnot in flight on return from the function in race-free manner.  The\nproblem is two-fold and this patch addresses one of them.\n\nWhen __disk_block_events() is called with @sync \u003d\u003d %false, it bumps\nevent block count, calls cancel_delayed_work() and return.  This makes\nit impossible to guarantee that event polling is not in flight on\nreturn from syncing __disk_block_events() - if the first blocker was\nnon-syncing, polling could still be in progress and later syncing ones\nwould assume that the first blocker already canceled it.\n\nMaking __disk_block_events() cancel_sync regardless of block count\nisn\u0027t feasible either as it may race with forced event checking in\ndisk_clear_events().\n\nAs disk_check_events() is the only user of non-syncing\n__disk_block_events(), updating it to directly cancel and schedule\nevent work is the easiest way to solve the issue.\n\nNote that there\u0027s another bug in __disk_block_events() and this patch\ndoesn\u0027t fix the issue completely.  Later patch will fix the other bug.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nTested-by: Sitsofe Wheeler \u003csitsofe@yahoo.com\u003e\nReported-by: Sitsofe Wheeler \u003csitsofe@yahoo.com\u003e\nReported-by: Borislav Petkov \u003cbp@alien8.de\u003e\nReported-by: Meelis Roos \u003cmroos@linux.ee\u003e\nReported-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\nCc: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nCc: Jens Axboe \u003caxboe@kernel.dk\u003e\nCc: Kay Sievers \u003ckay.sievers@vrfy.org\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "df4156569d4ace581bd1581e7aa4a9dd7d2f0775",
      "tree": "1163b57017ce3ccef73f08d4d1c8b93417fec4d2",
      "parents": [
        "8aea45451b252e4be09ee9974c5658bb47c81625"
      ],
      "author": {
        "name": "Paul Bolle",
        "email": "pebolle@tiscali.nl",
        "time": "Mon Jun 06 05:11:34 2011 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Mon Jun 06 05:57:25 2011 +0200"
      },
      "message": "block: rename the return of two functions\n\nIf we rename the return of alloc_io_context() and get_io_context() from\n\"ret\" to \"ioc\" the code get\u0027s (a bit) more readable and (a lot) more\ngrepable.\n\nSigned-off-by: Paul Bolle \u003cpebolle@tiscali.nl\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "8aea45451b252e4be09ee9974c5658bb47c81625",
      "tree": "7b838405229f32fb7937fac49c95b2d1294fb59b",
      "parents": [
        "9b50902db5eb8a220160fb89e95aa11967998d12"
      ],
      "author": {
        "name": "Paul Bolle",
        "email": "pebolle@tiscali.nl",
        "time": "Mon Jun 06 05:07:54 2011 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Mon Jun 06 05:57:25 2011 +0200"
      },
      "message": "CFQ: make two functions static\n\nCorrectly suggested by sparse.\n\nSigned-off-by: Paul Bolle \u003cpebolle@tiscali.nl\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "9b50902db5eb8a220160fb89e95aa11967998d12",
      "tree": "ad025360c616398f2b0aea1f0789a2f8174496b1",
      "parents": [
        "796d5116c407690b14fd5bda136aa67a39e7061a"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Sun Jun 05 06:01:13 2011 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Mon Jun 06 05:57:21 2011 +0200"
      },
      "message": "cfq-iosched: fix locking around ioc-\u003eioc_data assignment\n\nSince we are modifying this RCU pointer, we need to hold\nthe lock protecting it around it.\n\nThis fixes a potential reuse and double free of a cfq\nio_context structure. The bug has been in CFQ for a long\ntime, it hit very few people but those it did hit seemed\nto see it a lot.\n\nTracked in RH bugzilla here:\n\nhttps://bugzilla.redhat.com/show_bug.cgi?id\u003d577968\n\nCredit goes to Paul Bolle for figuring out that the issue\nwas around the one-hit ioc-\u003eioc_data cache. Thanks to his\nhard work the issue is now fixed.\n\nCc: stable@kernel.org\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "ab4bd22d3cce6977dc039664cc2d052e3147d662",
      "tree": "70cd3b540a8efef5d737da68272f67d2265c356a",
      "parents": [
        "23c79d31a3dd2602ee1a5ff31303b2d7a2d3c159"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Sun Jun 05 06:01:13 2011 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Mon Jun 06 05:56:49 2011 +0200"
      },
      "message": "cfq-iosched: fix locking around ioc-\u003eioc_data assignment\n\nSince we are modifying this RCU pointer, we need to hold\nthe lock protecting it around it.\n\nThis fixes a potential reuse and double free of a cfq\nio_context structure. The bug has been in CFQ for a long\ntime, it hit very few people but those it did hit seemed\nto see it a lot.\n\nTracked in RH bugzilla here:\n\nhttps://bugzilla.redhat.com/show_bug.cgi?id\u003d577968\n\nCredit goes to Paul Bolle for figuring out that the issue\nwas around the one-hit ioc-\u003eioc_data cache. Thanks to his\nhard work the issue is now fixed.\n\nCc: stable@kernel.org\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "796d5116c407690b14fd5bda136aa67a39e7061a",
      "tree": "bb0522aacb0a923e6636c82aff143df95ea1d730",
      "parents": [
        "1fa7b6a29c61358cc2ca6f64cef4aa0e1a7ca74c"
      ],
      "author": {
        "name": "Jeff Moyer",
        "email": "jmoyer@redhat.com",
        "time": "Thu Jun 02 21:19:05 2011 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Thu Jun 02 21:19:05 2011 +0200"
      },
      "message": "iosched: prevent aliased requests from starving other I/O\n\nHi, Jens,\n\nIf you recall, I posted an RFC patch for this back in July of last year:\nhttp://lkml.org/lkml/2010/7/13/279\n\nThe basic problem is that a process can issue a never-ending stream of\nasync direct I/Os to the same sector on a device, thus starving out\nother I/O in the system (due to the way the alias handling works in both\ncfq and deadline).  The solution I proposed back then was to start\ndispatching from the fifo after a certain number of aliases had been\ndispatched.  Vivek asked why we had to treat aliases differently at all,\nand I never had a good answer.  So, I put together a simple patch which\nallows aliases to be added to the rb tree (it adds them to the right,\nthough that doesn\u0027t matter as the order isn\u0027t guaranteed anyway).  I\nthink this is the preferred solution, as it doesn\u0027t break up time slices\nin CFQ or batches in deadline.  I\u0027ve tested it, and it does solve the\nstarvation issue.  Let me know what you think.\n\nCheers,\nJeff\n\nSigned-off-by: Jeff Moyer \u003cjmoyer@redhat.com\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "e2bd9678fc0085acf540dc4cb48ff961cd4d88c0",
      "tree": "25fa9535761abdafa1f9de9fc86108d8b178cfef",
      "parents": [
        "28304f485c3627cc5e1665b92e26eb7fcfe98088"
      ],
      "author": {
        "name": "Paul Bolle",
        "email": "pebolle@tiscali.nl",
        "time": "Thu Jun 02 13:05:02 2011 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Thu Jun 02 13:05:02 2011 +0200"
      },
      "message": "block: Use hlist_entry() for io_context.cic_list.first\n\nlist_entry() and hlist_entry() are both simply aliases for\ncontainer_of(), but since io_context.cic_list.first is an hlist_node one\nshould at least use the correct alias.\n\nSigned-off-by: Paul Bolle \u003cpebolle@tiscali.nl\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "28304f485c3627cc5e1665b92e26eb7fcfe98088",
      "tree": "c885abcc932d5ae28fdeb49027ea5eafaaafd376",
      "parents": [
        "4c49ff3fe128ca68dabd07537415c419ad7f82f9"
      ],
      "author": {
        "name": "Paul Bolle",
        "email": "pebolle@tiscali.nl",
        "time": "Thu Jun 02 13:05:02 2011 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Thu Jun 02 13:05:02 2011 +0200"
      },
      "message": "cfq-iosched: Remove bogus check in queue_fail path\n\nqueue_fail can only be reached if cic is NULL, so its check for cic must\nbe bogus.\n\nSigned-off-by: Paul Bolle \u003cpebolle@tiscali.nl\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "4495a7d41dbda03841c2a1c2a5ce7135a45131ba",
      "tree": "9c5044963151f3c058d9e20ef88c4a856497fe27",
      "parents": [
        "ea9d6553b3b3044e7374774cc33bb1b2eee19dd3"
      ],
      "author": {
        "name": "Kyungmin Park",
        "email": "kyungmin.park@samsung.com",
        "time": "Tue May 31 10:04:09 2011 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Tue May 31 19:49:44 2011 +0200"
      },
      "message": "CFQ: Fix typo and remove unnecessary semicolon\n\nFix comment typo and remove unnecessary semicolon at macro\n\nSigned-off-by: Kyungmin Park \u003ckyungmin.park@samsung.com\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "bdf7cf1c83872a0586ce4c4da6889103cc36dbd3",
      "tree": "9311bbcf8b9ffbe7207eba5cca557275f8151ae7",
      "parents": [
        "40efeb4d0bb1993c3c10baff9b7d86839f99171e",
        "ac04fee0b5c55bbac0858727a4154110b55d3f5a"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri May 27 10:24:40 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri May 27 10:24:40 2011 -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  loop: export module parameters\n  block: export blk_{get,put}_queue()\n  block: remove unused variable in bio_attempt_front_merge()\n  block: always allocate genhd-\u003eev if check_events is implemented\n  brd: export module parameters\n  brd: fix comment on initial device creation\n  brd: handle on-demand devices correctly\n  brd: limit \u0027max_part\u0027 module param to DISK_MAX_PARTS\n  brd: get rid of unused members from struct brd_device\n  block: fix oops on !disk-\u003equeue and sysfs discard alignment display\n"
    }
  ],
  "next": "d86e0e83b32bc84600adb0b6ea1fce389b266682"
}
