)]}'
{
  "log": [
    {
      "commit": "05c69d298c96703741cac9a5cbbf6c53bd55a6e2",
      "tree": "a9918d8c056adcd527b6cdf23ec9dc26e585efe9",
      "parents": [
        "85fd0bc95bc76d129db0d0114c40665745bbba07"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Tue May 15 08:22:04 2012 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@kernel.dk",
        "time": "Tue May 15 08:22:04 2012 +0200"
      },
      "message": "block: fix buffer overflow when printing partition UUIDs\n\n6d1d8050b4bc8 \"block, partition: add partition_meta_info to hd_struct\"\nadded part_unpack_uuid() which assumes that the passed in buffer has\nenough space for sprintfing \"%pU\" - 37 characters including \u0027\\0\u0027.\n\nUnfortunately, b5af921ec0233 \"init: add support for root devices\nspecified by partition UUID\" supplied 33 bytes buffer to the function\nleading to the following panic with stackprotector enabled.\n\n  Kernel panic - not syncing: stack-protector: Kernel stack corrupted in: ffffffff81b14c7e\n\n  [\u003cffffffff815e226b\u003e] panic+0xba/0x1c6\n  [\u003cffffffff81b14c7e\u003e] ? printk_all_partitions+0x259/0x26xb\n  [\u003cffffffff810566bb\u003e] __stack_chk_fail+0x1b/0x20\n  [\u003cffffffff81b15c7e\u003e] printk_all_paritions+0x259/0x26xb\n  [\u003cffffffff81aedfe0\u003e] mount_block_root+0x1bc/0x27f\n  [\u003cffffffff81aee0fa\u003e] mount_root+0x57/0x5b\n  [\u003cffffffff81aee23b\u003e] prepare_namespace+0x13d/0x176\n  [\u003cffffffff8107eec0\u003e] ? release_tgcred.isra.4+0x330/0x30\n  [\u003cffffffff81aedd60\u003e] kernel_init+0x155/0x15a\n  [\u003cffffffff81087b97\u003e] ? schedule_tail+0x27/0xb0\n  [\u003cffffffff815f4d24\u003e] kernel_thread_helper+0x5/0x10\n  [\u003cffffffff81aedc0b\u003e] ? start_kernel+0x3c5/0x3c5\n  [\u003cffffffff815f4d20\u003e] ? gs_change+0x13/0x13\n\nIncrease the buffer size, remove the dangerous part_unpack_uuid() and\nuse snprintf() directly from printk_all_partitions().\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nReported-by: Szymon Gruszczynski \u003csz.gruszczynski@googlemail.com\u003e\nCc: Will Drewry \u003cwad@chromium.org\u003e\nCc: stable@vger.kernel.org\nSigned-off-by: Jens Axboe \u003caxboe@kernel.dk\u003e\n"
    },
    {
      "commit": "62d3c5439c534b0e6c653fc63e6d8c67be3a57b1",
      "tree": "d335d0e449ef2d61d52921e3f210cdd403bb025a",
      "parents": [
        "cecd353a02fb1405c8a72a324b26b5acf97e7411"
      ],
      "author": {
        "name": "Alan Stern",
        "email": "stern@rowland.harvard.edu",
        "time": "Fri Mar 02 10:51:00 2012 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@kernel.dk",
        "time": "Fri Mar 02 10:51:00 2012 +0100"
      },
      "message": "Block: use a freezable workqueue for disk-event polling\n\nThis patch (as1519) fixes a bug in the block layer\u0027s disk-events\npolling.  The polling is done by a work routine queued on the\nsystem_nrt_wq workqueue.  Since that workqueue isn\u0027t freezable, the\npolling continues even in the middle of a system sleep transition.\n\nObviously, polling a suspended drive for media changes and such isn\u0027t\na good thing to do; in the case of USB mass-storage devices it can\nlead to real problems requiring device resets and even re-enumeration.\n\nThe patch fixes things by creating a new system-wide, non-reentrant,\nfreezable workqueue and using it for disk-events polling.\n\nSigned-off-by: Alan Stern \u003cstern@rowland.harvard.edu\u003e\nCC: \u003cstable@kernel.org\u003e\nAcked-by: Tejun Heo \u003ctj@kernel.org\u003e\nAcked-by: Rafael J. Wysocki \u003crjw@sisk.pl\u003e\nSigned-off-by: Jens Axboe \u003caxboe@kernel.dk\u003e\n"
    },
    {
      "commit": "9f53d2fe815b4011ff930a7b6db98385d45faa68",
      "tree": "a46926f5cf0874102dcb81447894423994a09701",
      "parents": [
        "12ebffd146768556ab7c415d0ff9ab78e3d16b7a"
      ],
      "author": {
        "name": "Stanislaw Gruszka",
        "email": "sgruszka@redhat.com",
        "time": "Fri Mar 02 10:43:28 2012 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@kernel.dk",
        "time": "Fri Mar 02 10:44:17 2012 +0100"
      },
      "message": "block: fix __blkdev_get and add_disk race condition\n\nThe following situation might occur:\n\n__blkdev_get:\t\t\tadd_disk:\n\n\t\t\t\tregister_disk()\nget_gendisk()\n\ndisk_block_events()\n\tdisk-\u003eev \u003d\u003d NULL\n\n\t\t\t\tdisk_add_events()\n\n__disk_unblock_events()\n\tdisk-\u003eev !\u003d NULL\n\t--ev-\u003eblock\n\nThen we unblock events, when they are suppose to be blocked. This can\ntrigger events related block/genhd.c warnings, but also can crash in\nsd_check_events() or other places.\n\nI\u0027m able to reproduce crashes with the following scripts (with\nconnected usb dongle as sdb disk).\n\n\u003csnip\u003e\nDEV\u003d/dev/sdb\nENABLE\u003d/sys/bus/usb/devices/1-2/bConfigurationValue\n\nfunction stop_me()\n{\n\tfor i in `jobs -p` ; do kill $i 2\u003e /dev/null ; done\n\texit\n}\n\ntrap stop_me SIGHUP SIGINT SIGTERM\n\nfor ((i \u003d 0; i \u003c 10; i++)) ; do\n\twhile true; do fdisk -l $DEV  2\u003e\u00261 \u003e /dev/null ; done \u0026\ndone\n\nwhile true ; do\necho 1 \u003e $ENABLE\nsleep 1\necho 0 \u003e $ENABLE\ndone\n\u003c/snip\u003e\n\nI use the script to verify patch fixing oops in sd_revalidate_disk\nhttp://marc.info/?l\u003dlinux-scsi\u0026m\u003d132935572512352\u0026w\u003d2\nWithout Jun\u0027ichi Nomura patch titled \"Fix NULL pointer dereference in\nsd_revalidate_disk\" or this one, script easily crash kernel within\na few seconds. With both patches applied I do not observe crash.\nUnfortunately after some time (dozen of minutes), script will hung in:\n\n[ 1563.906432]  [\u003cc08354f5\u003e] schedule_timeout_uninterruptible+0x15/0x20\n[ 1563.906437]  [\u003cc04532d5\u003e] msleep+0x15/0x20\n[ 1563.906443]  [\u003cc05d60b2\u003e] blk_drain_queue+0x32/0xd0\n[ 1563.906447]  [\u003cc05d6e00\u003e] blk_cleanup_queue+0xd0/0x170\n[ 1563.906454]  [\u003cc06d278f\u003e] scsi_free_queue+0x3f/0x60\n[ 1563.906459]  [\u003cc06d7e6e\u003e] __scsi_remove_device+0x6e/0xb0\n[ 1563.906463]  [\u003cc06d4aff\u003e] scsi_forget_host+0x4f/0x60\n[ 1563.906468]  [\u003cc06cd84a\u003e] scsi_remove_host+0x5a/0xf0\n[ 1563.906482]  [\u003cf7f030fb\u003e] quiesce_and_remove_host+0x5b/0xa0 [usb_storage]\n[ 1563.906490]  [\u003cf7f03203\u003e] usb_stor_disconnect+0x13/0x20 [usb_storage]\n\nAnyway I think this patch is some step forward.\n\nAs drawback, I do not teardown on sysfs file create error, because I do\nnot know how to nullify disk-\u003eev (since it can be used). However add_disk\nerror handling practically does not exist too, and things will work\nwithout this sysfs file, except events will not be exported to user\nspace.\n\nSigned-off-by: Stanislaw Gruszka \u003csgruszka@redhat.com\u003e\nAcked-by: Tejun Heo \u003ctj@kernel.org\u003e\nCc: stable@kernel.org\nSigned-off-by: Jens Axboe \u003caxboe@kernel.dk\u003e\n"
    },
    {
      "commit": "b3c9dd182ed3bdcdaf0e42625a35924b0497afdc",
      "tree": "ad48ad4d923fee147c736318d0fad35b3755f4f5",
      "parents": [
        "83c2f912b43c3a7babbb6cb7ae2a5276c1ed2a3e",
        "5d381efb3d1f1ef10535a31ca0dd9b22fe1e1922"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Jan 15 12:24:45 2012 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Jan 15 12:24:45 2012 -0800"
      },
      "message": "Merge branch \u0027for-3.3/core\u0027 of git://git.kernel.dk/linux-block\n\n* \u0027for-3.3/core\u0027 of git://git.kernel.dk/linux-block: (37 commits)\n  Revert \"block: recursive merge requests\"\n  block: Stop using macro stubs for the bio data integrity calls\n  blockdev: convert some macros to static inlines\n  fs: remove unneeded plug in mpage_readpages()\n  block: Add BLKROTATIONAL ioctl\n  block: Introduce blk_set_stacking_limits function\n  block: remove WARN_ON_ONCE() in exit_io_context()\n  block: an exiting task should be allowed to create io_context\n  block: ioc_cgroup_changed() needs to be exported\n  block: recursive merge requests\n  block, cfq: fix empty queue crash caused by request merge\n  block, cfq: move icq creation and rq-\u003eelv.icq association to block core\n  block, cfq: restructure io_cq creation path for io_context interface cleanup\n  block, cfq: move io_cq exit/release to blk-ioc.c\n  block, cfq: move icq cache management to block core\n  block, cfq: move io_cq lookup to blk-ioc.c\n  block, cfq: move cfqd-\u003eicq_list to request_queue and add request-\u003eelv.icq\n  block, cfq: reorganize cfq_io_context into generic and cfq specific parts\n  block: remove elevator_queue-\u003eops\n  block: reorder elevator switch sequence\n  ...\n\nFix up conflicts in:\n - block/blk-cgroup.c\n\tSwitch from can_attach_task to can_attach\n - block/cfq-iosched.c\n\tconflict with now removed cic index changes (we now use q-\u003eid instead)\n"
    },
    {
      "commit": "ece2ccb668046610189d88d6aaf05aeb09c988a1",
      "tree": "a0349945f7537de2aca420b47ced23b6294f8b65",
      "parents": [
        "d10577a8d86a0c735488d66d32289a6d66bcfa20",
        "a218d0fdc5f9004164ff151d274487f6799907d0",
        "ff01bb4832651c6d25ac509a06a10fcbd75c461c"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Fri Jan 06 23:15:54 2012 -0500"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Fri Jan 06 23:15:54 2012 -0500"
      },
      "message": "Merge branches \u0027vfsmount-guts\u0027, \u0027umode_t\u0027 and \u0027partitions\u0027 into Z\n"
    },
    {
      "commit": "2c9ede55ecec58099b72e4bb8eab719f32f72c31",
      "tree": "8498a8c940fea97931b469fc73eb1a5022a2b28c",
      "parents": [
        "7d54fa6472609f2b0f2ea27e51ec2cf1fb27bd57"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sat Jul 23 20:24:48 2011 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue Jan 03 22:54:55 2012 -0500"
      },
      "message": "switch device_get_devnode() and -\u003edevnode() to umode_t *\n\nboth callers of device_get_devnode() are only interested in lower 16bits\nand nobody tries to return anything wider than 16bit anyway.\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "ff01bb4832651c6d25ac509a06a10fcbd75c461c",
      "tree": "bbfdebd317db97d346df78293566f36e883b1be9",
      "parents": [
        "94ea4158f1733e3b10cef067d535f504866e0c41"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Fri Sep 16 02:31:11 2011 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue Jan 03 22:54:07 2012 -0500"
      },
      "message": "fs: move code out of buffer.c\n\nMove invalidate_bdev, block_sync_page into fs/block_dev.c.  Export\nkill_bdev as well, so brd doesn\u0027t have to open code it.  Reduce\nbuffer_head.h requirement accordingly.\n\nRemoved a rather large comment from invalidate_bdev, as it looked a bit\nobsolete to bother moving.  The small comment replacing it says enough.\n\nSigned-off-by: Nick Piggin \u003cnpiggin@suse.de\u003e\nCc: Al Viro \u003cviro@ZenIV.linux.org.uk\u003e\nCc: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "4752bc309b7604d507c973c7b7678ac2ce10a058",
      "tree": "09e2a259b12ed2f305754af8d766e0f62ecb8947",
      "parents": [
        "dabe0dc194d5d56d379a8994fff47392744b6491"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Fri Sep 16 00:21:54 2011 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue Jan 03 22:54:05 2012 -0500"
      },
      "message": "make register_disk() static\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "09ac46c429464c919d04bb737b27edd84d944f02",
      "tree": "0fb3b7344ead06d08dbd77470445821817c439b7",
      "parents": [
        "6e736be7f282fff705db7c34a15313281b372a76"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Wed Dec 14 00:33:38 2011 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@kernel.dk",
        "time": "Wed Dec 14 00:33:38 2011 +0100"
      },
      "message": "block: misc updates to blk_get_queue()\n\n* blk_get_queue() is peculiar in that it returns 0 on success and 1 on\n  failure instead of 0 / -errno or boolean.  Update it such that it\n  returns %true on success and %false on failure.\n\n* Make sure the caller checks for the return value.\n\n* Separate out __blk_get_queue() which doesn\u0027t check whether @q is\n  dead and put it in blk.h.  This will be used later.\n\nThis patch doesn\u0027t introduce any functional changes.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "75e3f3ee3c64968d42f4843ec49e579f84b5aa0c",
      "tree": "0522cb42944f2da85143f234b0f4b3f5319834eb",
      "parents": [
        "8892cbaf686fb18a5f0558b9fd7773b32c0c7852"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Thu May 26 21:06:50 2011 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Thu May 26 21:06:50 2011 +0200"
      },
      "message": "block: always allocate genhd-\u003eev if check_events is implemented\n\n9fd097b149 (block: unexport DISK_EVENT_MEDIA_CHANGE for legacy/fringe\ndrivers) removed DISK_EVENT_MEDIA_CHANGE from legacy/fringe block\ndrivers which have inadequate -\u003echeck_events().  Combined with earlier\nchange 7c88a168da (block: don\u0027t propagate unlisted DISK_EVENTs to\nuserland), this enables using -\u003echeck_events() for internal processing\nwhile avoiding enabling in-kernel block event polling which can lead\nto infinite event loop.\n\nUnfortunately, this made many drivers including floppy without any bit\nset in disk-\u003eevents and -\u003easync_events in which case disk_add_events()\nsimply skipped allocation of disk-\u003eev, which disables whole event\nhandling.  As -\u003echeck_events() is still used during open processing\nfor revalidation, this can lead to open failure.\n\nThis patch always allocates disk-\u003eev if -\u003echeck_events is implemented.\nIn the long term, it would make sense to simply include the event\nstructure inline into genhd as it\u0027s now used by virtually all block\ndevices.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nReported-by: Ondrej Zary \u003clinux@rainbow-software.org\u003e\nReported-by: Alex Villacis Lasso \u003cavillaci@ceibo.fiec.espol.edu.ec\u003e\nCc: stable@kernel.org\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "7c88a168da8003fd4d8fb6ae103c4ecf29cb1130",
      "tree": "121d1b65615faf98e3c77f066b50527275d4b4c3",
      "parents": [
        "3aa72873ffdcc2f7919743efbbefc351ec73f5cb"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Thu Apr 21 19:43:58 2011 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Thu Apr 21 19:43:58 2011 +0200"
      },
      "message": "block: don\u0027t propagate unlisted DISK_EVENTs to userland\n\nDISK_EVENT_MEDIA_CHANGE is used for both userland visible event and\ninternal event for revalidation of removeable devices.  Some legacy\ndrivers don\u0027t implement proper event detection and continuously\ngenerate events under certain circumstances.  For example, ide-cd\ngenerates media changed continuously if there\u0027s no media in the drive,\nwhich can lead to infinite loop of events jumping back and forth\nbetween the driver and userland event handler.\n\nThis patch updates disk event infrastructure such that it never\npropagates events not listed in disk-\u003eevents to userland.  Those\nevents are processed the same for internal purposes but uevent\ngeneration is suppressed.\n\nThis also ensures that userland only gets events which are advertised\nin the @events sysfs node lowering risk of confusion.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "25985edcedea6396277003854657b5f3cb31a628",
      "tree": "f026e810210a2ee7290caeb737c23cb6472b7c38",
      "parents": [
        "6aba74f2791287ec407e0f92487a725a25908067"
      ],
      "author": {
        "name": "Lucas De Marchi",
        "email": "lucas.demarchi@profusion.mobi",
        "time": "Wed Mar 30 22:57:33 2011 -0300"
      },
      "committer": {
        "name": "Lucas De Marchi",
        "email": "lucas.demarchi@profusion.mobi",
        "time": "Thu Mar 31 11:26:23 2011 -0300"
      },
      "message": "Fix common misspellings\n\nFixes generated by \u0027codespell\u0027 and manually reviewed.\n\nSigned-off-by: Lucas De Marchi \u003clucas.demarchi@profusion.mobi\u003e\n"
    },
    {
      "commit": "facc31ddc3570a3a0d8951c94f16b898e01b464d",
      "tree": "23b8294910c26cabb4335a418b7ca27e52eaaaa8",
      "parents": [
        "df457f845e5449be2e7d96668791f789b3770ac7"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Wed Mar 09 19:54:27 2011 +0100"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Wed Mar 09 19:54:27 2011 +0100"
      },
      "message": "block: Don\u0027t implicitly trigger event check on disk_unblock_events()\n\nCurrently, disk_unblock_events() implicitly kick event check if the\nblock count reaches zero.  This behavior is not described in the\ncomment and hinders with future changes.  Make the unblocker\nexplicitly check events by calling disk_check_events() as necessary.\n\nThis patch doesn\u0027t cause any behavior difference.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nCc: Jens Axboe \u003caxboe@kernel.dk\u003e\nCc: Kay Sievers \u003ckay.sievers@vrfy.org\u003e\n"
    },
    {
      "commit": "e83a46bbb1d4c03defd733a64b727632a40059ad",
      "tree": "c4bc4822b2d3af1bf38095f531adc0a2aac054a5",
      "parents": [
        "da527770007fce8e4541947d47918248286da875",
        "fd51469fb68b987032e46297e0a4fe9020063c20"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Fri Mar 04 19:09:02 2011 +0100"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Fri Mar 04 19:09:02 2011 +0100"
      },
      "message": "Merge branch \u0027for-linus\u0027 of ../linux-2.6-block into block-for-2.6.39/core\n\nThis merge creates two set of conflicts.  One is simple context\nconflicts caused by removal of throtl_scheduled_delayed_work() in\nfor-linus and removal of throtl_shutdown_timer_wq() in\nfor-2.6.39/core.\n\nThe other is caused by commit 255bb490c8 (block: blk-flush shouldn\u0027t\ncall directly into q-\u003erequest_fn() __blk_run_queue()) in for-linus\ncrashing with FLUSH reimplementation in for-2.6.39/core.  The conflict\nisn\u0027t trivial but the resolution is straight-forward.\n\n* __blk_run_queue() calls in flush_end_io() and flush_data_end_io()\n  should be called with @force_kblockd set to %true.\n\n* elv_insert() in blk_kick_flush() should use\n  %ELEVATOR_INSERT_REQUEUE.\n\nBoth changes are to avoid invoking -\u003erequest_fn() directly from\nrequest completion path and closely match the changes in the commit\n255bb490c8.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\n"
    },
    {
      "commit": "53f22956effe1c9e7961b8c6e4362ecca5e460b7",
      "tree": "a2f897a90971f68f0e10d065fe3289a243f2aa19",
      "parents": [
        "0bbfeb8320421989d3e12bd95fae86b9ac0712aa"
      ],
      "author": {
        "name": "Liu Yuan",
        "email": "tailai.ly@taobao.com",
        "time": "Wed Mar 02 11:00:15 2011 -0500"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Wed Mar 02 11:00:15 2011 -0500"
      },
      "message": "block/genhd: Change some numerals into macros\n\nRename the numerals in the diskstats_show() into the macros.\n\nCc: Jens Axboe \u003caxboe@kernel.dk\u003e\nSigned-off-by: Liu Yuan \u003ctailai.ly@taobao.com\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "93b270f76e7ef3b81001576860c2701931cdc78b",
      "tree": "abaca0e4d3e86721815498fafd06295dd9cfd002",
      "parents": [
        "da9cf5050a2e3dbc3cf26a8d908482eb4485ed49"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Feb 24 17:25:47 2011 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Feb 24 17:25:47 2011 +1100"
      },
      "message": "Fix over-zealous flush_disk when changing device size.\n\nThere are two cases when we call flush_disk.\nIn one, the device has disappeared (check_disk_change) so any\ndata will hold becomes irrelevant.\nIn the oter, the device has changed size (check_disk_size_change)\nso data we hold may be irrelevant.\n\nIn both cases it makes sense to discard any \u0027clean\u0027 buffers,\nso they will be read back from the device if needed.\n\nIn the former case it makes sense to discard \u0027dirty\u0027 buffers\nas there will never be anywhere safe to write the data.  In the\nsecond case it *does*not* make sense to discard dirty buffers\nas that will lead to file system corruption when you simply enlarge\nthe containing devices.\n\nflush_disk calls __invalidate_devices.\n__invalidate_device calls both invalidate_inodes and invalidate_bdev.\n\ninvalidate_inodes *does* discard I_DIRTY inodes and this does lead\nto fs corruption.\n\ninvalidate_bev *does*not* discard dirty pages, but I don\u0027t really care\nabout that at present.\n\nSo this patch adds a flag to __invalidate_device (calling it\n__invalidate_device2) to indicate whether dirty buffers should be\nkilled, and this is passed to invalidate_inodes which can choose to\nskip dirty inodes.\n\nflusk_disk then passes true from check_disk_change and false from\ncheck_disk_size_change.\n\ndm avoids tripping over this problem by calling i_size_write directly\nrathher than using check_disk_size_change.\n\nmd does use check_disk_size_change and so is affected.\n\nThis regression was introduced by commit 608aeef17a which causes\ncheck_disk_size_change to call flush_disk, so it is suitable for any\nkernel since 2.6.27.\n\nCc: stable@kernel.org\nAcked-by: Jeff Moyer \u003cjmoyer@redhat.com\u003e\nCc: Andrew Patterson \u003candrew.patterson@hp.com\u003e\nCc: Jens Axboe \u003caxboe@kernel.dk\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "81c5e2ae33c4b19e53966b427e33646bf6811830",
      "tree": "a602a6dd100165c8948bfa713e6f0b422dcba5d8",
      "parents": [
        "797a455d2c682476c3797dbfecf5bf84c1e3b9d3",
        "fcc57045d53edc35bcce456e60ac4aa802712934"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Thu Jan 13 14:47:54 2011 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Thu Jan 13 14:47:54 2011 +0100"
      },
      "message": "Merge branch \u0027for-2.6.38/event-handling\u0027 into for-2.6.38/core\n"
    },
    {
      "commit": "6c23a9681c0fe7fb7dd331b39dda11926f43746e",
      "tree": "bf113a475a17faa866e7e59806378107dcb3aa40",
      "parents": [
        "09e099d4bafea3b15be003d548bdf94b4b6e0e17"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Fri Jan 07 08:43:37 2011 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Fri Jan 07 08:43:37 2011 +0100"
      },
      "message": "block: add internal hd part table references\n\nWe can\u0027t use krefs since it\u0027s apparently restricted to very basic\nreference counting.\n\nThis reverts commit e4a683c8.\n\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "09e099d4bafea3b15be003d548bdf94b4b6e0e17",
      "tree": "a4199338ad73e88c0863bbfc6604c4972055f16d",
      "parents": [
        "e4a683c899cd5a49f8d684a054c95bd115a0c005"
      ],
      "author": {
        "name": "Jerome Marchand",
        "email": "jmarchan@redhat.com",
        "time": "Wed Jan 05 16:57:38 2011 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Wed Jan 05 16:57:38 2011 +0100"
      },
      "message": "block: fix accounting bug on cross partition merges\n\n/proc/diskstats would display a strange output as follows.\n\n$ cat /proc/diskstats |grep sda\n   8       0 sda 90524 7579 102154 20464 0 0 0 0 0 14096 20089\n   8       1 sda1 19085 1352 21841 4209 0 0 0 0 4294967064 15689 4293424691\n                                                ~~~~~~~~~~\n   8       2 sda2 71252 3624 74891 15950 0 0 0 0 232 23995 1562390\n   8       3 sda3 54 487 2188 92 0 0 0 0 0 88 92\n   8       4 sda4 4 0 8 0 0 0 0 0 0 0 0\n   8       5 sda5 81 2027 2130 138 0 0 0 0 0 87 137\n\nIts reason is the wrong way of accounting hd_struct-\u003ein_flight. When a bio is\nmerged into a request belongs to different partition by ELEVATOR_FRONT_MERGE.\n\nThe detailed root cause is as follows.\n\nAssuming that there are two partition, sda1 and sda2.\n\n1. A request for sda2 is in request_queue. Hence sda1\u0027s hd_struct-\u003ein_flight\n   is 0 and sda2\u0027s one is 1.\n\n        | hd_struct-\u003ein_flight\n   ---------------------------\n   sda1 |          0\n   sda2 |          1\n   ---------------------------\n\n2. A bio belongs to sda1 is issued and is merged into the request mentioned on\n   step1 by ELEVATOR_BACK_MERGE. The first sector of the request is changed\n   from sda2 region to sda1 region. However the two partition\u0027s\n   hd_struct-\u003ein_flight are not changed.\n\n        | hd_struct-\u003ein_flight\n   ---------------------------\n   sda1 |          0\n   sda2 |          1\n   ---------------------------\n\n3. The request is finished and blk_account_io_done() is called. In this case,\n   sda2\u0027s hd_struct-\u003ein_flight, not a sda1\u0027s one, is decremented.\n\n        | hd_struct-\u003ein_flight\n   ---------------------------\n   sda1 |         -1\n   sda2 |          1\n   ---------------------------\n\nThe patch fixes the problem by caching the partition lookup\ninside the request structure, hence making sure that the increment\nand decrement will always happen on the same partition struct. This\nalso speeds up IO with accounting enabled, since it cuts down on\nthe number of lookups we have to do.\n\nAlso add a refcount to struct hd_struct to keep the partition in\nmemory as long as users exist. We use kref_test_and_get() to ensure\nwe don\u0027t add a reference to a partition which is going away.\n\nSigned-off-by: Jerome Marchand \u003cjmarchan@redhat.com\u003e\nSigned-off-by: Yasuaki Ishimatsu \u003cisimatu.yasuaki@jp.fujitsu.com\u003e\nCc: stable@kernel.org\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "e61eb2e93fe86931d46831752a82dab25a5335ca",
      "tree": "631aeb9bf8614903972a6a9945040a4d528f1029",
      "parents": [
        "b9f985b6e05ebd7af2aaef0eb3ae369390ef191f"
      ],
      "author": {
        "name": "Yang Zhang",
        "email": "kthreadd@gmail.com",
        "time": "Fri Dec 17 09:00:18 2010 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Fri Dec 17 09:00:18 2010 +0100"
      },
      "message": "fs/block: type signature of major_to_index(int) to major_to_index(unsigned)\n\nThe major/minor device numbers are always defined and used as `unsigned\u0027.\n\nSigned-off-by: Yang Zhang \u003ckthreadd@gmail.com\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "b9f985b6e05ebd7af2aaef0eb3ae369390ef191f",
      "tree": "69aa4bd9501f988302a155ebfdc630bd2a37bfde",
      "parents": [
        "7278c9c19bd85cf33213a2e0b538a18d3ac8ad00"
      ],
      "author": {
        "name": "Yang Zhang",
        "email": "kthreadd@gmail.com",
        "time": "Fri Dec 17 08:58:36 2010 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Fri Dec 17 08:58:36 2010 +0100"
      },
      "message": "block: convert !IS_ERR(p) \u0026\u0026 p to !IS_ERR_NOR_NULL(p)\n\nSigned-off-by: Yang Zhang \u003ckthreadd@gmail.com\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "77ea887e433ad8389d416826936c110fa7910f80",
      "tree": "ac9d32aabcebf5a465acae2066b12c9335b5ca6f",
      "parents": [
        "d2bf1b6723ed0eab378363649d15b7893bf14e91"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Wed Dec 08 20:57:37 2010 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Thu Dec 16 17:53:38 2010 +0100"
      },
      "message": "implement in-kernel gendisk events handling\n\nCurrently, media presence polling for removeable block devices is done\nfrom userland.  There are several issues with this.\n\n* Polling is done by periodically opening the device.  For SCSI\n  devices, the command sequence generated by such action involves a\n  few different commands including TEST_UNIT_READY.  This behavior,\n  while perfectly legal, is different from Windows which only issues\n  single command, GET_EVENT_STATUS_NOTIFICATION.  Unfortunately, some\n  ATAPI devices lock up after being periodically queried such command\n  sequences.\n\n* There is no reliable and unintrusive way for a userland program to\n  tell whether the target device is safe for media presence polling.\n  For example, polling for media presence during an on-going burning\n  session can make it fail.  The polling program can avoid this by\n  opening the device with O_EXCL but then it risks making a valid\n  exclusive user of the device fail w/ -EBUSY.\n\n* Userland polling is unnecessarily heavy and in-kernel implementation\n  is lighter and better coordinated (workqueue, timer slack).\n\nThis patch implements framework for in-kernel disk event handling,\nwhich includes media presence polling.\n\n* bdops-\u003echeck_events() is added, which supercedes -\u003emedia_changed().\n  It should check whether there\u0027s any pending event and return if so.\n  Currently, two events are defined - DISK_EVENT_MEDIA_CHANGE and\n  DISK_EVENT_EJECT_REQUEST.  -\u003echeck_events() is guaranteed not to be\n  called parallelly.\n\n* gendisk-\u003eevents and -\u003easync_events are added.  These should be\n  initialized by block driver before passing the device to add_disk().\n  The former contains the mask of all supported events and the latter\n  the mask of all events which the device can report without polling.\n  /sys/block/*/events[_async] export these to userland.\n\n* Kernel parameter block.events_dfl_poll_msecs controls the system\n  polling interval (default is 0 which means disable) and\n  /sys/block/*/events_poll_msecs control polling intervals for\n  individual devices (default is -1 meaning use system setting).  Note\n  that if a device can report all supported events asynchronously and\n  its polling interval isn\u0027t explicitly set, the device won\u0027t be\n  polled regardless of the system polling interval.\n\n* If a device is opened exclusively with write access, event checking\n  is automatically disabled until all write exclusive accesses are\n  released.\n\n* There are event \u0027clearing\u0027 events.  For example, both of currently\n  defined events are cleared after the device has been successfully\n  opened.  This information is passed to -\u003echeck_events() callback\n  using @clearing argument as a hint.\n\n* Event checking is always performed from system_nrt_wq and timer\n  slack is set to 25% for polling.\n\n* Nothing changes for drivers which implement -\u003emedia_changed() but\n  not -\u003echeck_events().  Going forward, all drivers will be converted\n  to -\u003echeck_events() and -\u003emedia_change() will be dropped.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nCc: Kay Sievers \u003ckay.sievers@vrfy.org\u003e\nCc: Jan Kara \u003cjack@suse.cz\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "d2bf1b6723ed0eab378363649d15b7893bf14e91",
      "tree": "4a4144b09ab747ad661605aa761753d9a805e77f",
      "parents": [
        "dddd9dc340ae1a41d90e084529ca979c77c4ecfe"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Wed Dec 08 20:57:36 2010 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Thu Dec 16 17:53:38 2010 +0100"
      },
      "message": "block: move register_disk() and del_gendisk() to block/genhd.c\n\nThere\u0027s no reason for register_disk() and del_gendisk() to be in\nfs/partitions/check.c.  Move both to genhd.c.  While at it, collapse\nunlink_gendisk(), which was artificially in a separate function due to\ngenhd.c / check.c split, into del_gendisk().\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "dddd9dc340ae1a41d90e084529ca979c77c4ecfe",
      "tree": "7ab2dba891308a0c9209d71ecc8d620260b8674b",
      "parents": [
        "e4ea0c16a85d221ebcc3a21f32e321440459e0fc"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Wed Dec 08 20:57:35 2010 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Thu Dec 16 17:53:38 2010 +0100"
      },
      "message": "block: kill genhd_media_change_notify()\n\nThere\u0027s no user of the facility.  Kill it.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "f253b86b4ad1b3220544e75880510fd455ebd23f",
      "tree": "cc2dd76b8ffc8df4356c1e95bd15276169dd335e",
      "parents": [
        "35da7a307c535f9c2929cae277f3df425c9f9b1e"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Sun Oct 24 22:06:02 2010 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Sun Oct 24 22:06:02 2010 +0200"
      },
      "message": "Revert \"block: fix accounting bug on cross partition merges\"\n\nThis reverts commit 7681bfeeccff5efa9eb29bf09249a3c400b15327.\n\nConflicts:\n\n\tinclude/linux/genhd.h\n\nIt has numerous issues with the cleanup path and non-elevator\ndevices. Revert it for now so we can come up with a clean\nversion without rushing things.\n\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "b9da0571050c09863e59f94d0b8594a290d61b88",
      "tree": "3632c4fee768db9a27a5c872bd42133692e2f3d0",
      "parents": [
        "f8cae0f03f75adb54b1d48ddbc90f84a1f5de186",
        "5abd935661e01289ba143c3b2c1ba300c65bcc5f"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Oct 22 19:36:42 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Oct 22 19:36:42 2010 -0700"
      },
      "message": "Merge git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/driver-core-2.6\n\n* git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/driver-core-2.6: (31 commits)\n  driver core: Display error codes when class suspend fails\n  Driver core: Add section count to memory_block struct\n  Driver core: Add mutex for adding/removing memory blocks\n  Driver core: Move find_memory_block routine\n  hpilo: Despecificate driver from iLO generation\n  driver core: Convert link_mem_sections to use find_memory_block_hinted.\n  driver core: Introduce find_memory_block_hinted which utilizes kset_find_obj_hinted.\n  kobject: Introduce kset_find_obj_hinted.\n  driver core: fix build for CONFIG_BLOCK not enabled\n  driver-core: base: change to new flag variable\n  sysfs: only access bin file vm_ops with the active lock\n  sysfs: Fail bin file mmap if vma close is implemented.\n  FW_LOADER: fix kconfig dependency warning on HOTPLUG\n  uio: Statically allocate uio_class and use class .dev_attrs.\n  uio: Support 2^MINOR_BITS minors\n  uio: Cleanup irq handling.\n  uio: Don\u0027t clear driver data\n  uio: Fix lack of locking in init_uio_class\n  SYSFS: Allow boot time switching between deprecated and modern sysfs layout\n  driver core: remove CONFIG_SYSFS_DEPRECATED_V2 but keep it for block devices\n  ...\n"
    },
    {
      "commit": "e52eec13cd6b7f30ab19081b387813e03e592ae5",
      "tree": "7b327e0b9283c578fb10922edcf6e10b3b8fd943",
      "parents": [
        "39aba963d937edb20db7d9d93e6dda5d2adfdcdd"
      ],
      "author": {
        "name": "Andi Kleen",
        "email": "ak@linux.intel.com",
        "time": "Wed Sep 08 16:54:17 2010 +0200"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@suse.de",
        "time": "Fri Oct 22 10:16:43 2010 -0700"
      },
      "message": "SYSFS: Allow boot time switching between deprecated and modern sysfs layout\n\nI have some systems which need legacy sysfs due to old tools that are\nmaking assumptions that a directory can never be a symlink to another\ndirectory, and it\u0027s a big hazzle to compile separate kernels for them.\n\nThis patch turns CONFIG_SYSFS_DEPRECATED into a run time option\nthat can be switched on/off the kernel command line. This way\nthe same binary can be used in both cases with just a option\non the command line.\n\nThe old CONFIG_SYSFS_DEPRECATED_V2 option is still there to set\nthe default. I kept the weird name to not break existing\nconfig files.\n\nAlso the compat code can be still completely disabled by undefining\nCONFIG_SYSFS_DEPRECATED_SWITCH -- just the optimizer takes\ncare of this now instead of lots of ifdefs. This makes the code\nlook nicer.\n\nv2: This is an updated version on top of Kay\u0027s patch to only\nhandle the block devices. I tested it on my old systems\nand that seems to work.\n\nCc: axboe@kernel.dk\nSigned-off-by: Andi Kleen \u003cak@linux.intel.com\u003e\nCc: Kay Sievers \u003ckay.sievers@vrfy.org\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@suse.de\u003e\n\n"
    },
    {
      "commit": "7681bfeeccff5efa9eb29bf09249a3c400b15327",
      "tree": "8557964a2df96e253dcf1a61734b98dbfbf192d6",
      "parents": [
        "495d2b3883682fcd1c3dee3a45e38fd00154ae25"
      ],
      "author": {
        "name": "Yasuaki Ishimatsu",
        "email": "isimatu.yasuaki@jp.fujitsu.com",
        "time": "Tue Oct 19 09:05:00 2010 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Tue Oct 19 09:07:02 2010 +0200"
      },
      "message": "block: fix accounting bug on cross partition merges\n\n/proc/diskstats would display a strange output as follows.\n\n$ cat /proc/diskstats |grep sda\n   8       0 sda 90524 7579 102154 20464 0 0 0 0 0 14096 20089\n   8       1 sda1 19085 1352 21841 4209 0 0 0 0 4294967064 15689 4293424691\n                                                ~~~~~~~~~~\n   8       2 sda2 71252 3624 74891 15950 0 0 0 0 232 23995 1562390\n   8       3 sda3 54 487 2188 92 0 0 0 0 0 88 92\n   8       4 sda4 4 0 8 0 0 0 0 0 0 0 0\n   8       5 sda5 81 2027 2130 138 0 0 0 0 0 87 137\n\nIts reason is the wrong way of accounting hd_struct-\u003ein_flight. When a bio is\nmerged into a request belongs to different partition by ELEVATOR_FRONT_MERGE.\n\nThe detailed root cause is as follows.\n\nAssuming that there are two partition, sda1 and sda2.\n\n1. A request for sda2 is in request_queue. Hence sda1\u0027s hd_struct-\u003ein_flight\n   is 0 and sda2\u0027s one is 1.\n\n        | hd_struct-\u003ein_flight\n   ---------------------------\n   sda1 |          0\n   sda2 |          1\n   ---------------------------\n\n2. A bio belongs to sda1 is issued and is merged into the request mentioned on\n   step1 by ELEVATOR_BACK_MERGE. The first sector of the request is changed\n   from sda2 region to sda1 region. However the two partition\u0027s\n   hd_struct-\u003ein_flight are not changed.\n\n        | hd_struct-\u003ein_flight\n   ---------------------------\n   sda1 |          0\n   sda2 |          1\n   ---------------------------\n\n3. The request is finished and blk_account_io_done() is called. In this case,\n   sda2\u0027s hd_struct-\u003ein_flight, not a sda1\u0027s one, is decremented.\n\n        | hd_struct-\u003ein_flight\n   ---------------------------\n   sda1 |         -1\n   sda2 |          1\n   ---------------------------\n\nThe patch fixes the problem by caching the partition lookup\ninside the request structure, hence making sure that the increment\nand decrement will always happen on the same partition struct. This\nalso speeds up IO with accounting enabled, since it cuts down on\nthe number of lookups we have to do.\n\nWhen reloading partition tables, quiesce IO to ensure that no\nrequest references to the partition struct exists. When it is safe\nto free the partition table, the IO for that device is restarted\nagain.\n\nSigned-off-by: Yasuaki Ishimatsu \u003cisimatu.yasuaki@jp.fujitsu.com\u003e\nCc: stable@kernel.org\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "01ea50638bc04ca5259f5711fcdedefcdde1cf43",
      "tree": "c525dc13b05feab90d71b78a1d7adb0ddde081ea",
      "parents": [
        "2786c4e5e54802c34297e55050fef3e862a27b3f"
      ],
      "author": {
        "name": "Signed-off-by: Jan Kara",
        "email": "jack@suse.cz",
        "time": "Thu Sep 16 20:36:36 2010 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Thu Sep 16 20:36:36 2010 +0200"
      },
      "message": "block: Fix race during disk initialization\n\nWhen a new disk is being discovered, add_disk() first ties the bdev to gendisk\n(via register_disk()-\u003eblkdev_get()) and only after that calls\nbdi_register_bdev(). Because register_disk() also creates disk\u0027s kobject, it\ncan happen that userspace manages to open and modify the device\u0027s data (or\ninode) before its BDI is properly initialized leading to a warning in\n__mark_inode_dirty().\n\nFix the problem by registering BDI early enough.\n\nThis patch addresses https://bugzilla.kernel.org/show_bug.cgi?id\u003d16312\n\nCc: stable@kernel.org\nReported-by: Larry Finger \u003cLarry.Finger@lwfinger.net\u003e\nSigned-off-by: Jan Kara \u003cjack@suse.cz\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "b5af921ec02333e943efb59aca4f56b78fc0e100",
      "tree": "fcf966ccbee9c5f8b8f652100f033bc781b91b91",
      "parents": [
        "eec7ecfede74bb996060efefd5c157acd5794e8a"
      ],
      "author": {
        "name": "Will Drewry",
        "email": "wad@chromium.org",
        "time": "Tue Aug 31 15:47:07 2010 -0500"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Wed Sep 15 16:14:03 2010 +0200"
      },
      "message": "init: add support for root devices specified by partition UUID\n\nThis is the third patch in a series which adds support for\nstoring partition metadata, optionally, off of the hd_struct.\n\nOne major use for that data is being able to resolve partition\nby other identities than just the index on a block device.  Device\nenumeration varies by platform and there\u0027s a benefit to being able\nto use something like EFI GPT\u0027s GUIDs to determine the correct\nblock device and partition to mount as the root.\n\nThis change adds that support to root\u003d by adding support for\nthe following syntax:\n\n  root\u003dPARTUUID\u003dhex-uuid\n\nSigned-off-by: Will Drewry \u003cwad@chromium.org\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "6d1d8050b4bc89d0165d29b58e894aeba2564a97",
      "tree": "b5c5b730bd7b80fe9041c031a6fcf08f42fff0d5",
      "parents": [
        "144177991ca624841ddbd1e7edff958fc0f6d1fe"
      ],
      "author": {
        "name": "Will Drewry",
        "email": "wad@chromium.org",
        "time": "Tue Aug 31 15:47:05 2010 -0500"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Wed Sep 15 16:13:18 2010 +0200"
      },
      "message": "block, partition: add partition_meta_info to hd_struct\n\nI\u0027m reposting this patch series as v4 since there have been no additional\ncomments, and I cleaned up one extra bit of unneeded code (in 3/3). The patches\nare against Linus\u0027s tree: 2bfc96a127bc1cc94d26bfaa40159966064f9c8c\n(2.6.36-rc3).\n\nWould this patchset be suitable for inclusion in an mm branch?\n\nThis changes adds a partition_meta_info struct which itself contains a\nunion of structures that provide partition table specific metadata.\n\nThis change leaves the union empty. The subsequent patch includes an\nimplementation for CONFIG_EFI_PARTITION-based metadata.\n\nSigned-off-by: Will Drewry \u003cwad@chromium.org\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "f1ac2502e19c59e996242d406fcc60e4c563e8ce",
      "tree": "0db91a25c4b754f8c03960cc308715200a974efc",
      "parents": [
        "6423104b6a1e6f0c18be60e8c33f02d263331d5e"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Wed May 19 08:27:30 2010 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Fri May 21 20:01:02 2010 +0200"
      },
      "message": "block: remove all rcu head initializations\n\nRemove all rcu head inits. We don\u0027t care about the RCU head state before passing\nit to call_rcu() anyway. Only leave the \"on_stack\" variants so debugobjects can\nkeep track of objects on stack.\n\nSigned-off-by: Mathieu Desnoyers \u003cmathieu.desnoyers@efficios.com\u003e\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "b6ac23af2c66e114d3a87ef28d56f1ceec283007",
      "tree": "f514445bea36dbeb2bc37f663a6f94275d484515",
      "parents": [
        "c0d97e9ca2cfa66bdfd1ed8ecb5dcd230924d675"
      ],
      "author": {
        "name": "Divyesh Shah",
        "email": "dpshah@google.com",
        "time": "Thu Apr 15 08:54:59 2010 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Thu Apr 15 08:54:59 2010 +0200"
      },
      "message": "blkio: fix for modular blk-cgroup build\n\nAfter merging the block tree, 20100414\u0027s linux-next build (x86_64\nallmodconfig) failed like this:\n\nERROR: \"get_gendisk\" [block/blk-cgroup.ko] undefined!\nERROR: \"sched_clock\" [block/blk-cgroup.ko] undefined!\n\nThis happens because the two symbols aren\u0027t exported and hence not available\nwhen blk-cgroup code is built as a module. I\u0027ve tried to stay consistent with\nthe use of EXPORT_SYMBOL or EXPORT_SYMBOL_GPL with the other symbols in the\nrespective files.\n\nSigned-off-by: Divyesh Shah \u003cdpshah@google.com\u003e\nAcked-by: Gui Jianfeng \u003cguijianfeng@cn.fujitsu.cn\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "dd3d145d49c5816b79acc6761ebbd842bc50b0ee",
      "tree": "107bdb2f46c6aa6bc482909d7ebdbb1da40b7b4f",
      "parents": [
        "fe0b393f2c0a0d23a9bc9ed7dc51a1ee511098bd"
      ],
      "author": {
        "name": "Martin K. Petersen",
        "email": "martin.petersen@oracle.com",
        "time": "Mon Jan 11 03:21:48 2010 -0500"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Mon Jan 11 14:29:19 2010 +0100"
      },
      "message": "block: Fix discard alignment calculation and printing\n\nDiscard alignment reporting for partitions was incorrect.  Update to\nmatch the algorithm used elsewhere.\n\nThe alignment can be negative (misaligned).  Fix format string\naccordingly.\n\nSigned-off-by: Martin K. Petersen \u003cmartin.petersen@oracle.com\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "86b37281411cf1e9bc0a6b5406c45edb7bd9ea5d",
      "tree": "729db57dd52054af1bc16b4afb131093dfc9d255",
      "parents": [
        "cf7c25cf91f632a3528669fc0876e1fc8355ff9b"
      ],
      "author": {
        "name": "Martin K. Petersen",
        "email": "martin.petersen@oracle.com",
        "time": "Tue Nov 10 11:50:21 2009 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Tue Nov 10 11:50:21 2009 +0100"
      },
      "message": "block: Expose discard granularity\n\nWhile SSDs track block usage on a per-sector basis, RAID arrays often\nhave allocation blocks that are bigger.  Allow the discard granularity\nand alignment to be set and teach the topology stacking logic how to\nhandle them.\n\nSigned-off-by: Martin K. Petersen \u003cmartin.petersen@oracle.com\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "316d315bffa4026f28085f6b24ebcebede370ac7",
      "tree": "10b6b057fec2382536371d2e14f9d4c0d6cf9eea",
      "parents": [
        "23e018a1b083ecb4b8bb2fb43d58e7c19b5d7959"
      ],
      "author": {
        "name": "Nikanth Karthikesan",
        "email": "knikanth@suse.de",
        "time": "Tue Oct 06 20:16:55 2009 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Tue Oct 06 20:16:55 2009 +0200"
      },
      "message": "block: Seperate read and write statistics of in_flight requests v2\n\nCommit a9327cac440be4d8333bba975cbbf76045096275 added seperate read\nand write statistics of in_flight requests. And exported the number\nof read and write requests in progress seperately through sysfs.\n\nBut  Corrado Zoccolo \u003cczoccolo@gmail.com\u003e reported getting strange\noutput from \"iostat -kx 2\". Global values for service time and\nutilization were garbage. For interval values, utilization was always\n100%, and service time is higher than normal.\n\nSo this was reverted by commit 0f78ab9899e9d6acb09d5465def618704255963b\n\nThe problem was in part_round_stats_single(), I missed the following:\n        if (now \u003d\u003d part-\u003estamp)\n                return;\n\n-       if (part-\u003ein_flight) {\n+       if (part_in_flight(part)) {\n                __part_stat_add(cpu, part, time_in_queue,\n                                part_in_flight(part) * (now - part-\u003estamp));\n                __part_stat_add(cpu, part, io_ticks, (now - part-\u003estamp));\n\nWith this chunk included, the reported regression gets fixed.\n\nSigned-off-by: Nikanth Karthikesan \u003cknikanth@suse.de\u003e\n\n--\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "0f78ab9899e9d6acb09d5465def618704255963b",
      "tree": "b92832da61ae4f4d712a33ae524c482e979be5ba",
      "parents": [
        "e00c54c36ac2024c3a8a37432e2e2698ff849594"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Sun Oct 04 21:04:38 2009 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Sun Oct 04 21:04:38 2009 +0200"
      },
      "message": "Revert \"Seperate read and write statistics of in_flight requests\"\n\nThis reverts commit a9327cac440be4d8333bba975cbbf76045096275.\n\nCorrado Zoccolo \u003cczoccolo@gmail.com\u003e reports:\n\n\"with 2.6.32-rc1 I started getting the following strange output from\n\"iostat -kx 2\":\nLinux 2.6.31bisect (et2) \t04/10/2009 \t_i686_\t(2 CPU)\n\navg-cpu:  %user   %nice %system %iowait  %steal   %idle\n          10,70    0,00    3,16   15,75    0,00   70,38\n\nDevice:         rrqm/s   wrqm/s     r/s     w/s    rkB/s    wkB/s\navgrq-sz avgqu-sz   await  svctm  %util\nsda              18,22     0,00    0,67    0,01    14,77     0,02\n43,94     0,01   10,53 39043915,03 2629219,87\nsdb              60,89     9,68   50,79    3,04  1724,43    50,52\n65,95     0,70   13,06 488437,47 2629219,87\n\navg-cpu:  %user   %nice %system %iowait  %steal   %idle\n           2,72    0,00    0,74    0,00    0,00   96,53\n\nDevice:         rrqm/s   wrqm/s     r/s     w/s    rkB/s    wkB/s\navgrq-sz avgqu-sz   await  svctm  %util\nsda               0,00     0,00    0,00    0,00     0,00     0,00\n0,00     0,00    0,00   0,00 100,00\nsdb               0,00     0,00    0,00    0,00     0,00     0,00\n0,00     0,00    0,00   0,00 100,00\n\navg-cpu:  %user   %nice %system %iowait  %steal   %idle\n           6,68    0,00    0,99    0,00    0,00   92,33\n\nDevice:         rrqm/s   wrqm/s     r/s     w/s    rkB/s    wkB/s\navgrq-sz avgqu-sz   await  svctm  %util\nsda               0,00     0,00    0,00    0,00     0,00     0,00\n0,00     0,00    0,00   0,00 100,00\nsdb               0,00     0,00    0,00    0,00     0,00     0,00\n0,00     0,00    0,00   0,00 100,00\n\navg-cpu:  %user   %nice %system %iowait  %steal   %idle\n           4,40    0,00    0,73    1,47    0,00   93,40\n\nDevice:         rrqm/s   wrqm/s     r/s     w/s    rkB/s    wkB/s\navgrq-sz avgqu-sz   await  svctm  %util\nsda               0,00     0,00    0,00    0,00     0,00     0,00\n0,00     0,00    0,00   0,00 100,00\nsdb               0,00     4,00    0,00    3,00     0,00    28,00\n18,67     0,06   19,50 333,33 100,00\n\nGlobal values for service time and utilization are garbage. For\ninterval values, utilization is always 100%, and service time is\nhigher than normal.\n\nI bisected it down to:\n[a9327cac440be4d8333bba975cbbf76045096275] Seperate read and write\nstatistics of in_flight requests\nand verified that reverting just that commit indeed solves the issue\non 2.6.32-rc1.\"\n\nSo until this is debugged, revert the bad commit.\n\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "e454cea20bdcff10ee698d11b8882662a0153a47",
      "tree": "f44581fe57787aef0a4f4dc00993a90ea8e688f6",
      "parents": [
        "78f28b7c555359c67c2a0d23f7436e915329421e"
      ],
      "author": {
        "name": "Kay Sievers",
        "email": "kay.sievers@vrfy.org",
        "time": "Fri Sep 18 23:01:12 2009 +0200"
      },
      "committer": {
        "name": "Live-CD User",
        "email": "linux@linux.site",
        "time": "Sat Sep 19 12:50:38 2009 -0700"
      },
      "message": "Driver-Core: extend devnode callbacks to provide permissions\n\nThis allows subsytems to provide devtmpfs with non-default permissions\nfor the device node. Instead of the default mode of 0600, null, zero,\nrandom, urandom, full, tty, ptmx now have a mode of 0666, which allows\nnon-privileged processes to access standard device nodes in case no\nother userspace process applies the expected permissions.\n\nThis also fixes a wrong assignment in pktcdvd and a checkpatch.pl complain.\n\nSigned-off-by: Kay Sievers \u003ckay.sievers@vrfy.org\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@suse.de\u003e\n"
    },
    {
      "commit": "a4dbd6740df0872cdf0a86841f75beec8381964d",
      "tree": "1093687845d89f8397d61e7df1ad8546a5a25225",
      "parents": [
        "5b2ea2f10dbb2fa91d8033993000f8664309395f"
      ],
      "author": {
        "name": "David Brownell",
        "email": "dbrownell@users.sourceforge.net",
        "time": "Wed Jun 24 10:06:31 2009 -0700"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@suse.de",
        "time": "Tue Sep 15 09:50:47 2009 -0700"
      },
      "message": "driver model: constify attribute groups\n\nLet attribute group vectors be declared \"const\".  We\u0027d\nlike to let most attribute metadata live in read-only\nsections... this is a start.\n\nSigned-off-by: David Brownell \u003cdbrownell@users.sourceforge.net\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@suse.de\u003e\n\n"
    },
    {
      "commit": "a9327cac440be4d8333bba975cbbf76045096275",
      "tree": "83fd5dc45dc925c5b4eb0264c3add96cfaa4cae6",
      "parents": [
        "18d8217bc441630c3c5ec7416c5a65c69e8a0979"
      ],
      "author": {
        "name": "Nikanth Karthikesan",
        "email": "knikanth@suse.de",
        "time": "Fri Sep 11 09:18:54 2009 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Mon Sep 14 08:24:52 2009 +0200"
      },
      "message": "Seperate read and write statistics of in_flight requests\n\nCurrently, there is a single in_flight counter measuring the number of\nrequests in the request_queue. But some monitoring tools would like to\nknow how many read requests and write requests are in progress. Split the\ncurrent in_flight counter into two seperate counters for read and write.\n\nThis information is exported as a sysfs attribute, as changing the\ncurrently available stat files would break the existing tools.\n\nSigned-off-by: Nikanth Karthikesan \u003cknikanth@suse.de\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "e3264a4d7de147677f1995f119eba05c9abe9c1c",
      "tree": "151047f3598583556194262a5b07c75ca3b4781d",
      "parents": [
        "d58b85e1e891cd842d6e183f5d94d06a4fd0122c"
      ],
      "author": {
        "name": "Hannes Reinecke",
        "email": "hare@suse.de",
        "time": "Tue Jul 28 09:13:13 2009 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Fri Sep 11 14:33:31 2009 +0200"
      },
      "message": "Send uevents for write_protect changes\n\nWhenever a block device changes it\u0027s read-only attribute\nnotify the userspace about it.\n\nSigned-off-by: Hannes Reinecke \u003chare@suse.de\u003e\nSigned-off-by: Nikanth Karthikesan \u003cknikanth@suse.de\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "b03f38b685e2e1db174fb8982930e789a516f414",
      "tree": "8ad84738e433409647a1450a991dba1ba90d7921",
      "parents": [
        "f7a386c5b8ff34cd84ae922603d1c6f9d234edee"
      ],
      "author": {
        "name": "Kay Sievers",
        "email": "kay.sievers@vrfy.org",
        "time": "Thu Apr 30 15:23:42 2009 +0200"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@suse.de",
        "time": "Mon Jun 15 21:30:25 2009 -0700"
      },
      "message": "Driver Core: block: add nodename support for block drivers.\n\nThis adds support for block drivers to report their requested nodename\nto userspace.  It also updates a number of block drivers to provide the\nneeded subdirectory and device name to be used for them.\n\nSigned-off-by: Kay Sievers \u003ckay.sievers@vrfy.org\u003e\nSigned-off-by: Jan Blunck \u003cjblunck@suse.de\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@suse.de\u003e\n"
    },
    {
      "commit": "c72758f33784e5e2a1a4bb9421ef3e6de8f9fcf3",
      "tree": "a83f7540cc894caafe74db911cba3998d6a9a164",
      "parents": [
        "cd43e26f071524647e660706b784ebcbefbd2e44"
      ],
      "author": {
        "name": "Martin K. Petersen",
        "email": "martin.petersen@oracle.com",
        "time": "Fri May 22 17:17:53 2009 -0400"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Fri May 22 23:22:55 2009 +0200"
      },
      "message": "block: Export I/O topology for block devices and partitions\n\nTo support devices with physical block sizes bigger than 512 bytes we\nneed to ensure proper alignment.  This patch adds support for exposing\nI/O topology characteristics as devices are stacked.\n\n  logical_block_size is the smallest unit the device can address.\n\n  physical_block_size indicates the smallest I/O the device can write\n  without incurring a read-modify-write penalty.\n\n  The io_min parameter is the smallest preferred I/O size reported by\n  the device.  In many cases this is the same as the physical block\n  size.  However, the io_min parameter can be scaled up when stacking\n  (RAID5 chunk size \u003e physical block size).\n\n  The io_opt characteristic indicates the optimal I/O size reported by\n  the device.  This is usually the stripe width for arrays.\n\n  The alignment_offset parameter indicates the number of bytes the start\n  of the device/partition is offset from the device\u0027s natural alignment.\n  Partition tools and MD/DM utilities can use this to pad their offsets\n  so filesystems start on proper boundaries.\n\nSigned-off-by: Martin K. Petersen \u003cmartin.petersen@oracle.com\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "71982a409f12c50d011325a4471aa20666bb908d",
      "tree": "d457415cc6c50b386a6876acf0abc4472f0e5630",
      "parents": [
        "a9e9dc24bbc3e084450a22cf4fb82f5f5d4cbeea"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Fri Apr 17 08:34:48 2009 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Wed Apr 22 08:35:10 2009 +0200"
      },
      "message": "block: include empty disks in /proc/diskstats\n\n/proc/diskstats used to show stats for all disks whether they\u0027re\nzero-sized or not and their non-zero partitions.  Commit\n074a7aca7afa6f230104e8e65eba3420263714a5 accidentally changed the\nbehavior such that it doesn\u0027t print out zero sized disks.  This patch\nimplements DISK_PITER_INCL_EMPTY_PART0 flag to partition iterator and\nuses it in diskstats_show() such that empty part0 is shown in\n/proc/diskstats.\n\nReported and bisectd by Dianel Collins.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nReported-by: Daniel Collins \u003csolemnwarning@solemnwarning.no-ip.org\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "9e8c0bccdc944bd09361672d47660810c027bcaa",
      "tree": "2974fec8cbfdddc52d0a051b26dadc7898079d14",
      "parents": [
        "b2bf96833c5782befc3e7700f791fde754a47b01"
      ],
      "author": {
        "name": "Márton Németh",
        "email": "nm127@freemail.hu",
        "time": "Fri Feb 20 08:12:51 2009 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Thu Feb 26 10:45:48 2009 +0100"
      },
      "message": "block: add documentation for register_blkdev()\n\nAdd documentation for register_blkdev() function and for the parameters.\n\nSigned-off-by: Márton Németh \u003cnm127@freemail.hu\u003e\nCc: Greg Kroah-Hartman \u003cgregkh@suse.de\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "41b8c853a495438208faa5be03bbb0050859163b",
      "tree": "912541723b38a52c68c46bdb1de567972e239594",
      "parents": [
        "78f707bfc723552e8309b7c38a8d0cc51012e813"
      ],
      "author": {
        "name": "Neil Brown",
        "email": "neilb@suse.de",
        "time": "Wed Feb 18 10:33:59 2009 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Wed Feb 18 10:33:59 2009 +0100"
      },
      "message": "block: fix booting from partitioned md array\n\nHi Tejun,\n\n it looks like your commit:\n\n   block: don\u0027t depend on consecutive minor space\n   f331c0296f2a9fee0d396a70598b954062603015\n\n broke a particular case for booting from partitioned md/raid devices.\n That is the second time this has been broken recently.  The previous\n time was fixed by\n\n   block: do_mounts - accept root\u003d\u003cnon-existant partition\u003e\n   30f2f0eb4bd2c43d10a8b0d872c6e5ad8f31c9a0\n\n Because the data isn\u0027t available when an md device is first created\n (we add disks and set it up after creation), the initial partition\n scan finds nothing.  It is not until the device is opened that\n another partition scan happens and finds something.\n\n So at the point where the kernel parameter \"root\u003d/dev/md_d0p1\" is\n being parsed, md_d0 exists, but md_d0p1 does not.\n However if we let blk_lookup_devt return the correct device number\n even though the device doesn\u0027t exist, then the attempt to mount it\n will successfully find the partition.\n\n I have tried in the past to find a way to get the partition table to\n be read as soon as the array is assembled but that proved impossible\n (at the time).  I don\u0027t remember the details, and could possibly\n revisit it.  However it would be really nice if blk_lookup_devt\n could be adjusted to again accept non existant partitions.\n\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "3ada8b7e980dac7cc42937d42d90ee51b19204fe",
      "tree": "6c23e272997cd5b68459c5a92a4490504f1c4be7",
      "parents": [
        "4383fc3d9a98759a1ec3c57a30781e95a4cfcfa9"
      ],
      "author": {
        "name": "Kay Sievers",
        "email": "kay.sievers@vrfy.org",
        "time": "Tue Jan 06 10:44:43 2009 -0800"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@suse.de",
        "time": "Tue Jan 06 10:44:43 2009 -0800"
      },
      "message": "block: struct device - replace bus_id with dev_name(), dev_set_name()\n\nCc: Jens Axboe \u003cjens.axboe@oracle.com\u003e\nSigned-off-by: Kay Sievers \u003ckay.sievers@vrfy.org\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@suse.de\u003e\n"
    },
    {
      "commit": "a6f23657d3072bde6844055bbc2290e497f33fbc",
      "tree": "bd96916615d04228cc9492ae198ed5012d5ee86a",
      "parents": [
        "30e0dc28bff9dc456cdfc2aae4aca78b8b1a1cec"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Fri Oct 24 12:52:42 2008 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Mon Dec 29 08:29:51 2008 +0100"
      },
      "message": "block: add one-hit cache for disk partition lookup\n\ndisk_map_sector_rcu() returns a partition from a sector offset,\nwhich we use for IO statistics on a per-partition basis. The\nlookup itself is an O(N) list lookup, where N is the number of\npartitions. This actually hurts performance quite a bit, even\non the lower end partitions. On higher numbered partitions,\nit can get pretty bad.\n\nSolve this by adding a one-hit cache for partition lookup.\nThis makes the lookup O(1) for the case where we do most IO to\none partition. Even for mixed partition workloads, amortized cost\nis pretty close to O(1) since the natural IO batching makes the\none-hit cache last for lots of IOs.\n\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "bf91db18ac2852a3ff39fe25ff56c5557c0fff78",
      "tree": "42ce67fceb2b3072717cde31c8b4474f4c4a050d",
      "parents": [
        "53cc0b2948bcb8a084982e6c1f9bd7b337e0df38"
      ],
      "author": {
        "name": "Cheng Renquan",
        "email": "crquan@gmail.com",
        "time": "Thu Nov 20 08:37:37 2008 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Wed Dec 03 12:41:20 2008 +0100"
      },
      "message": "block: set disk-\u003enode_id before it\u0027s being used\n\ndisk-\u003enode_id will be refered in allocating in disk_expand_part_tbl, so we\nshould set it before disk-\u003enode_id is refered.\n\nSigned-off-by: Cheng Renquan \u003ccrquan@gmail.com\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "561ec68e4de7947167937c49c451728e6b19e63b",
      "tree": "4391af5bc00e5a2039e703df43ec3e84a21b63d5",
      "parents": [
        "55e8e30c382d25c34f8aafcc78efec948571a941"
      ],
      "author": {
        "name": "Zhang, Yanmin",
        "email": "yanmin_zhang@linux.intel.com",
        "time": "Fri Nov 14 08:26:30 2008 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Tue Nov 18 15:08:56 2008 +0100"
      },
      "message": "block: fix boot failure with CONFIG_DEBUG_BLOCK_EXT_DEVT\u003dy and nash\n\nWe run into system boot failure with kernel 2.6.28-rc. We found it on a\ncouple of machines, including T61 notebook, nehalem machine, and another\nHPC NX6325 notebook.  All the machines use FedoraCore 8 or FedoraCore 9.\nWith kernel prior to 2.6.28-rc, system boot doesn\u0027t fail.\n\nI debug it and locate the root cause. Pls. see\nhttp://bugzilla.kernel.org/show_bug.cgi?id\u003d11899\nhttps://bugzilla.redhat.com/show_bug.cgi?id\u003d471517\n\nAs a matter of fact, there are 2 bugs.\n\n1)root\u003d/dev/sda1, system boot randomly fails. Mostly, boot for 5 times\nand fails once. nash has a bug. Some of its functions misuse return\nvalue 0.  Sometimes, 0 means timeout and no uevent available. Sometimes,\n0 means nash gets an uevent, but the uevent isn\u0027t block-related (for\nexmaple, usb). If by coincidence, kernel tells nash that uevents are\navailable, but kernel also set timeout, nash might stops collecting\nother uevents in queue if current uevent isn\u0027t block-related.  I work\nout a patch for nash to fix it.\nhttp://bugzilla.kernel.org/attachment.cgi?id\u003d18858\n\n2) root\u003dLABEL\u003d/, system always can\u0027t boot. initrd init reports\nswitchroot fails. Here is an executation branch of nash when booting:\n    (1) nash read /sys/block/sda/dev; Assume major is 8 (on my desktop)\n    (2) nash query /proc/devices with the major number; It found line\n\t\"8 sd\";\n    (3) nash use \u0027sd\u0027 to search its own probe table to find device (DISK)\n\ttype for the device and add it to its own list;\n    (4) Later on, it probes all devices in its list to get filesystem\n\tlabels; scsi register \"8 sd\" always.\n\nWhen major is 259, nash fails to find the device(DISK) type. I enables\nCONFIG_DEBUG_BLOCK_EXT_DEVT\u003dy when compiling kernel, so 259 is picked up\nfor device /dev/sda1, which causes nash to fail to find device (DISK)\ntype.\n\nTo fixing issue 2), I create a patch for nash and another patch for\nkernel.\n\nhttp://bugzilla.kernel.org/attachment.cgi?id\u003d18859\nhttp://bugzilla.kernel.org/attachment.cgi?id\u003d18837\n\nBelow is the patch for kernel 2.6.28-rc4. It registers blkext, a new\nblock device in proc/devices.\n\nWith 2 patches on nash and 1 patch on kernel, I boot my machines for\ndozens of times without failure.\n\nSigned-off-by Zhang Yanmin \u003cyanmin.zhang@linux.intel.com\u003e\nAcked-by: Tejun Heo \u003ctj@kernel.org\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "31d85ab28e71b0c938e0ef48af45747e80d99b53",
      "tree": "1cd97bee97abb008dd3591da2a001e3e85356fb6",
      "parents": [
        "5c9fe6281b75832e8d2555ec8700ea763d9a865e"
      ],
      "author": {
        "name": "Alexey Dobriyan",
        "email": "adobriyan@gmail.com",
        "time": "Mon Oct 06 12:55:38 2008 +0400"
      },
      "committer": {
        "name": "Alexey Dobriyan",
        "email": "adobriyan@gmail.com",
        "time": "Thu Oct 23 17:57:37 2008 +0400"
      },
      "message": "proc: move /proc/diskstats boilerplate to block/genhd.c\n\nSigned-off-by: Alexey Dobriyan \u003cadobriyan@gmail.com\u003e\nAcked-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "f500975a3f3ecf3611d79f1d933906753460b9f2",
      "tree": "df3728998ca1638ecbccf4ab6f401f9a2cbdba88",
      "parents": [
        "8591cf43224980a0bc9216a4e50b0a740f8cba35"
      ],
      "author": {
        "name": "Alexey Dobriyan",
        "email": "adobriyan@gmail.com",
        "time": "Sat Oct 04 23:53:21 2008 +0400"
      },
      "committer": {
        "name": "Alexey Dobriyan",
        "email": "adobriyan@gmail.com",
        "time": "Thu Oct 23 15:07:31 2008 +0400"
      },
      "message": "proc: move rest of /proc/partitions code to block/genhd.c\n\nSigned-off-by: Alexey Dobriyan \u003cadobriyan@gmail.com\u003e\nAcked-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "496aa8a98f5ab22ced46be5dc2087cdf3d029bd7",
      "tree": "5c4335ca12bbc8f93f7630c2ef0733973099cd17",
      "parents": [
        "80a4b58e36b63d7b0b592beb1bd6410aadeeb63c"
      ],
      "author": {
        "name": "Randy Dunlap",
        "email": "randy.dunlap@oracle.com",
        "time": "Thu Oct 16 07:46:23 2008 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Fri Oct 17 08:46:57 2008 +0200"
      },
      "message": "block: fix current kernel-doc warnings\n\nFix block kernel-doc warnings:\n\nWarning(linux-2.6.27-git4//fs/block_dev.c:1272): No description found for parameter \u0027path\u0027\nWarning(linux-2.6.27-git4//block/blk-core.c:1021): No description found for parameter \u0027cpu\u0027\nWarning(linux-2.6.27-git4//block/blk-core.c:1021): No description found for parameter \u0027part\u0027\nWarning(/var/linsrc/linux-2.6.27-git4//block/genhd.c:544): No description found for parameter \u0027partno\u0027\n\nSigned-off-by: Randy Dunlap \u003crandy.dunlap@oracle.com\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "e6d63840ba55ffd3a79aea6792aac6f29f338083",
      "tree": "6fa14f4a89167e142385369a51e4d09f5c5233f8",
      "parents": [
        "8677142710516d986d932d6f1fba7be8382c1fec"
      ],
      "author": {
        "name": "Li Zefan",
        "email": "lizf@cn.fujitsu.com",
        "time": "Tue Oct 14 08:49:34 2008 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Fri Oct 17 08:46:56 2008 +0200"
      },
      "message": "block: fix kernel-doc for blk_alloc_devt()\n\nNo argument \u0027gfp_mask\u0027 for blk_alloc_devt().\n\nSigned-off-by: Li Zefan \u003clizf@cn.fujitsu.com\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "581d4e28d9195aa8b2231383dbabc288988d615e",
      "tree": "093bcac9a538ef67edcf91826f7532bdb88e6248",
      "parents": [
        "0a0d96b03a1f3bfd6bc3ea08008699e8e59fccd9"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Sun Sep 14 05:56:33 2008 -0700"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Thu Oct 09 08:56:17 2008 +0200"
      },
      "message": "block: add fault injection mechanism for faking request timeouts\n\nOnly works for the generic request timer handling. Allows one to\nsporadically ignore request completions, thus exercising the timeout\nhandling.\n\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "243294dae09c909c0442c8f04d470b69c3c19d6e",
      "tree": "b6178beadd19247b81d2b09e063e856943c83177",
      "parents": [
        "fad7f01e61bf737fe8a3740d803f000db57ecac6"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Thu Sep 04 09:17:31 2008 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Thu Oct 09 08:56:12 2008 +0200"
      },
      "message": "block: fix duplicate headers for /proc/partitions\n\nseqf can be started multiple times for a read and the header should be\nprinted only for the initial one.  Fix it.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "2bbedcb4c1abac498f18e5770d62ae66ff235ada",
      "tree": "2609360651b9a0d137c5c564a971152c90d52001",
      "parents": [
        "759f8ca3048f7438aa3129268d7252552505d662"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Fri Aug 29 11:41:51 2008 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Thu Oct 09 08:56:11 2008 +0200"
      },
      "message": "block: don\u0027t test for partition size in bdget_disk() and blk_lookup_devt()\n\nbdget_disk() and blk_lookup_devt() never cared whether the specified\npartition (or disk) is zero sized or not.  I got confused while\nconverting those not to depend on consecutive minor numbers in commit\n5a6411b1178baf534aa9138052864dfa89d3eada and later when dev0 was added\nit broke callers which expected to get valid return for zero sized\ndisk devices.\n\nSo, they never needed nr_sects checks in the first place.  Kill them.\n\nThis problem was spotted and debugged by Bartlmoiej Zolnierkiewicz.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nCc: Bartlomiej Zolnierkiewicz \u003cbzolnier@gmail.com\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "aeb3d3a81e81c6323a17fe914e91eb228b3f1aa1",
      "tree": "9cacfa989eaad1611f61e5707fd432e7f1fde685",
      "parents": [
        "01cfcddd98f09e05a2e36031654ed46643b76f23"
      ],
      "author": {
        "name": "Harvey Harrison",
        "email": "harvey.harrison@gmail.com",
        "time": "Thu Aug 28 09:27:42 2008 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Thu Oct 09 08:56:11 2008 +0200"
      },
      "message": "block: kmalloc args reversed, small function definition fixes\n\nNoticed by sparse:\nblock/blk-softirq.c:156:12: warning: symbol \u0027blk_softirq_init\u0027 was not declared. Should it be static?\nblock/genhd.c:583:28: warning: function \u0027bdget_disk\u0027 with external linkage has definition\nblock/genhd.c:659:17: warning: incorrect type in argument 1 (different base types)\nblock/genhd.c:659:17:    expected unsigned int [unsigned] [usertype] size\nblock/genhd.c:659:17:    got restricted gfp_t\nblock/genhd.c:659:29: warning: incorrect type in argument 2 (different base types)\nblock/genhd.c:659:29:    expected restricted gfp_t [usertype] flags\nblock/genhd.c:659:29:    got unsigned int\nblock: kmalloc args reversed\n\nSigned-off-by: Harvey Harrison \u003charvey.harrison@gmail.com\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "3e1a7ff8a0a7b948f2684930166954f9e8e776fe",
      "tree": "0a8642f5cdbc6ddfdd66dc7241c915e57b3cb7ff",
      "parents": [
        "689d6fac40b41c7bf154f362deaf442548e4dc81"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Mon Aug 25 19:56:17 2008 +0900"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Thu Oct 09 08:56:08 2008 +0200"
      },
      "message": "block: allow disk to have extended device number\n\nNow that disk and partition handlings are mostly unified, it\u0027s easy to\nallow disk to have extended device number.  This patch makes\nadd_disk() use extended device number if disk-\u003eminors is zero.  Both\nsd and ide-disk are updated to use this.\n\n* sd_format_disk_name() is implemented which can generically determine\n  the drive name.  This removes disk number restriction stemming from\n  limited device names.\n\n* If sd index goes over SD_MAX_DISKS (which can be increased now BTW),\n  sd simply doesn\u0027t initialize minors letting block layer choose\n  extended device number.\n\n* If CONFIG_DEBUG_EXT_DEVT is set, both sd and ide-disk always set\n  minors to 0 and use extended device numbers.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "689d6fac40b41c7bf154f362deaf442548e4dc81",
      "tree": "5989dc5767f657272194ee8c7d69c6db1e62dab7",
      "parents": [
        "540eed5637b766bb1e881ef744c42617760b4815"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Mon Aug 25 19:56:16 2008 +0900"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Thu Oct 09 08:56:08 2008 +0200"
      },
      "message": "block: replace @ext_minors with GENHD_FL_EXT_DEVT\n\nWith previous changes, it\u0027s meaningless to limit the number of\npartitions.  Replace @ext_minors with GENHD_FL_EXT_DEVT such that\nsetting the flag allows the disk to have maximum number of allowed\npartitions (only limited by the number of entries in parsed_partitions\nas determined by MAX_PART constant).\n\nThis kills not-too-pretty alloc_disk_ext[_node]() functions and makes\n@minors parameter to alloc_disk[_node]() unnecessary.  The parameter\nis left alone to avoid disturbing the users.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "540eed5637b766bb1e881ef744c42617760b4815",
      "tree": "8bdf54967a8290f780216f767291623e67ee7e9b",
      "parents": [
        "074a7aca7afa6f230104e8e65eba3420263714a5"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Mon Aug 25 19:56:15 2008 +0900"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Thu Oct 09 08:56:08 2008 +0200"
      },
      "message": "block: make partition array dynamic\n\ndisk-\u003e__part used to be statically allocated to the maximum possible\nnumber of partitions.  This patch makes partition array allocation\ndynamic.  The added overhead is minimal as only real change is one\nmemory dereference changed to RCU one.  This saves both a bit of\nmemory and cpu cycles iterating through unoccupied slots and makes\nincreasing partition limit easier.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "074a7aca7afa6f230104e8e65eba3420263714a5",
      "tree": "f418313e45bd55be8156c8a3e8f9a216cf63058d",
      "parents": [
        "eddb2e26b5ee3c5da68ba4bf1921ba20e2097bff"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Mon Aug 25 19:56:14 2008 +0900"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Thu Oct 09 08:56:08 2008 +0200"
      },
      "message": "block: move stats from disk to part0\n\nMove stats related fields - stamp, in_flight, dkstats - from disk to\npart0 and unify stat handling such that...\n\n* part_stat_*() now updates part0 together if the specified partition\n  is not part0.  ie. part_stat_*() are now essentially all_stat_*().\n\n* {disk|all}_stat_*() are gone.\n\n* part_round_stats() is updated similary.  It handles part0 stats\n  automatically and disk_round_stats() is killed.\n\n* part_{inc|dec}_in_fligh() is implemented which automatically updates\n  part0 stats for parts other than part0.\n\n* disk_map_sector_rcu() is updated to return part0 if no part matches.\n  Combined with the above changes, this makes NULL special case\n  handling in callers unnecessary.\n\n* Separate stats show code paths for disk are collapsed into part\n  stats show code paths.\n\n* Rename disk_stat_lock/unlock() to part_stat_lock/unlock()\n\nWhile at it, reposition stat handling macros a bit and add missing\nparentheses around macro parameters.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "eddb2e26b5ee3c5da68ba4bf1921ba20e2097bff",
      "tree": "7a24f3f3cb577f344491dc57ea441060fac9d9a9",
      "parents": [
        "0762b8bde9729f10f8e6249809660ff2ec3ad735"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Mon Aug 25 19:56:13 2008 +0900"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Thu Oct 09 08:56:08 2008 +0200"
      },
      "message": "block: kill GENHD_FL_FAIL and use part0-\u003emake_it_fail\n\nGENHD_FL_FAIL for disk is what make_it_fail is for parts.  Kill it and\nuse part0-\u003emake_it_fail.  Sysfs node handling is unified too.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "b7db9956e57c8151b930d5e5fe5c766e6aad3ff7",
      "tree": "d663a8687fff481abb1498c2ea0eac01ef81cb26",
      "parents": [
        "e56105214943ce5f0901d20e972a7cfd0d1d0656"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Mon Aug 25 19:56:10 2008 +0900"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Thu Oct 09 08:56:07 2008 +0200"
      },
      "message": "block: move policy from disk to part0\n\nMove disk-\u003epolicy to part0-\u003epolicy.  Implement and use get_disk_ro().\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "e56105214943ce5f0901d20e972a7cfd0d1d0656",
      "tree": "e7b5abffa47f5bfc664fdbb27025872827514089",
      "parents": [
        "548b10eb2959c96cef6fc29fc96e0931eeb53bc5"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Mon Aug 25 19:56:09 2008 +0900"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Thu Oct 09 08:56:07 2008 +0200"
      },
      "message": "block: unify sysfs size node handling\n\nNow that capacity and __dev are moved to part0, part0 and others can\nshare the same method.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "548b10eb2959c96cef6fc29fc96e0931eeb53bc5",
      "tree": "7166bc04336b80a69f87a9add097919b418f4f43",
      "parents": [
        "80795aefb76d10c5d698e60c7e7750b5330787da"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Fri Aug 29 09:01:47 2008 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Thu Oct 09 08:56:07 2008 +0200"
      },
      "message": "block: move __dev from disk to part0\n\nMove disk-\u003e__dev to part0-\u003e__dev.  This simplifies bdget_disk() and\nlookup_devt() and allows common sysfs attributes to be unified.\npart_to_disk() is updated to handle part0 -\u003e disk.\n\nUpdated to include a fix from Bartlomiej Zolnierkiewicz \u003cbzolnier@gmail.com\u003e,\nhe writes:\n\n\"part0 is a \"special\" partition and doesn\u0027t need to have capacity set - this\nfixes regression caused by \"block: move __dev from disk to part0\" commit.\"\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "b5d0b9df0ba5d9a044f3a21e7544f53d90bd1465",
      "tree": "d3347c1cfc59cf5d38c2c9adc2423f9d9b4cf818",
      "parents": [
        "ed9e1982347b36573cd622ee5f4e2a7ccd79b3fd"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Wed Sep 03 09:06:42 2008 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Thu Oct 09 08:56:07 2008 +0200"
      },
      "message": "block: introduce partition 0\n\ngenhd and partition code handled disk and partitions separately.  All\ninformation about the whole disk was in struct genhd and partitions in\nstruct hd_struct.  However, the whole disk (part0) and other\npartitions have a lot in common and the data structures end up having\ngood number of common fields and thus separate code paths doing the\nsame thing.  Also, the partition array was indexed by partno - 1 which\ngets pretty confusing at times.\n\nThis patch introduces partition 0 and makes the partition array\nindexed by partno.  Following patches will unify the handling of disk\nand parts piece-by-piece.\n\nThis patch also implements disk_partitionable() which tests whether a\ndisk is partitionable.  With coming dynamic partition array change,\nthe most common usage of disk_max_parts() will be testing whether a\ndisk is partitionable and the number of max partitions will become\nmuch less important.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "ed9e1982347b36573cd622ee5f4e2a7ccd79b3fd",
      "tree": "79d834094d655ec97cfc0a382a9207ebc8e711a5",
      "parents": [
        "870d6656126add8e383645732b03df2b7ccd4f94"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Mon Aug 25 19:56:05 2008 +0900"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Thu Oct 09 08:56:07 2008 +0200"
      },
      "message": "block: implement and use {disk|part}_to_dev()\n\nImplement {disk|part}_to_dev() and use them to access generic device\ninstead of directly dereferencing {disk|part}-\u003edev.  To make sure no\nuser is left behind, rename generic devices fields to __dev.\n\nThis is in preparation of unifying partition 0 handling with other\npartitions.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "870d6656126add8e383645732b03df2b7ccd4f94",
      "tree": "9c33dd91350ea163b160d9f5cb40d913c5caf268",
      "parents": [
        "f615b48cc7df7cac3865ec76ac1a5bb04d3e07f4"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Mon Aug 25 19:47:25 2008 +0900"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Thu Oct 09 08:56:06 2008 +0200"
      },
      "message": "block: implement CONFIG_DEBUG_BLOCK_EXT_DEVT\n\nExtended devt introduces non-contiguos device numbers.  This patch\nimplements a debug option which forces most devt allocations to be\nfrom the extended area and spreads them out.  This is enabled by\ndefault if DEBUG_KERNEL is set and achieves...\n\n1. Detects code paths in kernel or userland which expect predetermined\n   consecutive device numbers.\n\n2. When something goes wrong, avoid corruption as adding to the minor\n   of earlier partition won\u0027t lead to the wrong but valid device.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "1f0142905d4812966831613847db38a66da29eb8",
      "tree": "0db3c802fccfa7b2b8b74bfd0078258e8fb8e22d",
      "parents": [
        "bcce3de1be61e424deef35d1e86e86a35c4b6e65"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Mon Aug 25 19:47:23 2008 +0900"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Thu Oct 09 08:56:06 2008 +0200"
      },
      "message": "block: adjust formatting for large minors and add ext_range sysfs attr\n\nWith extended minors and the soon-to-follow debug feature, large minor\nnumbers for block devices will be common.  This patch does the\nfollowings to make printouts pretty.\n\n* Adapt print formats such that large minors don\u0027t break the\n  formatting.\n\n* For extended MAJ:MIN, %02x%02x for MAJ:MIN used in\n  printk_all_partitions() doesn\u0027t cut it anymore.  Update it such that\n  %03x:%05x is used if either MAJ or MIN doesn\u0027t fit in %02x.\n\n* Implement ext_range sysfs attribute which shows total minors the\n  device can use including both conventional minor space and the\n  extended one.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "bcce3de1be61e424deef35d1e86e86a35c4b6e65",
      "tree": "cfdefb52bc37c61dfac160951a9beb86d5cd9ba0",
      "parents": [
        "c9959059161ddd7bf4670cf47367033d6b2f79c4"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Mon Aug 25 19:47:22 2008 +0900"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Thu Oct 09 08:56:06 2008 +0200"
      },
      "message": "block: implement extended dev numbers\n\nImplement extended device numbers.  A block driver can tell block\nlayer that it wants to use extended device numbers.  After the usual\nminor space is used up, block layer automatically allocates devt\u0027s\nfrom EXT_BLOCK_MAJOR.\n\nCurrently only one major number is allocated for this but as the\nallocation is strictly on-demand, ~1mil minor space under it should\nsuffice unless the system actually has more than ~1mil partitions and\nif that ever happens adding more majors to the extended devt area is\neasy.\n\nDue to internal implementation issues, the first partition can\u0027t be\nallocated on the extended area.  In other words, genhd-\u003eminors should\nat least be 1.  This limitation will be lifted by later changes.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "c9959059161ddd7bf4670cf47367033d6b2f79c4",
      "tree": "6454db55f8e34361fe472358e10e0c5cfac1e366",
      "parents": [
        "e71bf0d0ee89e51b92776391c5634938236977d5"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Mon Aug 25 19:47:21 2008 +0900"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Thu Oct 09 08:56:06 2008 +0200"
      },
      "message": "block: fix diskstats access\n\nThere are two variants of stat functions - ones prefixed with double\nunderbars which don\u0027t care about preemption and ones without which\ndisable preemption before manipulating per-cpu counters.  It\u0027s unclear\nwhether the underbarred ones assume that preemtion is disabled on\nentry as some callers don\u0027t do that.\n\nThis patch unifies diskstats access by implementing disk_stat_lock()\nand disk_stat_unlock() which take care of both RCU (for partition\naccess) and preemption (for per-cpu counter access).  diskstats access\nshould always be enclosed between the two functions.  As such, there\u0027s\nno need for the versions which disables preemption.  They\u0027re removed\nand double underbars ones are renamed to drop the underbars.  As an\nextra argument is added, there\u0027s no danger of using the old version\nunconverted.\n\ndisk_stat_lock() uses get_cpu() and returns the cpu index and all\ndiskstat functions which access per-cpu counters now has @cpu\nargument to help RT.\n\nThis change adds RCU or preemption operations at some places but also\ncollapses several preemption ops into one at others.  Overall, the\nperformance difference should be negligible as all involved ops are\nvery lightweight per-cpu ones.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nCc: Peter Zijlstra \u003cpeterz@infradead.org\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "e71bf0d0ee89e51b92776391c5634938236977d5",
      "tree": "9fc62352a40ad388deebdd8ed497cab926cf0470",
      "parents": [
        "f331c0296f2a9fee0d396a70598b954062603015"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Wed Sep 03 09:03:02 2008 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Thu Oct 09 08:56:06 2008 +0200"
      },
      "message": "block: fix disk-\u003epart[] dereferencing race\n\ndisk-\u003epart[] is protected by its matching bdev\u0027s lock.  However,\nnon-critical accesses like collecting stats and printing out sysfs and\nproc information used to be performed without any locking.  As\npartitions can come and go dynamically, partitions can go away\nunderneath those non-critical accesses.  As some of those accesses are\nwrites, this theoretically can lead to silent corruption.\n\nThis patch fixes the race by using RCU for the partition array and dev\nreference counter to hold partitions.\n\n* Rename disk-\u003epart[] to disk-\u003e__part[] to make sure no one outside\n  genhd layer proper accesses it directly.\n\n* Use RCU for disk-\u003e__part[] dereferencing.\n\n* Implement disk_{get|put}_part() which can be used to get and put\n  partitions from gendisk respectively.\n\n* Iterators are implemented to help iterate through all partitions\n  safely.\n\n* Functions which require RCU readlock are marked with _rcu suffix.\n\n* Use disk_put_part() in __blkdev_put() instead of directly putting\n  the contained kobject.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "f331c0296f2a9fee0d396a70598b954062603015",
      "tree": "f74c467d58940131d97d90c4ea549843185e6ef0",
      "parents": [
        "cf771cb5a7b716f3f9e532fd42a1e3a0a75adec5"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Wed Sep 03 09:01:48 2008 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Thu Oct 09 08:56:05 2008 +0200"
      },
      "message": "block: don\u0027t depend on consecutive minor space\n\n* Implement disk_devt() and part_devt() and use them to directly\n  access devt instead of computing it from -\u003emajor and -\u003efirst_minor.\n\n  Note that all references to -\u003emajor and -\u003efirst_minor outside of\n  block layer is used to determine devt of the disk (the part0) and as\n  -\u003emajor and -\u003efirst_minor will continue to represent devt for the\n  disk, converting these users aren\u0027t strictly necessary.  However,\n  convert them for consistency.\n\n* Implement disk_max_parts() to avoid directly deferencing\n  genhd-\u003eminors.\n\n* Update bdget_disk() such that it doesn\u0027t assume consecutive minor\n  space.\n\n* Move devt computation from register_disk() to add_disk() and make it\n  the only one (all other usages use the initially determined value).\n\nThese changes clean up the code and will help disk-\u003epart dereference\nfix and extended block device numbers.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "cf771cb5a7b716f3f9e532fd42a1e3a0a75adec5",
      "tree": "c16cf6adc4d2e51eaee77088ecf126b721f8f3c7",
      "parents": [
        "310a2c1012934f590192377f65940cad4aa72b15"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Wed Sep 03 09:01:09 2008 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Thu Oct 09 08:56:05 2008 +0200"
      },
      "message": "block: make variable and argument names more consistent\n\nIn hd_struct, @partno is used to denote partition number and a number\nof other places use @part to denote hd_struct.  Functions use @part\nand @index instead.  This causes confusion and makes it difficult to\nuse consistent variable names for hd_struct.  Always use @partno if a\nvariable represents partition number.\n\nAlso, print out functions use @f or @part for seq_file argument.  Use\n@seqf uniformly instead.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "310a2c1012934f590192377f65940cad4aa72b15",
      "tree": "ed30346abf07c5a7e94719f567368d5642af1f95",
      "parents": [
        "88e341261ca4d39eec21b212961c77eff51105f7"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Mon Aug 25 19:47:17 2008 +0900"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Thu Oct 09 08:56:04 2008 +0200"
      },
      "message": "block: misc updates\n\nThis patch makes the following misc updates in preparation for\ndisk-\u003epart dereference fix and extended block devt support.\n\n* implment part_to_disk()\n\n* fix comment about gendisk-\u003epart indexing\n\n* rename get_part() to disk_map_sector()\n\n* don\u0027t use n which is always zero while printing disk information in\n  diskstats_show()\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "def4e38ddda9bef20b69bfa939195c2f79da7979",
      "tree": "51535a76dee0b21857d2c64da22a0406c0dc7357",
      "parents": [
        "2ac3cee5298a247b2774f3319b28a05f588c3f0e"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Wed Sep 03 08:57:12 2008 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Thu Oct 09 08:56:04 2008 +0200"
      },
      "message": "block: use class_dev_iterator instead of class_for_each_device()\n\nRecent block_class iteration updates 5c6f35c5..27f3025 converted all\nclass device iteration to class_for_each_device() and\nclass_find_device(), which are correct but pain in the ass to use.\nThis pach converts them to newly introduced class_dev_iterator so that\nthey can use more natural control structures instead of separate\ncallbacks and struct to pass parameters to them.\n\nThis results in smaller and easier code.\n\nThis patch also restores the original behavior of not printing header\nin /proc/partitions if there\u0027s no partition to print.  This is trivial\nbut still user-visible behavior.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nCc: Greg Kroah-Hartman \u003cgregkh@suse.de\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "2ac3cee5298a247b2774f3319b28a05f588c3f0e",
      "tree": "e297bbd502f1a8a52436358c5184f7de1cb43f56",
      "parents": [
        "ac65ece4eee10b03ac29ee925cadc179dc810bab"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Wed Sep 03 08:53:37 2008 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Thu Oct 09 08:56:04 2008 +0200"
      },
      "message": "block: don\u0027t grab block_class_lock unnecessarily\n\nblock_class_lock protects major_names array and bdev_map and doesn\u0027t\nhave anything to do with block class devices.  Don\u0027t grab them while\niterating over block class devices.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "ac65ece4eee10b03ac29ee925cadc179dc810bab",
      "tree": "529f3a2c212aaa6aa5010c41aa9ec59bd6635c17",
      "parents": [
        "5a3ceb861663040f9ef0176df4aaa494bba5e352"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Mon Aug 25 19:30:12 2008 +0900"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Thu Oct 09 08:56:04 2008 +0200"
      },
      "message": "block: fix partition info printouts\n\nRecent block_class iteration updates 5c6f35c5..27f3025 broke partition\ninfo printouts.\n\n* printk_all_partitions(): Partition print out stops when it meets a\n  partition hole.  Partition printing inner loop should continue\n  instead of exiting on empty partition slot.\n\n* /proc/partitions and /proc/diskstats: If all information can\u0027t be\n  read in single read(), the information is truncated.  This is\n  because find_start() doesn\u0027t actually update the counter containing\n  the initial seek.  It runs to the end and ends up always reporting\n  EOF on the second read.\n\nThis patch fixes both problems.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nCc: Greg Kroah-Hartman \u003cgregkh@suse.de\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "710027a48ede75428cc68eaa8ae2269b1e356e2c",
      "tree": "22cba18860b83b03613bad97c405fb5146a2d686",
      "parents": [
        "5b99c2ffa980528a197f26c7d876cceeccce8dd5"
      ],
      "author": {
        "name": "Randy Dunlap",
        "email": "randy.dunlap@oracle.com",
        "time": "Tue Aug 19 20:13:11 2008 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Thu Oct 09 08:56:03 2008 +0200"
      },
      "message": "Add some block/ source files to the kernel-api docbook. Fix kernel-doc notation in them as needed. Fix changed function parameter names. Fix typos/spellos. In comments, change REQ_SPECIAL to REQ_TYPE_SPECIAL and REQ_BLOCK_PC to REQ_TYPE_BLOCK_PC.\n\nSigned-off-by: Randy Dunlap \u003crandy.dunlap@oracle.com\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "ddef43a843f620c6742a06633739887a901ec06b",
      "tree": "25eec6c04abf5c7ec3cb9aba2338d249844ffb61",
      "parents": [
        "bb23b431db7405f6d79f989ad0236bf6428ba1cb"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Mon Sep 01 08:55:10 2008 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Mon Sep 01 08:55:10 2008 +0200"
      },
      "message": "block: restore original behavior of /proc/partition when there\u0027s no partition\n\n/proc/partitions didn\u0027t use to write out the header if there was no\npartition.  However, recent commit 66c64afe changed the behavior.\nThis is nothing major but there\u0027s no reason to change user visible\nbehavior without a good rationale.  Restore the original behavior.\n\nNote that 2.6.28 has clean up changes scheduled which will replace\nthis rather hacky implementation.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nCc: Greg KH \u003cgreg@kroah.com\u003e\nCc: Kay Sievers \u003ckay.sievers@vrfy.org\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "bb23b431db7405f6d79f989ad0236bf6428ba1cb",
      "tree": "481c179e97bf72b206e51ef594c7bb3fb32af72f",
      "parents": [
        "24342c34a022ee90839873d91396045e12ef1090"
      ],
      "author": {
        "name": "FUJITA Tomonori",
        "email": "fujita.tomonori@lab.ntt.co.jp",
        "time": "Fri Aug 29 11:47:07 2008 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Fri Aug 29 11:47:07 2008 +0200"
      },
      "message": "remove blk_register_filter and blk_unregister_filter in gendisk\n\nThis patch remove blk_register_filter and blk_unregister_filter in\ngendisk, and adds them to sd.c, sr.c. and ide-cd.c\n\nThe commit abf5439370491dd6fbb4fe1a7939680d2a9bc9d4 moved cmdfilter\nfrom gendisk to request_queue. It turned out that in some subsystems\nmultiple gendisks share a single request_queue. So we get:\n\nUsing physmap partition information\nCreating 3 MTD partitions on \"physmap-flash\":\n0x00000000-0x01c00000 : \"User FS\"\n0x01c00000-0x01c40000 : \"booter\"\nkobject (8511c410): tried to init an initialized object, something is seriously wrong.\nCall Trace:\n[\u003c8036644c\u003e] dump_stack+0x8/0x34\n[\u003c8021f050\u003e] kobject_init+0x50/0xcc\n[\u003c8021fa18\u003e] kobject_init_and_add+0x24/0x58\n[\u003c8021d20c\u003e] blk_register_filter+0x4c/0x64\n[\u003c8021c194\u003e] add_disk+0x78/0xe0\n[\u003c8027d14c\u003e] add_mtd_blktrans_dev+0x254/0x278\n[\u003c8027c8f0\u003e] blktrans_notify_add+0x40/0x78\n[\u003c80279c00\u003e] add_mtd_device+0xd0/0x150\n[\u003c8027b090\u003e] add_mtd_partitions+0x568/0x5d8\n[\u003c80285458\u003e] physmap_flash_probe+0x2ac/0x334\n[\u003c802644f8\u003e] driver_probe_device+0x12c/0x244\n[\u003c8026465c\u003e] __driver_attach+0x4c/0x84\n[\u003c80263c64\u003e] bus_for_each_dev+0x58/0xac\n[\u003c802633ec\u003e] bus_add_driver+0xc4/0x24c\n[\u003c802648e0\u003e] driver_register+0xcc/0x184\n[\u003c80100460\u003e] _stext+0x60/0x1bc\n\nIn the long term, we need to fix such subsystems but we need a quick\nfix now. This patch add the command filter support to only sd and sr\nthough it might be useful for other SG_IO users (such as cciss).\n\nSigned-off-by: FUJITA Tomonori \u003cfujita.tomonori@lab.ntt.co.jp\u003e\nReported-by: Manuel Lauss \u003cmano@roarinelk.homelinux.net\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "5c0ef6d0214a08e5c846f4c45228adf135d8d0ef",
      "tree": "f4c5d5991365e19780e3638eb2128c8ebd771e99",
      "parents": [
        "068281d302def5efd96d84a163ba17e85f5ea564"
      ],
      "author": {
        "name": "Kay Sievers",
        "email": "kay.sievers@vrfy.org",
        "time": "Sat Aug 16 14:30:30 2008 +0200"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@suse.de",
        "time": "Thu Aug 21 10:15:38 2008 -0700"
      },
      "message": "block: drop references taken by class_find_device()\n\nOtherwise we leak references, which is not a good thing to do.\n\n\nSigned-off-by: Kay Sievers \u003ckay.sievers@vrfy.org\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@suse.de\u003e\n\n"
    },
    {
      "commit": "068281d302def5efd96d84a163ba17e85f5ea564",
      "tree": "f8d49d6c1e2043bcf3671504b411770a0c8c349c",
      "parents": [
        "f5a6d958b5d0a10e7e7a9dee1862fb31d08c6d26"
      ],
      "author": {
        "name": "Kay Sievers",
        "email": "kay.sievers@vrfy.org",
        "time": "Sat Aug 16 14:30:30 2008 +0200"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@suse.de",
        "time": "Thu Aug 21 10:15:38 2008 -0700"
      },
      "message": "block: fix partial read() of /proc/{partitions,diskstats}\n\nThe proc files get truncated if they do not fit into the buffer with\na single read(). We need to move the seq_file index from the callback\nof class_find_device() to the caller of class_find_device(), to keep\nits value across multiple invocations of the callback.\n\nSigned-off-by: Kay Sievers \u003ckay.sievers@vrfy.org\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@suse.de\u003e\n\n"
    },
    {
      "commit": "27f302519148f311307637d4c9a6d0fd87d07e4c",
      "tree": "36693a6ec709b037730bb343e72bd8cc508999dc",
      "parents": [
        "66c64afec16a7b46212ecb2fa99998923bbeea3f"
      ],
      "author": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@suse.de",
        "time": "Thu May 22 17:21:08 2008 -0400"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@suse.de",
        "time": "Mon Jul 21 21:54:49 2008 -0700"
      },
      "message": "block: make /proc/partitions and /proc/diskstats use class_find_device()\n\nUse the proper class iterator function instead of mucking around in the\ninternals of the class structures.\n\nCc: Kay Sievers \u003ckay.sievers@vrfy.org\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@suse.de\u003e\n"
    }
  ],
  "next": "66c64afec16a7b46212ecb2fa99998923bbeea3f"
}
