)]}'
{
  "log": [
    {
      "commit": "66d383de0963dd351051304e36247e9a6fa66b77",
      "tree": "5cd17ffcb6edfa4385a2ceddb63ada9efdea2ee1",
      "parents": [
        "c523abc466c9b7c693e4a528ca2f54c6e931b6a6",
        "2606524141e4ff9b6a5d0bcbd9d601dfc5a8285c"
      ],
      "author": {
        "name": "Ethan Chen",
        "email": "intervigil@gmail.com",
        "time": "Fri Mar 07 11:56:04 2014 -0800"
      },
      "committer": {
        "name": "Ethan Chen",
        "email": "intervigil@gmail.com",
        "time": "Fri Mar 07 11:56:04 2014 -0800"
      },
      "message": "Merge tag \u0027v3.4.82\u0027 into cm-11.0\n\nThis is the 3.4.82 stable release\n\nConflicts:\n\tarch/arm/kernel/traps.c\n\tmm/internal.h\n\nChange-Id: Ie3b1ffdfe133e76cfa3eaaa4305535af8490d7cc\n"
    },
    {
      "commit": "c5bdb3a52d40d1ef3b3f6fb3617d20bb47cee46c",
      "tree": "c66bd8cb89b5f9b7b89955caf67814eebbf19861",
      "parents": [
        "e7a95613d77dcbcbefe99b465c6488550caf2c85"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "axboe@fb.com",
        "time": "Wed Feb 12 09:34:01 2014 -0700"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@linuxfoundation.org",
        "time": "Sat Feb 22 10:32:46 2014 -0800"
      },
      "message": "block: add cond_resched() to potentially long running ioctl discard loop\n\ncommit c8123f8c9cb517403b51aa41c3c46ff5e10b2c17 upstream.\n\nWhen mkfs issues a full device discard and the device only\nsupports discards of a smallish size, we can loop in\nblkdev_issue_discard() for a long time. If preempt isn\u0027t enabled,\nthis can turn into a softlock situation and the kernel will\nstart complaining.\n\nAdd an explicit cond_resched() at the end of the loop to avoid\nthat.\n\nSigned-off-by: Jens Axboe \u003caxboe@fb.com\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@linuxfoundation.org\u003e\n\n"
    },
    {
      "commit": "de0f9a5a9d7932086e623560d66655cc8507cfec",
      "tree": "d9e4678d68da38d7670b79c8b5e8782445c5ad7e",
      "parents": [
        "e1a3c5a3706d580390c02c69cb14dcd679d31d91",
        "84dfcb758ba7cce52ef475ac96861a558e1a20ca"
      ],
      "author": {
        "name": "Ethan Chen",
        "email": "intervigil@gmail.com",
        "time": "Sat Dec 21 14:22:41 2013 -0800"
      },
      "committer": {
        "name": "Ethan Chen",
        "email": "intervigil@gmail.com",
        "time": "Sat Dec 21 14:22:41 2013 -0800"
      },
      "message": "Merge tag \u0027v3.4.75\u0027 into cm-11.0\n\nThis is the 3.4.75 stable release\n\nConflicts:\n\tdrivers/md/dm-crypt.c\n\tdrivers/mmc/card/block.c\n\tdrivers/net/ethernet/smsc/smc91x.h\n\nChange-Id: I39f38ef5530c5fef07583beb9d76b983e71b9ff3\n"
    },
    {
      "commit": "2a38ada0f1ab9f894eea4428731ebc811b51c3f3",
      "tree": "759c765808a23a3a35e4ba10d8306c847c0205b7",
      "parents": [
        "19218e895cefdd389c96af12c93c89e7276bbaad",
        "44d19f5a04ae4e433548ba2f25e4d2ccfcac765e"
      ],
      "author": {
        "name": "Ethan Chen",
        "email": "intervigil@gmail.com",
        "time": "Sun Dec 08 12:50:38 2013 -0800"
      },
      "committer": {
        "name": "Ethan Chen",
        "email": "intervigil@gmail.com",
        "time": "Sun Dec 08 12:50:38 2013 -0800"
      },
      "message": "Merge tag \u0027v3.4.72\u0027 into tmp\n\nThis is the 3.4.72 stable release\n\nConflicts:\n\tarch/arm/Kconfig\n\tarch/arm/include/asm/mutex.h\n\tarch/arm/kernel/perf_event.c\n\tarch/arm/kernel/traps.c\n\tarch/arm/mm/dma-mapping.c\n\tdrivers/base/power/main.c\n\tdrivers/bluetooth/ath3k.c\n\tdrivers/bluetooth/btusb.c\n\tdrivers/gpu/drm/radeon/radeon_mode.h\n\tdrivers/mmc/card/block.c\n\tdrivers/mmc/host/sdhci.c\n\tdrivers/usb/core/message.c\n\tdrivers/usb/host/xhci-plat.c\n\tdrivers/usb/host/xhci.h\n\tdrivers/virtio/virtio_ring.c\n\tfs/ubifs/dir.c\n\tinclude/linux/freezer.h\n\tinclude/linux/virtio.h\n\tinclude/media/v4l2-ctrls.h\n\tinclude/net/bluetooth/hci_core.h\n\tinclude/net/bluetooth/mgmt.h\n\tkernel/cgroup.c\n\tkernel/futex.c\n\tkernel/signal.c\n\tnet/bluetooth/hci_conn.c\n\tnet/bluetooth/hci_core.c\n\tnet/bluetooth/hci_event.c\n\tnet/bluetooth/l2cap_core.c\n\tnet/bluetooth/mgmt.c\n\tnet/bluetooth/rfcomm/sock.c\n\tnet/bluetooth/smp.c\n\nChange-Id: I4fb0d5de74ca76f933d95d98e1a9c2c859402f34\n"
    },
    {
      "commit": "78530a1aaf9274a3fb6f958f27f7fab302c4e961",
      "tree": "5f54f5b41c4548f448f9e83f86b51a302343edfd",
      "parents": [
        "d8b8a43e0f3c99bb29f258ef508969793f8e43bd"
      ],
      "author": {
        "name": "Mikulas Patocka",
        "email": "mpatocka@redhat.com",
        "time": "Mon Oct 14 12:11:36 2013 -0400"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@linuxfoundation.org",
        "time": "Sun Dec 08 07:29:43 2013 -0800"
      },
      "message": "blk-core: Fix memory corruption if blkcg_init_queue fails\n\ncommit fff4996b7db7955414ac74386efa5e07fd766b50 upstream.\n\nIf blkcg_init_queue fails, blk_alloc_queue_node doesn\u0027t call bdi_destroy\nto clean up structures allocated by the backing dev.\n\n------------[ cut here ]------------\nWARNING: at lib/debugobjects.c:260 debug_print_object+0x85/0xa0()\nODEBUG: free active (active state 0) object type: percpu_counter hint:           (null)\nModules linked in: dm_loop dm_mod ip6table_filter ip6_tables uvesafb cfbcopyarea cfbimgblt cfbfillrect fbcon font bitblit fbcon_rotate fbcon_cw fbcon_ud fbcon_ccw softcursor fb fbdev ipt_MASQUERADE iptable_nat nf_nat_ipv4 msr nf_conntrack_ipv4 nf_defrag_ipv4 xt_state ipt_REJECT xt_tcpudp iptable_filter ip_tables x_tables bridge stp llc tun ipv6 cpufreq_userspace cpufreq_stats cpufreq_powersave cpufreq_ondemand cpufreq_conservative spadfs fuse hid_generic usbhid hid raid0 md_mod dmi_sysfs nf_nat_ftp nf_nat nf_conntrack_ftp nf_conntrack lm85 hwmon_vid snd_usb_audio snd_pcm_oss snd_mixer_oss snd_pcm snd_timer snd_page_alloc snd_hwdep snd_usbmidi_lib snd_rawmidi snd soundcore acpi_cpufreq freq_table mperf sata_svw serverworks kvm_amd ide_core ehci_pci ohci_hcd libata ehci_hcd kvm usbcore tg3 usb_common libphy k10temp pcspkr ptp i2c_piix4 i2c_core evdev microcode hwmon rtc_cmos pps_core e100 skge floppy mii processor button unix\nCPU: 0 PID: 2739 Comm: lvchange Tainted: G        W\n3.10.15-devel #14\nHardware name: empty empty/S3992-E, BIOS \u0027V1.06   \u0027 06/09/2009\n 0000000000000009 ffff88023c3c1ae8 ffffffff813c8fd4 ffff88023c3c1b20\n ffffffff810399eb ffff88043d35cd58 ffffffff81651940 ffff88023c3c1bf8\n ffffffff82479d90 0000000000000005 ffff88023c3c1b80 ffffffff81039a67\nCall Trace:\n [\u003cffffffff813c8fd4\u003e] dump_stack+0x19/0x1b\n [\u003cffffffff810399eb\u003e] warn_slowpath_common+0x6b/0xa0\n [\u003cffffffff81039a67\u003e] warn_slowpath_fmt+0x47/0x50\n [\u003cffffffff8122aaaf\u003e] ? debug_check_no_obj_freed+0xcf/0x250\n [\u003cffffffff81229a15\u003e] debug_print_object+0x85/0xa0\n [\u003cffffffff8122abe3\u003e] debug_check_no_obj_freed+0x203/0x250\n [\u003cffffffff8113c4ac\u003e] kmem_cache_free+0x20c/0x3a0\n [\u003cffffffff811f6709\u003e] blk_alloc_queue_node+0x2a9/0x2c0\n [\u003cffffffff811f672e\u003e] blk_alloc_queue+0xe/0x10\n [\u003cffffffffa04c0093\u003e] dm_create+0x1a3/0x530 [dm_mod]\n [\u003cffffffffa04c6bb0\u003e] ? list_version_get_info+0xe0/0xe0 [dm_mod]\n [\u003cffffffffa04c6c07\u003e] dev_create+0x57/0x2b0 [dm_mod]\n [\u003cffffffffa04c6bb0\u003e] ? list_version_get_info+0xe0/0xe0 [dm_mod]\n [\u003cffffffffa04c6bb0\u003e] ? list_version_get_info+0xe0/0xe0 [dm_mod]\n [\u003cffffffffa04c6528\u003e] ctl_ioctl+0x268/0x500 [dm_mod]\n [\u003cffffffff81097662\u003e] ? get_lock_stats+0x22/0x70\n [\u003cffffffffa04c67ce\u003e] dm_ctl_ioctl+0xe/0x20 [dm_mod]\n [\u003cffffffff81161aad\u003e] do_vfs_ioctl+0x2ed/0x520\n [\u003cffffffff8116cfc7\u003e] ? fget_light+0x377/0x4e0\n [\u003cffffffff81161d2b\u003e] SyS_ioctl+0x4b/0x90\n [\u003cffffffff813cff16\u003e] system_call_fastpath+0x1a/0x1f\n---[ end trace 4b5ff0d55673d986 ]---\n------------[ cut here ]------------\n\nThis fix should be backported to stable kernels starting with 2.6.37. Note\nthat in the kernels prior to 3.5 the affected code is different, but the\nbug is still there - bdi_init is called and bdi_destroy isn\u0027t.\n\nSigned-off-by: Mikulas Patocka \u003cmpatocka@redhat.com\u003e\nAcked-by: Tejun Heo \u003ctj@kernel.org\u003e\nSigned-off-by: Jens Axboe \u003caxboe@kernel.dk\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@linuxfoundation.org\u003e\n\n"
    },
    {
      "commit": "9e23d8bd64e49062faf4aa4abcedd3943cf1d09d",
      "tree": "89bc0a5145047109664a1d729326a1e52cfcf085",
      "parents": [
        "3dc062d269601c3f2f9860e9033906d303661622"
      ],
      "author": {
        "name": "Tomoki Sekiyama",
        "email": "tomoki.sekiyama@hds.com",
        "time": "Tue Oct 15 16:42:19 2013 -0600"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@linuxfoundation.org",
        "time": "Sun Dec 08 07:29:43 2013 -0800"
      },
      "message": "elevator: acquire q-\u003esysfs_lock in elevator_change()\n\ncommit 7c8a3679e3d8e9d92d58f282161760a0e247df97 upstream.\n\nAdd locking of q-\u003esysfs_lock into elevator_change() (an exported function)\nto ensure it is held to protect q-\u003eelevator from elevator_init(), even if\nelevator_change() is called from non-sysfs paths.\nsysfs path (elv_iosched_store) uses __elevator_change(), non-locking\nversion, as the lock is already taken by elv_iosched_store().\n\nSigned-off-by: Tomoki Sekiyama \u003ctomoki.sekiyama@hds.com\u003e\nSigned-off-by: Jens Axboe \u003caxboe@kernel.dk\u003e\nCc: Josh Boyer \u003cjwboyer@fedoraproject.org\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@linuxfoundation.org\u003e\n\n"
    },
    {
      "commit": "801327994060b0ae3749257d264a7bfea119b46c",
      "tree": "f06d24743c51b4aa314d44c452ccc6642298ce74",
      "parents": [
        "82b80fae0eb0c2d18414f7e678e04a4e7f88ecbe"
      ],
      "author": {
        "name": "Mike Snitzer",
        "email": "snitzer@redhat.com",
        "time": "Fri Oct 18 09:44:49 2013 -0600"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@linuxfoundation.org",
        "time": "Fri Nov 29 10:50:36 2013 -0800"
      },
      "message": "block: properly stack underlying max_segment_size to DM device\n\ncommit d82ae52e68892338068e7559a0c0657193341ce4 upstream.\n\nWithout this patch all DM devices will default to BLK_MAX_SEGMENT_SIZE\n(65536) even if the underlying device(s) have a larger value -- this is\ndue to blk_stack_limits() using min_not_zero() when stacking the\nmax_segment_size limit.\n\n1073741824\n\nbefore patch:\n65536\n\nafter patch:\n1073741824\n\nReported-by: Lukasz Flis \u003cl.flis@cyfronet.pl\u003e\nSigned-off-by: Mike Snitzer \u003csnitzer@redhat.com\u003e\nSigned-off-by: Jens Axboe \u003caxboe@kernel.dk\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@linuxfoundation.org\u003e\n\n"
    },
    {
      "commit": "5413d6c032afde960c16c735eef40f9b85fa9132",
      "tree": "91bf53b9f824ea6d87495c7cd5a113a9a66fffe4",
      "parents": [
        "cf359232f6c3eaf6ddff242a2b8247e20b29c436"
      ],
      "author": {
        "name": "Jeff Moyer",
        "email": "jmoyer@redhat.com",
        "time": "Tue Oct 08 14:36:41 2013 -0400"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@linuxfoundation.org",
        "time": "Fri Nov 29 10:50:35 2013 -0800"
      },
      "message": "block: fix race between request completion and timeout handling\n\ncommit 4912aa6c11e6a5d910264deedbec2075c6f1bb73 upstream.\n\ncrocode i2c_i801 i2c_core iTCO_wdt iTCO_vendor_support shpchp ioatdma dca be2net sg ses enclosure ext4 mbcache jbd2 sd_mod crc_t10dif ahci megaraid_sas(U) dm_mirror dm_region_hash dm_log dm_mod [last unloaded: scsi_wait_scan]\n\nPid: 491, comm: scsi_eh_0 Tainted: G        W  ----------------   2.6.32-220.13.1.el6.x86_64 #1 IBM  -[8722PAX]-/00D1461\nRIP: 0010:[\u003cffffffff8124e424\u003e]  [\u003cffffffff8124e424\u003e] blk_requeue_request+0x94/0xa0\nRSP: 0018:ffff881057eefd60  EFLAGS: 00010012\nRAX: ffff881d99e3e8a8 RBX: ffff881d99e3e780 RCX: ffff881d99e3e8a8\nRDX: ffff881d99e3e8a8 RSI: ffff881d99e3e780 RDI: ffff881d99e3e780\nRBP: ffff881057eefd80 R08: ffff881057eefe90 R09: 0000000000000000\nR10: 0000000000000000 R11: 0000000000000000 R12: ffff881057f92338\nR13: 0000000000000000 R14: ffff881057f92338 R15: ffff883058188000\nFS:  0000000000000000(0000) GS:ffff880040200000(0000) knlGS:0000000000000000\nCS:  0010 DS: 0018 ES: 0018 CR0: 000000008005003b\nCR2: 00000000006d3ec0 CR3: 000000302cd7d000 CR4: 00000000000406b0\nDR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000\nDR3: 0000000000000000 DR6: 00000000ffff0ff0 DR7: 0000000000000400\nProcess scsi_eh_0 (pid: 491, threadinfo ffff881057eee000, task ffff881057e29540)\nStack:\n 0000000000001057 0000000000000286 ffff8810275efdc0 ffff881057f16000\n\u003c0\u003e ffff881057eefdd0 ffffffff81362323 ffff881057eefe20 ffffffff8135f393\n\u003c0\u003e ffff881057e29af8 ffff8810275efdc0 ffff881057eefe78 ffff881057eefe90\nCall Trace:\n [\u003cffffffff81362323\u003e] __scsi_queue_insert+0xa3/0x150\n [\u003cffffffff8135f393\u003e] ? scsi_eh_ready_devs+0x5e3/0x850\n [\u003cffffffff81362a23\u003e] scsi_queue_insert+0x13/0x20\n [\u003cffffffff8135e4d4\u003e] scsi_eh_flush_done_q+0x104/0x160\n [\u003cffffffff8135fb6b\u003e] scsi_error_handler+0x35b/0x660\n [\u003cffffffff8135f810\u003e] ? scsi_error_handler+0x0/0x660\n [\u003cffffffff810908c6\u003e] kthread+0x96/0xa0\n [\u003cffffffff8100c14a\u003e] child_rip+0xa/0x20\n [\u003cffffffff81090830\u003e] ? kthread+0x0/0xa0\n [\u003cffffffff8100c140\u003e] ? child_rip+0x0/0x20\nCode: 00 00 eb d1 4c 8b 2d 3c 8f 97 00 4d 85 ed 74 bf 49 8b 45 00 49 83 c5 08 48 89 de 4c 89 e7 ff d0 49 8b 45 00 48 85 c0 75 eb eb a4 \u003c0f\u003e 0b eb fe 0f 1f 84 00 00 00 00 00 55 48 89 e5 0f 1f 44 00 00\nRIP  [\u003cffffffff8124e424\u003e] blk_requeue_request+0x94/0xa0\n RSP \u003cffff881057eefd60\u003e\n\nThe RIP is this line:\n        BUG_ON(blk_queued_rq(rq));\n\nAfter digging through the code, I think there may be a race between the\nrequest completion and the timer handler running.\n\nA timer is started for each request put on the device\u0027s queue (see\nblk_start_request-\u003eblk_add_timer).  If the request does not complete\nbefore the timer expires, the timer handler (blk_rq_timed_out_timer)\nwill mark the request complete atomically:\n\nstatic inline int blk_mark_rq_complete(struct request *rq)\n{\n        return test_and_set_bit(REQ_ATOM_COMPLETE, \u0026rq-\u003eatomic_flags);\n}\n\nand then call blk_rq_timed_out.  The latter function will call\nscsi_times_out, which will return one of BLK_EH_HANDLED,\nBLK_EH_RESET_TIMER or BLK_EH_NOT_HANDLED.  If BLK_EH_RESET_TIMER is\nreturned, blk_clear_rq_complete is called, and blk_add_timer is again\ncalled to simply wait longer for the request to complete.\n\nNow, if the request happens to complete while this is going on, what\nhappens?  Given that we know the completion handler will bail if it\nfinds the REQ_ATOM_COMPLETE bit set, we need to focus on the completion\nhandler running after that bit is cleared.  So, from the above\nparagraph, after the call to blk_clear_rq_complete.  If the completion\nsets REQ_ATOM_COMPLETE before the BUG_ON in blk_add_timer, we go boom\nthere (I haven\u0027t seen this in the cores).  Next, if we get the\ncompletion before the call to list_add_tail, then the timer will\neventually fire for an old req, which may either be freed or reallocated\n(there is evidence that this might be the case).  Finally, if the\ncompletion comes in *after* the addition to the timeout list, I think\nit\u0027s harmless.  The request will be removed from the timeout list,\nreq_atom_complete will be set, and all will be well.\n\nThis will only actually explain the coredumps *IF* the request\nstructure was freed, reallocated *and* queued before the error handler\nthread had a chance to process it.  That is possible, but it may make\nsense to keep digging for another race.  I think that if this is what\nwas happening, we would see other instances of this problem showing up\nas null pointer or garbage pointer dereferences, for example when the\nrequest structure was not re-used.  It looks like we actually do run\ninto that situation in other reports.\n\nThis patch moves the BUG_ON(test_bit(REQ_ATOM_COMPLETE,\n\u0026req-\u003eatomic_flags)); from blk_add_timer to the only caller that could\ntrip over it (blk_start_request).  It then inverts the calls to\nblk_clear_rq_complete and blk_add_timer in blk_rq_timed_out to address\nthe race.  I\u0027ve boot tested this patch, but nothing more.\n\nSigned-off-by: Jeff Moyer \u003cjmoyer@redhat.com\u003e\nAcked-by: Hannes Reinecke \u003chare@suse.de\u003e\nSigned-off-by: Jens Axboe \u003caxboe@kernel.dk\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@linuxfoundation.org\u003e\n\n"
    },
    {
      "commit": "a8139b5b8b1355c4909d90afa58b055aabe1a272",
      "tree": "6c454bbd3770b399a90b08396926d68135330f8c",
      "parents": [
        "5f855daf6487b64eae1f201483b5830f42b2e9bb"
      ],
      "author": {
        "name": "Kees Cook",
        "email": "keescook@chromium.org",
        "time": "Wed Jul 03 15:01:14 2013 -0700"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@linuxfoundation.org",
        "time": "Sat Jul 13 11:03:41 2013 -0700"
      },
      "message": "block: do not pass disk names as format strings\n\ncommit ffc8b30866879ed9ba62bd0a86fecdbd51cd3d19 upstream.\n\nDisk names may contain arbitrary strings, so they must not be\ninterpreted as format strings.  It seems that only md allows arbitrary\nstrings to be used for disk names, but this could allow for a local\nmemory corruption from uid 0 into ring 0.\n\nCVE-2013-2851\n\nSigned-off-by: Kees Cook \u003ckeescook@chromium.org\u003e\nCc: Jens Axboe \u003caxboe@kernel.dk\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@linuxfoundation.org\u003e\n\n"
    },
    {
      "commit": "a692b2ecd9abe4c87b0ca9299bbfdd0232a606ab",
      "tree": "ccc63820cac62df1ef7c102c18353fb5a882d4ab",
      "parents": [
        "59ce6789c9ba140cb45387214a7c1b4825b74733"
      ],
      "author": {
        "name": "Maya Erez",
        "email": "merez@codeaurora.org",
        "time": "Sun Apr 14 15:19:52 2013 +0300"
      },
      "committer": {
        "name": "Ethan Chen",
        "email": "intervigil@gmail.com",
        "time": "Fri Jun 07 13:40:42 2013 -0700"
      },
      "message": "block: row: Fix starvation tolerance values\n\nThe current starvation tolerance values increase the boot time\nsince high priority SW requests are delayed by regular priority requests.\nIn order to overcome this, increase the starvation tolerance values.\n\nChange-Id: I9947fca9927cbd39a1d41d4bd87069df679d3103\nSigned-off-by: Tatyana Brokhman \u003ctlinder@codeaurora.org\u003e\nSigned-off-by: Maya Erez \u003cmerez@codeaurora.org\u003e\n"
    },
    {
      "commit": "59ce6789c9ba140cb45387214a7c1b4825b74733",
      "tree": "27e3464b7aa9b8b9ed61ad5aa55f1b91baadf3c1",
      "parents": [
        "f997b93fca7b199d42319a5caf5a2e6afb5ae18f"
      ],
      "author": {
        "name": "Tatyana Brokhman",
        "email": "tlinder@codeaurora.org",
        "time": "Thu Mar 21 11:04:02 2013 +0200"
      },
      "committer": {
        "name": "Ethan Chen",
        "email": "intervigil@gmail.com",
        "time": "Fri Jun 07 13:40:42 2013 -0700"
      },
      "message": "block: row: Update sysfs functions\n\nAll ROW (time related) configurable parameters are stored in ms so there\nis no need to convert from/to ms when reading/updating them via sysfs.\n\nChange-Id: Ib6a1de54140b5d25696743da944c076dd6fc02ae\nSigned-off-by: Tatyana Brokhman \u003ctlinder@codeaurora.org\u003e\n"
    },
    {
      "commit": "f997b93fca7b199d42319a5caf5a2e6afb5ae18f",
      "tree": "0ca66d2e9544142ec08c57359a0ba0b7f5ebc1f6",
      "parents": [
        "cb74b7e50b6abdb15cff5190ab5288eae099645b"
      ],
      "author": {
        "name": "Tatyana Brokhman",
        "email": "tlinder@codeaurora.org",
        "time": "Thu Mar 21 13:02:07 2013 +0200"
      },
      "committer": {
        "name": "Ethan Chen",
        "email": "intervigil@gmail.com",
        "time": "Fri Jun 07 13:40:42 2013 -0700"
      },
      "message": "block: row: Prevent starvation of regular priority by high priority\n\nAt the moment all REGULAR and LOW priority requests are starved as long as\nthere are HIGH priority requests to dispatch.\nThis patch prevents the above starvation by setting a starvation limit the\nREGULAR\\LOW priority requests can tolerate.\n\nChange-Id: Ibe24207982c2c55d75c0b0230f67e013d1106017\nSigned-off-by: Tatyana Brokhman \u003ctlinder@codeaurora.org\u003e\n"
    },
    {
      "commit": "cb74b7e50b6abdb15cff5190ab5288eae099645b",
      "tree": "b66248748c978d7dd2914aa091b6e6186b9f1eb0",
      "parents": [
        "f4a09d0c6da781d9045604488a45b4bffa490719"
      ],
      "author": {
        "name": "Tatyana Brokhman",
        "email": "tlinder@codeaurora.org",
        "time": "Tue Mar 12 21:17:18 2013 +0200"
      },
      "committer": {
        "name": "Ethan Chen",
        "email": "intervigil@gmail.com",
        "time": "Fri Jun 07 13:40:42 2013 -0700"
      },
      "message": "block: row: Re-design urgent request notification mechanism\n\nWhen ROW scheduler reports to the block layer that there is an urgent\nrequest pending, the device driver may decide to stop the transmission\nof the current request in order to handle the urgent one. This is done\nin order to reduce the latency of an urgent request. For example:\nlong WRITE may be stopped to handle an urgent READ.\n\nThis patch updates the ROW URGENT notification policy to apply with the\nbelow:\n\n- Don\u0027t notify URGENT if there is an un-completed URGENT request in driver\n- After notifying that URGENT request is present, the next request\n  dispatched is the URGENT one.\n- At every given moment only 1 request can be marked as URGENT.\n  Independent of it\u0027s location (driver or scheduler)\n\nOther changes to URGENT policy:\n- Only READ queues are allowed to notify of an URGENT request pending.\n\nCR fix:\nIf a pending urgent request (A) gets merged with another request (B)\nA is removed from scheduler queue but is not removed from\nrd-\u003epending_urgent_rq.\n\nCRs-Fixed: 453712\nChange-Id: I321e8cf58e12a05b82edd2a03f52fcce7bc9a900\nSigned-off-by: Tatyana Brokhman \u003ctlinder@codeaurora.org\u003e\n"
    },
    {
      "commit": "f4a09d0c6da781d9045604488a45b4bffa490719",
      "tree": "3d282a4e8fc207b587513a6a44529bbc768af337",
      "parents": [
        "d313183ff6d6e405ebee6c10e8d472ad88a3da13"
      ],
      "author": {
        "name": "Tatyana Brokhman",
        "email": "tlinder@codeaurora.org",
        "time": "Thu Sep 20 10:46:10 2012 +0300"
      },
      "committer": {
        "name": "Ethan Chen",
        "email": "intervigil@gmail.com",
        "time": "Fri Jun 07 13:40:42 2013 -0700"
      },
      "message": "block: Adding ROW scheduling algorithm\n\nThis patch adds the implementation of a new scheduling algorithm - ROW.\nThe policy of this algorithm is to prioritize READ requests over WRITE\nas much as possible without starving the WRITE requests.\n\nChange-Id: I4ed52ea21d43b0e7c0769b2599779a3d3869c519\nSigned-off-by: Tatyana Brokhman \u003ctlinder@codeaurora.org\u003e\n\nblock: ROW: Correct minimum values of ROW tunable parameters\n\nThe ROW scheduling algorithm exposes several tunable parameters.\nThis patch updates the minimum allowed values for those parameters.\n\nChange-Id: I5ec19d54b694e2e83ad5376bd99cc91f084967f5\nSigned-off-by: Tatyana Brokhman \u003ctlinder@codeaurora.org\u003e\n\nblock: ROW: Fix forced dispatch\n\nThis patch fixes forced dispatch in the ROW scheduling algorithm.\nWhen the dispatch function is called with the forced flag on, we\ncan\u0027t delay the dispatch of the requests that are in scheduler queues.\nThus, when dispatch is called with forced turned on, we need to cancel\nidling, or not to idle at all.\n\nChange-Id: I3aa0da33ad7b59c0731c696f1392b48525b52ddc\nSigned-off-by: Tatyana Brokhman \u003ctlinder@codeaurora.org\u003e\n\nblock: Add support for reinsert a dispatched req\n\nAdd support for reinserting a dispatched request back to the\nscheduler\u0027s internal data structures.\nThis capability is used by the device driver when it chooses to\ninterrupt the current request transmission and execute another (more\nurgent) pending request. For example: interrupting long write in order\nto handle pending read. The device driver re-inserts the\nremaining write request back to the scheduler, to be rescheduled\nfor transmission later on.\n\nAdd API for verifying whether the current scheduler\nsupports reinserting requests mechanism. If reinsert mechanism isn\u0027t\nsupported by the scheduler, this code path will never be activated.\n\nChange-Id: I5c982a66b651ebf544aae60063ac8a340d79e67f\nSigned-off-by: Tatyana Brokhman \u003ctlinder@codeaurora.org\u003e\n\nblock: Add API for urgent request handling\n\nThis patch add support in block \u0026 elevator layers for handling\nurgent requests. The decision if a request is urgent or not is taken\nby the scheduler. Urgent request notification is passed to the underlying\nblock device driver (eMMC for example). Block device driver may decide to\ninterrupt the currently running low priority request to serve the new\nurgent request. By doing so READ latency is greatly reduced in read\u0026write\ncollision scenarios.\n\nNote that if the current scheduler doesn\u0027t implement the urgent request\nmechanism, this code path is never activated.\n\nChange-Id: I8aa74b9b45c0d3a2221bd4e82ea76eb4103e7cfa\nSigned-off-by: Tatyana Brokhman \u003ctlinder@codeaurora.org\u003e\n\nrow: Adding support for reinsert already dispatched req\n\nAdd support for reinserting already dispatched request back to the\nschedulers internal data structures.\nThe request will be reinserted back to the queue (head) it was\ndispatched from as if it was never dispatched.\n\nChange-Id: I70954df300774409c25b5821465fb3aa33d8feb5\nSigned-off-by: Tatyana Brokhman \u003ctlinder@codeaurora.org\u003e\n\nblock:row: fix idling mechanism in ROW\n\nThis patch addresses the following issues found in the ROW idling\nmechanism:\n1. Fix the delay passed to queue_delayed_work (pass actual delay\n   and not the time when to start the work)\n2. Change the idle time and the idling-trigger frequency to be\n   HZ dependent (instead of using msec_to_jiffies())\n3. Destroy idle_workqueue() in queue_exit\n\nChange-Id: If86513ad6b4be44fb7a860f29bd2127197d8d5bf\nSigned-off-by: Tatyana Brokhman \u003ctlinder@codeaurora.org\u003e\n\ncfq-iosched: Fix null pointer dereference\n\nNULL pointer dereference can happen in cfq_choose_cfqg()\nwhen there are no cfq groups to select other than the\ncurrent serving group. Prevent this by adding a NULL\ncheck before dereferencing.\n\nUnable to handle kernel NULL pointer dereference at virtual address\n[\u003cc02502cc\u003e] (cfq_dispatch_requests+0x368/0x8c0) from\n[\u003cc0243f30\u003e] (blk_peek_request+0x220/0x25c)\n[\u003cc0243f30\u003e] (blk_peek_request+0x220/0x25c) from\n[\u003cc0243f74\u003e] (blk_fetch_request+0x8/0x1c)\n[\u003cc0243f74\u003e] (blk_fetch_request+0x8/0x1c) from\n[\u003cc041cedc\u003e] (mmc_queue_thread+0x58/0x120)\n[\u003cc041cedc\u003e] (mmc_queue_thread+0x58/0x120) from\n[\u003cc00ad310\u003e] (kthread+0x84/0x90)\n[\u003cc00ad310\u003e] (kthread+0x84/0x90) from\n[\u003cc000eeac\u003e] (kernel_thread_exit+0x0/0x8)\n\nCRs-Fixed: 416466\nChange-Id: I1fab93a4334b53e1d7c5dcc8f93cff174bae0d5e\nSigned-off-by: Sujit Reddy Thumma \u003csthumma@codeaurora.org\u003e\n\nrow: Add support for urgent request handling\n\nThis patch adds support for handling urgent requests.\nROW queue can be marked as \"urgent\" so if it was un-served in last\ndispatch cycle and a request was added to it - it will trigger\nissuing an urgent-request-notification to the block device driver.\nThe block device driver may choose at stop the transmission of current\nongoing request to handle the urgent one. Foe example: long WRITE may\nbe stopped to handle an urgent READ. This decreases READ latency.\n\nChange-Id: I84954c13f5e3b1b5caeadc9fe1f9aa21208cb35e\nSigned-off-by: Tatyana Brokhman \u003ctlinder@codeaurora.org\u003e\n\nblock: row: Add some debug information on ROW queues\n\n1. Add a counter for number of requests on queue.\n2. Add function to print queues status (number requests\n   currently on queue and number of already dispatched requests\n   in current dispatch cycle).\n\nChange-Id: I1e98b9ca33853e6e6a8ddc53240f6cd6981e6024\nSigned-off-by: Tatyana Brokhman \u003ctlinder@codeaurora.org\u003e\n\nblock: row: Insert dispatch_quantum into struct row_queue\n\nThere is really no point in keeping the dispatch quantum\nof a queue outside of it. By inserting it to the row_queue\nstructure we spare extra level in accessing it.\n\nChange-Id: Ic77571818b643e71f9aafbb2ca93d0a92158b199\nSigned-off-by: Tatyana Brokhman \u003ctlinder@codeaurora.org\u003e\n\nblock: row: fix sysfs functions - idle_time conversion\n\nidle_time was updated to be stored in msec instead of jiffies.\nSo there is no need to convert the value when reading from user or\ndisplaying the value to him.\n\nChange-Id: I58e074b204e90a90536d32199ac668112966e9cf\nSigned-off-by: Tatyana Brokhman \u003ctlinder@codeaurora.org\u003e\n\nblock: row: Aggregate row_queue parameters to one structure\n\nEach ROW queues has several parameters which default values are defined\nin separate arrays. This patch aggregates all default values into one\narray.\nThe values in question are:\n - is idling enabled for the queue\n - queue quantum\n - can the queue notify on urgent request\n\nChange-Id: I3821b0a042542295069b340406a16b1000873ec6\nSigned-off-by: Tatyana Brokhman \u003ctlinder@codeaurora.org\u003e\n\nblock: row: Dispatch requests according to their io-priority\n\nThis patch implements \"application-hints\" which is a way the issuing\napplication can notify the scheduler on the priority of its request.\nThis is done by setting the io-priority of the request.\nThis patch reuses an already existing mechanism of io-priorities developed\nfor CFQ. Please refer to kernel/Documentation/block/ioprio.txt for\nusage example and explanations.\n\nChange-Id: I228ec8e52161b424242bb7bb133418dc8b73925a\nSigned-off-by: Tatyana Brokhman \u003ctlinder@codeaurora.org\u003e\n\nblock: row: Idling mechanism re-factoring\n\nAt the moment idling in ROW is implemented by delayed work that uses\njiffies granularity which is not very accurate. This patch replaces\ncurrent idling mechanism implementation with hrtime API, which gives\nnanosecond resolution (instead of jiffies).\n\nChange-Id: I86c7b1776d035e1d81571894b300228c8b8f2d92\nSigned-off-by: Tatyana Brokhman \u003ctlinder@codeaurora.org\u003e\n\nblock: row: Don\u0027t notify URGENT if there are un-completed urgent req\n\nWhen ROW scheduler reports to the block layer that there is an urgent\nrequest pending, the device driver may decide to stop the transmission\nof the current request in order to handle the urgent one. If the current\ntransmitted request is an urgent request - we don\u0027t want it to be\nstopped.\nDue to the above ROW scheduler won\u0027t notify of an urgent request if\nthere are urgent requests in flight.\n\nChange-Id: I2fa186d911b908ec7611682b378b9cdc48637ac7\nSigned-off-by: Tatyana Brokhman \u003ctlinder@codeaurora.org\u003e\n\nblock: row: Update initial values of ROW data structures\n\nThis patch sets the initial values of internal ROW\nparameters.\n\nChange-Id: I38132062a7fcbe2e58b9cc757e55caac64d013dc\nSigned-off-by: Tatyana Brokhman \u003ctlinder@codeaurora.org\u003e\n[smuckle@codeaurora.org: ported from msm-3.7]\nSigned-off-by: Steve Muckle \u003csmuckle@codeaurora.org\u003e\n\nblock: add REQ_URGENT to request flags\n\nThis patch adds a new flag to be used in cmd_flags field of struct request\nfor marking request as urgent.\nUrgent request is the one that should be given priority currently handled\n(regular) request by the device driver. The decision of a request urgency\nis taken by the scheduler.\n\nChange-Id: Ic20470987ef23410f1d0324f96f00578f7df8717\nSigned-off-by: Tatyana Brokhman \u003ctlinder@codeaurora.org\u003e\n"
    },
    {
      "commit": "2570f532003a1e9b955799e3c48041e08e9a189e",
      "tree": "881fae1eab0f07ddba71d3b514df9f5920ffda35",
      "parents": [
        "972595ab7bfc0f84a7408732ccadbb7cca8a9661"
      ],
      "author": {
        "name": "Arnd Bergmann",
        "email": "arnd@arndb.de",
        "time": "Wed Apr 03 21:53:57 2013 +0200"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@linuxfoundation.org",
        "time": "Fri Apr 12 09:38:46 2013 -0700"
      },
      "message": "block: avoid using uninitialized value in from queue_var_store\n\ncommit c678ef5286ddb5cf70384ad5af286b0afc9b73e1 upstream.\n\nAs found by gcc-4.8, the QUEUE_SYSFS_BIT_FNS macro creates functions\nthat use a value generated by queue_var_store independent of whether\nthat value was set or not.\n\nblock/blk-sysfs.c: In function \u0027queue_store_nonrot\u0027:\nblock/blk-sysfs.c:244:385: warning: \u0027val\u0027 may be used uninitialized in this function [-Wmaybe-uninitialized]\n\nUnlike most other such warnings, this one is not a false positive,\nwriting any non-number string into the sysfs files indeed has\nan undefined result, rather than returning an error.\n\nSigned-off-by: Arnd Bergmann \u003carnd@arndb.de\u003e\nSigned-off-by: Jens Axboe \u003caxboe@kernel.dk\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@linuxfoundation.org\u003e\n\n"
    },
    {
      "commit": "f9828d9560799ace3a75234451e01858447e3aa2",
      "tree": "64366ce5f3d7049b7cf52f5ac6823a24f25464e4",
      "parents": [
        "d07092413c55af0f8ddc937b8abed583b4ccd621"
      ],
      "author": {
        "name": "Asutosh Das",
        "email": "asutoshd@codeaurora.org",
        "time": "Thu Mar 07 17:43:35 2013 +0530"
      },
      "committer": {
        "name": "Asutosh Das",
        "email": "asutoshd@codeaurora.org",
        "time": "Mon Mar 11 14:30:21 2013 +0530"
      },
      "message": "block: blk-core: add printk_ratelimit\n\nOn failure of requests the console is flooded with prints,\nwhich result in a watchdog bark.\nThis patch limits the number of prints to console thus, avoiding\nthe bark.\n\nCRs-Fixed: 458071\nChange-Id: I614002cc1305ab7b5c6a64d278139291c1baa3c4\nSigned-off-by: Asutosh Das \u003casutoshd@codeaurora.org\u003e\n"
    },
    {
      "commit": "303ee54c72f488b90c2355977c1619a08db6ed9c",
      "tree": "77bb05fd101c9715b9ce2c2ddc4a54f93ca0edea",
      "parents": [
        "a8aa6d32035120fdfef09ccb88c694047013eb7b"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Wed Feb 27 17:03:56 2013 -0800"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@linuxfoundation.org",
        "time": "Mon Mar 04 06:06:41 2013 +0800"
      },
      "message": "block: fix synchronization and limit check in blk_alloc_devt()\n\ncommit ce23bba842aee98092225d9576dba47c82352521 upstream.\n\nidr allocation in blk_alloc_devt() wasn\u0027t synchronized against lookup\nand removal, and its limit check was off by one - 1 \u003c\u003c MINORBITS is\nthe number of minors allowed, not the maximum allowed minor.\n\nAdd locking and rename MAX_EXT_DEVT to NR_EXT_DEVT and fix limit\nchecking.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nAcked-by: Jens Axboe \u003caxboe@kernel.dk\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@linuxfoundation.org\u003e\n\n"
    },
    {
      "commit": "6ee1df3bff435d169d0ab93420bd02b4f9392e66",
      "tree": "8a1a605ee5a6541d492b5718bfcb525350c7cc3d",
      "parents": [
        "5978ac7c68e30bd9a322aa62efc411581263f881"
      ],
      "author": {
        "name": "Tomas Henzl",
        "email": "thenzl@redhat.com",
        "time": "Wed Feb 27 17:03:32 2013 -0800"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@linuxfoundation.org",
        "time": "Mon Mar 04 06:06:40 2013 +0800"
      },
      "message": "block: fix ext_devt_idr handling\n\ncommit 7b74e912785a11572da43292786ed07ada7e3e0c upstream.\n\nWhile adding and removing a lot of disks disks and partitions this\nsometimes shows up:\n\n  WARNING: at fs/sysfs/dir.c:512 sysfs_add_one+0xc9/0x130() (Not tainted)\n  Hardware name:\n  sysfs: cannot create duplicate filename \u0027/dev/block/259:751\u0027\n  Modules linked in: raid1 autofs4 bnx2fc cnic uio fcoe libfcoe libfc 8021q scsi_transport_fc scsi_tgt garp stp llc sunrpc cpufreq_ondemand powernow_k8 freq_table mperf ipv6 dm_mirror dm_region_hash dm_log power_meter microcode dcdbas serio_raw amd64_edac_mod edac_core edac_mce_amd i2c_piix4 i2c_core k10temp bnx2 sg ixgbe dca mdio ext4 mbcache jbd2 dm_round_robin sr_mod cdrom sd_mod crc_t10dif ata_generic pata_acpi pata_atiixp ahci mptsas mptscsih mptbase scsi_transport_sas dm_multipath dm_mod [last unloaded: scsi_wait_scan]\n  Pid: 44103, comm: async/16 Not tainted 2.6.32-195.el6.x86_64 #1\n  Call Trace:\n    warn_slowpath_common+0x87/0xc0\n    warn_slowpath_fmt+0x46/0x50\n    sysfs_add_one+0xc9/0x130\n    sysfs_do_create_link+0x12b/0x170\n    sysfs_create_link+0x13/0x20\n    device_add+0x317/0x650\n    idr_get_new+0x13/0x50\n    add_partition+0x21c/0x390\n    rescan_partitions+0x32b/0x470\n    sd_open+0x81/0x1f0 [sd_mod]\n    __blkdev_get+0x1b6/0x3c0\n    blkdev_get+0x10/0x20\n    register_disk+0x155/0x170\n    add_disk+0xa6/0x160\n    sd_probe_async+0x13b/0x210 [sd_mod]\n    add_wait_queue+0x46/0x60\n    async_thread+0x102/0x250\n    default_wake_function+0x0/0x20\n    async_thread+0x0/0x250\n    kthread+0x96/0xa0\n    child_rip+0xa/0x20\n    kthread+0x0/0xa0\n    child_rip+0x0/0x20\n\nThis most likely happens because dev_t is freed while the number is\nstill used and idr_get_new() is not protected on every use.  The fix\nadds a mutex where it wasn\u0027t before and moves the dev_t free function so\nit is called after device del.\n\nSigned-off-by: Tomas Henzl \u003cthenzl@redhat.com\u003e\nCc: Jens Axboe \u003caxboe@kernel.dk\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@linuxfoundation.org\u003e\n\n"
    },
    {
      "commit": "e833acaf2b5cfac0fb53692652a8c39667f1e559",
      "tree": "f530c2ea75a3d7e52045e1f543ced58757895b9d",
      "parents": [
        "7dfc4b284ca395a035e7da058f86dfb4275dd509"
      ],
      "author": {
        "name": "Duy Truong",
        "email": "dtruong@codeaurora.org",
        "time": "Tue Feb 12 13:35:08 2013 -0800"
      },
      "committer": {
        "name": "Duy Truong",
        "email": "dtruong@codeaurora.org",
        "time": "Tue Feb 12 13:35:08 2013 -0800"
      },
      "message": "Update copyright to The Linux Foundation\n\nChange-Id: Ibead64ce2e901dede2ddd1b86088b88f2350ce92\nSigned-off-by: Duy Truong \u003cdtruong@codeaurora.org\u003e\n"
    },
    {
      "commit": "2a0a33a38e2da51f30fb42bd962b2c444a39ce9c",
      "tree": "984ccef0cf616ee3186239b92e1f9d161fc609c0",
      "parents": [
        "d1eb109e06138506b67eb3bfc8510a961da6309f"
      ],
      "author": {
        "name": "Subhash Jadavani",
        "email": "subhashj@codeaurora.org",
        "time": "Thu Jan 10 02:15:13 2013 +0530"
      },
      "committer": {
        "name": "Ian Maund",
        "email": "imaund@codeaurora.org",
        "time": "Wed Jan 23 14:54:22 2013 -0800"
      },
      "message": "block: blk-merge: don\u0027t merge the pages with non-contiguous descriptors\n\nblk_rq_map_sg() function merges the physically contiguous pages to use same\nscatter-gather node without checking if their page descriptors are\ncontiguous or not.\n\nNow when dma_map_sg() is called on the scatter gather list, it would\ntake the base page pointer from each node (one by one) and iterates\nthrough all of the pages in same sg node by keep incrementing the base\npage pointer with the assumption that physically contiguous pages will\nhave their page descriptor address contiguous which may not be true\nif SPARSEMEM config is enabled. So here we may end referring to invalid\npage descriptor.\n\nFollowing table shows the example of physically contiguous pages but\ntheir page descriptor addresses non-contiguous.\n-------------------------------------------\n| Page Descriptor    |   Physical Address |\n------------------------------------------\n| 0xc1e43fdc         |   0xdffff000       |\n| 0xc2052000         |   0xe0000000       |\n-------------------------------------------\n\nWith this patch, relevant blk-merge functions will also check if the\nphysically contiguous pages are having page descriptors address contiguous\nor not? If not then, these pages are separated to be in different\nscatter-gather nodes.\n\n(cherry picked from commit 6e25ce37a4f5750467f7c741b549687ebbc10667)\n\nCRs-Fixed: 392141\nChange-Id: I3601565e5569a69f06fb3af99061c4d4c23af241\nSigned-off-by: Subhash Jadavani \u003csubhashj@codeaurora.org\u003e\n"
    },
    {
      "commit": "5042a551a4805f73c82b5fba0a3c4cc2e372665c",
      "tree": "234cf6bfd6105bfd58dc18a2052af7f84ddb9bd6",
      "parents": [
        "6495a1b5bc6f9e55eff414975609fef9e4a73662"
      ],
      "author": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Fri Jun 15 12:52:46 2012 +0200"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@linuxfoundation.org",
        "time": "Mon Dec 03 11:47:11 2012 -0800"
      },
      "message": "scsi: Silence unnecessary warnings about ioctl to partition\n\ncommit 6d9359280753d2955f86d6411047516a9431eb51 upstream.\n\nSometimes, warnings about ioctls to partition happen often enough that they\nform majority of the warnings in the kernel log and users complain. In some\ncases warnings are about ioctls such as SG_IO so it\u0027s not good to get rid of\nthe warnings completely as they can ease debugging of userspace problems\nwhen ioctl is refused.\n\nSince I have seen warnings from lots of commands, including some proprietary\nuserspace applications, I don\u0027t think disallowing the ioctls for processes\nwith CAP_SYS_RAWIO will happen in the near future if ever. So lets just\nstop warning for processes with CAP_SYS_RAWIO for which ioctl is allowed.\n\nAcked-by: Paolo Bonzini \u003cpbonzini@redhat.com\u003e\nCC: Paolo Bonzini \u003cpbonzini@redhat.com\u003e\nCC: James Bottomley \u003cJBottomley@parallels.com\u003e\nSigned-off-by: Jan Kara \u003cjack@suse.cz\u003e\nSigned-off-by: Jens Axboe \u003caxboe@kernel.dk\u003e\nCc: satoru takeuchi \u003csatoru.takeuchi@gmail.com\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@linuxfoundation.org\u003e\n\n"
    },
    {
      "commit": "7fce34e1a40c49a2f579ffd1342884cf8bca8e96",
      "tree": "5c5fad410759da04a14d72dd1d7e59fdb0b1cb7f",
      "parents": [
        "e299f8abb241b52fe0de458143a537ac91b269a2"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Thu Sep 20 14:09:30 2012 -0700"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@linuxfoundation.org",
        "time": "Sun Oct 21 09:27:59 2012 -0700"
      },
      "message": "block: fix request_queue-\u003eflags initialization\n\ncommit 60ea8226cbd5c8301f9a39edc574ddabcb8150e0 upstream.\n\nA queue newly allocated with blk_alloc_queue_node() has only\nQUEUE_FLAG_BYPASS set.  For request-based drivers,\nblk_init_allocated_queue() is called and q-\u003equeue_flags is overwritten\nwith QUEUE_FLAG_DEFAULT which doesn\u0027t include BYPASS even though the\ninitial bypass is still in effect.\n\nIn blk_init_allocated_queue(), or QUEUE_FLAG_DEFAULT to q-\u003equeue_flags\ninstead of overwriting.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nAcked-by: Vivek Goyal \u003cvgoyal@redhat.com\u003e\nSigned-off-by: Jens Axboe \u003caxboe@kernel.dk\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@linuxfoundation.org\u003e\n\n"
    },
    {
      "commit": "22f7abfd7f866ce603735f00a833fec391aec877",
      "tree": "45a4c253b8e24100d92e8c8b37229d8a3c466a69",
      "parents": [
        "33e9a811854403aa37527069912c5daac6805ab4"
      ],
      "author": {
        "name": "Maya Erez",
        "email": "merez@codeaurora.org",
        "time": "Wed Jul 18 21:52:33 2012 +0300"
      },
      "committer": {
        "name": "Maya Erez",
        "email": "merez@codeaurora.org",
        "time": "Wed Jul 18 21:52:33 2012 +0300"
      },
      "message": "mmc: card: Add Sanitize unit test\n\nThis test write data to the card, then send DISCARD on random\naddresses on the card, send SANITIZE to the card to erase all\nthe unmapped areas.\n\nChange-Id: I2904023ccd258e64b99b004bacfbe576b0ead59a\nSigned-off-by: Maya Erez \u003cmerez@codeaurora.org\u003e\n"
    },
    {
      "commit": "db8cbfe2b32773a619c3cdbf8e99bbd7954a7d4f",
      "tree": "bda055e85383d6587c8942d3ee6f7185a6b234bf",
      "parents": [
        "6757fbad262ce79a7ffaa805bdf6700306adad9c"
      ],
      "author": {
        "name": "Maya Erez",
        "email": "merez@codeaurora.org",
        "time": "Sun Jul 15 13:09:08 2012 +0300"
      },
      "committer": {
        "name": "Maya Erez",
        "email": "merez@codeaurora.org",
        "time": "Sun Jul 15 13:09:08 2012 +0300"
      },
      "message": "block: test-iosched error handling fixes\n\n- Fix test-iosched crash when running multiple tests\n- Free the BIOs memory when a request is not completed\n\nChange-Id: I1baa916c04ae73c809dee7e67ec63f4546dc71aa\nSigned-off-by: Maya Erez \u003cmerez@codeaurora.org\u003e\n"
    },
    {
      "commit": "6018155a6fc3ac65f929cecf04708f48f4af6aba",
      "tree": "0137bac74c256816a372adce2e8d534b4a2329b6",
      "parents": [
        "378288489d0b6cca782429154872a6dd070ae5e5"
      ],
      "author": {
        "name": "Maya Erez",
        "email": "merez@codeaurora.org",
        "time": "Wed Jun 27 11:25:26 2012 +0300"
      },
      "committer": {
        "name": "Lee Susman",
        "email": "lsusman@codeaurora.org",
        "time": "Wed Jun 27 14:11:12 2012 +0300"
      },
      "message": "block: Add test-iosched scheduler\n\nThe test scheduler allows testing a block device by dispatching\nspecific requests according to the test case and declare PASS/FAIL\naccording to the requests completion error code\n\nChange-Id: Ief91f9fed6e3c3c75627d27264d5252ea14f10ad\nSigned-off-by: Maya Erez \u003cmerez@codeaurora.org\u003e\n"
    },
    {
      "commit": "f132c6cf77251e011e1dad0ec88c0b1fda16d5aa",
      "tree": "f04b469a3547a19b7bdbe110adc571eb71c93328",
      "parents": [
        "23016defd7db701a01dc49f972ad6b1bae9651c2",
        "3f6240f3e4e2608caf1a70d614ada658cbcbe7be"
      ],
      "author": {
        "name": "Steve Muckle",
        "email": "smuckle@codeaurora.org",
        "time": "Wed Jun 06 18:30:57 2012 -0700"
      },
      "committer": {
        "name": "Steve Muckle",
        "email": "smuckle@codeaurora.org",
        "time": "Wed Jun 06 18:45:28 2012 -0700"
      },
      "message": "Merge commit \u0027AU_LINUX_ANDROID_ICS.04.00.04.00.126\u0027 into msm-3.4\n\nAU_LINUX_ANDROID_ICS.04.00.04.00.126 from msm-3.0.\nFirst parent is from google/android-3.4.\n\n* commit \u0027AU_LINUX_ANDROID_ICS.04.00.04.00.126\u0027: (8712 commits)\n  PRNG: Device tree entry for qrng device.\n  vidc:1080p: Set video core timeout value for Thumbnail mode\n  msm: sps: improve the debugging support in SPS driver\n  board-8064 msm: Overlap secure and non secure video firmware heaps.\n  msm: clock: Add handoff ops for 7x30 and copper XO clocks\n  msm_fb: display: Wait for external vsync before DTV IOMMU unmap\n  msm: Fix ciruclar dependency in debug UART settings\n  msm: gdsc: Add GDSC regulator driver for msm-copper\n  defconfig: Enable Mobicore Driver.\n  mobicore: Add mobicore driver.\n  mobicore: rename variable to lower case.\n  mobicore: rename folder.\n  mobicore: add makefiles\n  mobicore: initial import of kernel driver\n  ASoC: msm: Add SLIMBUS_2_RX CPU DAI\n  board-8064-gpio: Update FUNC for EPM SPI CS\n  msm_fb: display: Remove chicken bit config during video playback\n  mmc: msm_sdcc: enable the sanitize capability\n  msm-fb: display: lm2 writeback support on mpq platfroms\n  msm_fb: display: Disable LVDS phy \u0026 pll during panel off\n  ...\n\nSigned-off-by: Steve Muckle \u003csmuckle@codeaurora.org\u003e\n"
    },
    {
      "commit": "5500e4fab219bf210f22d2334cc98f3ca8f8912d",
      "tree": "60f3edf480190ee60676348c1ca2730a699f8671",
      "parents": [
        "903f6c716db3d4e26952aae9717f81dd5bc9e4ba",
        "76e10d158efb6d4516018846f60c2ab5501900bc"
      ],
      "author": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Fri May 25 13:56:28 2012 -0700"
      },
      "committer": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Fri May 25 13:56:28 2012 -0700"
      },
      "message": "Merge commit \u0027v3.4\u0027 into android-3.4\n"
    },
    {
      "commit": "73937f5face75e05ec2a72966d04f4e20aa18379",
      "tree": "f3c12b4daec9f72dbecc33001f33ee210c046fec",
      "parents": [
        "3063b5a519b392dd13afd2ffe820eba312db2759"
      ],
      "author": {
        "name": "Maya Erez",
        "email": "merez@codeaurora.org",
        "time": "Thu May 24 23:33:05 2012 +0300"
      },
      "committer": {
        "name": "Maya Erez",
        "email": "merez@codeaurora.org",
        "time": "Thu May 24 23:33:05 2012 +0300"
      },
      "message": "block: ioctl support for sanitize in eMMC 4.5\n\nAdding a new ioctl to support sanitize operation in eMMC\ncards version 4.5.\nThe sanitize ioctl support helps performing this operation\nvia user application.\n\nChange-Id: I79aa4163e7753a75bed5a26a9a92de902b4b9c21\nSigned-off-by: Yaniv Gardi \u003cygardi@codeaurora.org\u003e\nSigned-off-by: Maya Erez \u003cmerez@codeaurora.org\u003e\n"
    },
    {
      "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": "ab2965eefef95a2eecfd54c12b0eb243162862e9",
      "tree": "c947fdc158e144c2d060486b65d10ee67d254039",
      "parents": [
        "a0ec4361e4539e30cf1c5de7ddfd2dadcd8e1595",
        "e816b57a337ea3b755de72bec38c10c864f23015"
      ],
      "author": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Thu Apr 19 14:42:22 2012 -0700"
      },
      "committer": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Thu Apr 19 14:42:22 2012 -0700"
      },
      "message": "Merge commit \u0027v3.4-rc3\u0027 into android-3.4\n\nConflicts:\n\tdrivers/staging/android/lowmemorykiller.c\n\nChange-Id: Ia3ffcfc702e28c4fce0e91b363f4afd5f1c40306\n"
    },
    {
      "commit": "d8dd0b6d4836bce81cece60509ef3b157a420776",
      "tree": "7a28f327a15443d6c9d091f3d272abd107251ab7",
      "parents": [
        "2d59dcfb54ade45cacc59a6e7bd96b8c19088c3d",
        "1b2e19f17ed327af6add02978efdf354e4f8e4df"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Apr 13 18:07:19 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Apr 13 18:07:19 2012 -0700"
      },
      "message": "Merge branch \u0027for-3.4/core\u0027 of git://git.kernel.dk/linux-block\n\nPull block core bits from Jens Axboe:\n \"It\u0027s a nice and quiet round this time, since most of the tricky stuff\n  has been pushed to 3.5 to give it more time to mature.  After a few\n  hectic block IO core changes for 3.3 and 3.2, I\u0027m quite happy with a\n  slow round.\n\n  Really minor stuff in here, the only real functional change is making\n  the auto-unplug threshold a per-queue entity.  The threshold is set so\n  that it\u0027s low enough that we don\u0027t hold off IO for too long, but still\n  big enough to get a nice benefit from the batched insert (and hence\n  queue lock cost reduction).  For raid configurations, this currently\n  breaks down.\"\n\n* \u0027for-3.4/core\u0027 of git://git.kernel.dk/linux-block:\n  block: make auto block plug flush threshold per-disk based\n  Documentation: Add sysfs ABI change for cfq\u0027s target latency.\n  block: Make cfq_target_latency tunable through sysfs.\n  block: use lockdep_assert_held for queue locking\n  block: blk_alloc_queue_node(): use caller\u0027s GFP flags instead of GFP_KERNEL\n"
    },
    {
      "commit": "38c6302d9f919410ea05a5820c05a7807573917e",
      "tree": "4772323ea3f8f6eecf28f47bc45b783cca9be5d7",
      "parents": [
        "2d39f683c5f48bfdd574d4c3c188ae9b15747c65"
      ],
      "author": {
        "name": "San Mehat",
        "email": "san@google.com",
        "time": "Sat Oct 10 09:35:24 2009 -0700"
      },
      "committer": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Mon Apr 09 13:57:50 2012 -0700"
      },
      "message": "block: genhd: Add disk/partition specific uevent callbacks for partition info\n\nFor disk devices, a new uevent parameter \u0027NPARTS\u0027 specifies the number\nof partitions detected by the kernel. Partition devices get \u0027PARTN\u0027 which\nspecifies the partitions index in the table, and \u0027PARTNAME\u0027, which\nspecifies PARTNAME specifices the partition name of a partition device\n\nSigned-off-by: Dima Zavin \u003cdima@android.com\u003e\n"
    },
    {
      "commit": "1b2e19f17ed327af6add02978efdf354e4f8e4df",
      "tree": "ad0340b201405fb19eaa7c8e6af0ac395e3dc8bd",
      "parents": [
        "407ac95e2271a310016ced97f407676e79c53c06"
      ],
      "author": {
        "name": "Shaohua Li",
        "email": "shli@fusionio.com",
        "time": "Fri Apr 06 11:37:47 2012 -0600"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@kernel.dk",
        "time": "Fri Apr 06 11:37:47 2012 -0600"
      },
      "message": "block: make auto block plug flush threshold per-disk based\n\nWe do auto block plug flush to reduce latency, the threshold is 16\nrequests. This works well if the task is accessing one or two drives.\nThe problem is if the task is accessing a raid 0 device and the raid\ndisk number is big, say 8 or 16, 16/8 \u003d 2 or 16/16\u003d1, we will have\nheavy lock contention.\n\nThis patch makes the threshold per-disk based. The latency should be\nstill ok accessing one or two drives. The setup with application\naccessing a lot of drives in the meantime uaually is big machine,\navoiding lock contention is more important, because any contention\nwill actually increase latency.\n\nSigned-off-by: Shaohua Li \u003cshli@fusionio.com\u003e\nSigned-off-by: Jens Axboe \u003caxboe@kernel.dk\u003e\n"
    },
    {
      "commit": "5bf14c0727a07ded1bd9fa6d77923d7e6dc32833",
      "tree": "db1c4db0ece7ec7f416c9581eef3bdf172a73864",
      "parents": [
        "8bcb6c7d48eb341b1f49f814cdcbe05eb6f15680"
      ],
      "author": {
        "name": "Tao Ma",
        "email": "boyu.mt@taobao.com",
        "time": "Sun Apr 01 14:33:39 2012 -0700"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@kernel.dk",
        "time": "Sun Apr 01 14:33:39 2012 -0700"
      },
      "message": "block: Make cfq_target_latency tunable through sysfs.\n\nIn cfq, when we calculate a time slice for a process(or a cfqq to\nbe precise), we have to consider the cfq_target_latency so that all the\nsync request have an estimated latency(300ms) and it is controlled by\ncfq_target_latency. But in some hadoop test, we have found that if\nthere are many processes doing sequential read(24 for example), the\nthroughput is bad because every process can only work for about 25ms\nand the cfqq is switched. That leads to a higher disk seek. We can\nachive the good throughput by setting low_latency\u003d0, but then some\nread\u0027s latency is too much for the application.\n\nSo this patch makes cfq_target_latency tunable through sysfs so that\nwe can tune it and find some magic number which is not bad for both\nthe throughput and the read latency.\n\nCc: Jens Axboe \u003caxboe@kernel.dk\u003e\nSigned-off-by: Tao Ma \u003cboyu.mt@taobao.com\u003e\nSigned-off-by: Jens Axboe \u003caxboe@kernel.dk\u003e\n"
    },
    {
      "commit": "8bcb6c7d48eb341b1f49f814cdcbe05eb6f15680",
      "tree": "83ff62ab93d0cf2c2687e5ca8799cac4c5dcfa25",
      "parents": [
        "00380a404fc4235e9b8b39598138bd3223a27b8a"
      ],
      "author": {
        "name": "Andi Kleen",
        "email": "ak@linux.intel.com",
        "time": "Fri Mar 30 12:33:28 2012 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@kernel.dk",
        "time": "Fri Mar 30 12:33:28 2012 +0200"
      },
      "message": "block: use lockdep_assert_held for queue locking\n\nInstead of an ugly open coded variant.\n\nCc: axboe@kernel.dk\nSigned-off-by: Andi Kleen \u003cak@linux.intel.com\u003e\nSigned-off-by: Jens Axboe \u003caxboe@kernel.dk\u003e\n"
    },
    {
      "commit": "a76e99abc558aed633ba28ff61c5328116292bf3",
      "tree": "60f7677f0baafa00825accc1214839246b3e78dd",
      "parents": [
        "a54734678ff9cb97938b9f7648547174f3b118e4",
        "1d05f993784973189395051cc711fdd6dd5eb389"
      ],
      "author": {
        "name": "Rohit Vaswani",
        "email": "rvaswani@codeaurora.org",
        "time": "Fri Mar 30 00:09:34 2012 -0700"
      },
      "committer": {
        "name": "Rohit Vaswani",
        "email": "rvaswani@codeaurora.org",
        "time": "Fri Mar 30 00:09:34 2012 -0700"
      },
      "message": "Merge branch \u0027Linux 3.0.21\u0027 into msm-3.0\n\nMerge Upstream\u0027s stable 3.0.21 branch into msm-3.0\nThis consists 814 commits and some merge conflicts.\n\nThe merge conflicts are because of some local changes to\nmsm-3.0 as well as some conflicts between google\u0027s tree and\nthe upstream tree.\n\nConflicts:\n\tarch/arm/kernel/head.S\n\tdrivers/bluetooth/ath3k.c\n\tdrivers/bluetooth/btusb.c\n\tdrivers/mmc/core/core.c\n\tdrivers/tty/serial/serial_core.c\n\tdrivers/usb/host/ehci-hub.c\n\tdrivers/usb/serial/qcserial.c\n\tfs/namespace.c\n\tfs/proc/base.c\n\nChange-Id: I62e2edbe213f84915e27f8cd6e4f6ce23db22a21\nSigned-off-by: Rohit Vaswani \u003crvaswani@codeaurora.org\u003e\n"
    },
    {
      "commit": "00380a404fc4235e9b8b39598138bd3223a27b8a",
      "tree": "03bbdd6c312392e243539cb29f47f65e7bfe761a",
      "parents": [
        "c16fa4f2ad19908a47c63d8fa436a1178438c7e7"
      ],
      "author": {
        "name": "Dan Carpenter",
        "email": "dan.carpenter@oracle.com",
        "time": "Fri Mar 23 09:58:54 2012 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@kernel.dk",
        "time": "Fri Mar 23 09:58:54 2012 +0100"
      },
      "message": "block: blk_alloc_queue_node(): use caller\u0027s GFP flags instead of GFP_KERNEL\n\nWe should use the GFP flags that the caller specified instead of picking\nour own.  All the callers specify GFP_KERNEL so this doesn\u0027t make a\ndifference to how the kernel runs, it\u0027s just a cleanup.\n\nSigned-off-by: Dan Carpenter \u003cdan.carpenter@oracle.com\u003e\nSigned-off-by: Jens Axboe \u003caxboe@kernel.dk\u003e\n"
    },
    {
      "commit": "0d9cabdccedb79ee5f27b77ff51f29a9e7d23275",
      "tree": "8bfb64c3672d058eb90aec3c3a9c4f61cef9097c",
      "parents": [
        "701085b219016d38f105b031381b9cee6200253a",
        "3ce3230a0cff484e5130153f244d4fb8a56b3a8b"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Mar 20 18:11:21 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Mar 20 18:11:21 2012 -0700"
      },
      "message": "Merge branch \u0027for-3.4\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tj/cgroup\n\nPull cgroup changes from Tejun Heo:\n \"Out of the 8 commits, one fixes a long-standing locking issue around\n  tasklist walking and others are cleanups.\"\n\n* \u0027for-3.4\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tj/cgroup:\n  cgroup: Walk task list under tasklist_lock in cgroup_enable_task_cg_list\n  cgroup: Remove wrong comment on cgroup_enable_task_cg_list()\n  cgroup: remove cgroup_subsys argument from callbacks\n  cgroup: remove extra calls to find_existing_css_set\n  cgroup: replace tasklist_lock with rcu_read_lock\n  cgroup: simplify double-check locking in cgroup_attach_proc\n  cgroup: move struct cgroup_pidlist out from the header file\n  cgroup: remove cgroup_attach_task_current_cg()\n"
    },
    {
      "commit": "2ba68940c893c8f0bfc8573c041254251bb6aeab",
      "tree": "fa83ebb01d32abd98123fa28f9f6f0b3eaeee25d",
      "parents": [
        "9c2b957db1772ebf942ae7a9346b14eba6c8ca66",
        "600e145882802d6ccbfe2c4aea243d97caeb91a9"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Mar 20 10:31:44 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Mar 20 10:31:44 2012 -0700"
      },
      "message": "Merge branch \u0027sched-core-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip\n\nPull scheduler changes for v3.4 from Ingo Molnar\n\n* \u0027sched-core-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: (27 commits)\n  printk: Make it compile with !CONFIG_PRINTK\n  sched/x86: Fix overflow in cyc2ns_offset\n  sched: Fix nohz load accounting -- again!\n  sched: Update yield() docs\n  printk/sched: Introduce special printk_sched() for those awkward moments\n  sched/nohz: Correctly initialize \u0027next_balance\u0027 in \u0027nohz\u0027 idle balancer\n  sched: Cleanup cpu_active madness\n  sched: Fix load-balance wreckage\n  sched: Clean up parameter passing of proc_sched_autogroup_set_nice()\n  sched: Ditch per cgroup task lists for load-balancing\n  sched: Rename load-balancing fields\n  sched: Move load-balancing arguments into helper struct\n  sched/rt: Do not submit new work when PI-blocked\n  sched/rt: Prevent idle task boosting\n  sched/wait: Add __wake_up_all_locked() API\n  sched/rt: Document scheduler related skip-resched-check sites\n  sched/rt: Use schedule_preempt_disabled()\n  sched/rt: Add schedule_preempt_disabled()\n  sched/rt: Do not throttle when PI boosting\n  sched/rt: Keep period timer ticking when rt throttling is active\n  ...\n"
    },
    {
      "commit": "f1cbd03f5eabb75ea8ace23b47d2209f10871c16",
      "tree": "2ac398bd1a50ce135461fae5b5e91ba05831af84",
      "parents": [
        "ff398c45b03d9d64135d928c0146d8c38a70fd3b",
        "ff8c1474cc2f5e11414c71ec4d739c18e6e669c0"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Mar 14 17:16:45 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Mar 14 17:16:45 2012 -0700"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.dk/linux-block\n\nPull block fixes from Jens Axboe:\n \"Been sitting on this for a while, but lets get this out the door.\n  This fixes various important bugs for 3.3 final, along with a few more\n  trivial ones.  Please pull!\"\n\n* \u0027for-linus\u0027 of git://git.kernel.dk/linux-block:\n  block: fix ioc leak in put_io_context\n  block, sx8: fix pointer math issue getting fw version\n  Block: use a freezable workqueue for disk-event polling\n  drivers/block/DAC960: fix -Wuninitialized warning\n  drivers/block/DAC960: fix DAC960_V2_IOCTL_Opcode_T -Wenum-compare warning\n  block: fix __blkdev_get and add_disk race condition\n  block: Fix setting bio flags in drivers (sd_dif/floppy)\n  block: Fix NULL pointer dereference in sd_revalidate_disk\n  block: exit_io_context() should call elevator_exit_icq_fn()\n  block: simplify ioc_release_fn()\n  block: replace icq-\u003echanged with icq-\u003eflags\n"
    },
    {
      "commit": "ff8c1474cc2f5e11414c71ec4d739c18e6e669c0",
      "tree": "d498e6e97243a25d20100b9c5a1cee8c73920fb7",
      "parents": [
        "ea5f4db8ece896c2ab9eafa0924148a2596c52e4"
      ],
      "author": {
        "name": "Xiaotian Feng",
        "email": "xtfeng@gmail.com",
        "time": "Wed Mar 14 15:34:48 2012 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@kernel.dk",
        "time": "Wed Mar 14 15:34:48 2012 +0100"
      },
      "message": "block: fix ioc leak in put_io_context\n\nWhen put_io_context is called, if ioc-\u003eicq_list is empty and refcount\nis 1, kernel will not free the ioc.\n\nThis is caught by following kmemleak:\n\nunreferenced object 0xffff880036349fe0 (size 216):\n  comm \"sh\", pid 2137, jiffies 4294931140 (age 290579.412s)\n  hex dump (first 32 bytes):\n    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................\n    01 00 01 00 ad 4e ad de ff ff ff ff 00 00 00 00  .....N..........\n  backtrace:\n    [\u003cffffffff8169f926\u003e] kmemleak_alloc+0x26/0x50\n    [\u003cffffffff81195a9c\u003e] kmem_cache_alloc_node+0x1cc/0x2a0\n    [\u003cffffffff81356b67\u003e] create_io_context_slowpath+0x27/0x130\n    [\u003cffffffff81356d2b\u003e] get_task_io_context+0xbb/0xf0\n    [\u003cffffffff81055f0e\u003e] copy_process+0x188e/0x18b0\n    [\u003cffffffff8105609b\u003e] do_fork+0x11b/0x420\n    [\u003cffffffff810247f8\u003e] sys_clone+0x28/0x30\n    [\u003cffffffff816d3373\u003e] stub_clone+0x13/0x20\n    [\u003cffffffffffffffff\u003e] 0xffffffffffffffff\n\nioc should be freed if ioc-\u003eicq_list is empty.\nSigned-off-by: Xiaotian Feng \u003cdannyfeng@tencent.com\u003e\nAcked-by: Vivek Goyal \u003cvgoyal@redhat.com\u003e\nAcked-by: Tejun Heo \u003ctj@kernel.org\u003e\nSigned-off-by: Jens Axboe \u003caxboe@kernel.dk\u003e\n"
    },
    {
      "commit": "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": "fe316bf2d5847bc5dd975668671a7b1067603bc7",
      "tree": "617f6a89b96a8c074d0a2fc1ef4ffc259fb4ed2f",
      "parents": [
        "621032ad6eaabf2fe771c4fa0d8f58e1fcfcdba6"
      ],
      "author": {
        "name": "Jun\u0027ichi Nomura",
        "email": "j-nomura@ce.jp.nec.com",
        "time": "Fri Mar 02 10:38:33 2012 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@kernel.dk",
        "time": "Fri Mar 02 10:38:33 2012 +0100"
      },
      "message": "block: Fix NULL pointer dereference in sd_revalidate_disk\n\nSince 2.6.39 (1196f8b), when a driver returns -ENOMEDIUM for open(),\n__blkdev_get() calls rescan_partitions() to remove\nin-kernel partition structures and raise KOBJ_CHANGE uevent.\n\nHowever it ends up calling driver\u0027s revalidate_disk without open\nand could cause oops.\n\nIn the case of SCSI:\n\n  process A                  process B\n  ----------------------------------------------\n  sys_open\n    __blkdev_get\n      sd_open\n        returns -ENOMEDIUM\n                             scsi_remove_device\n                               \u003cscsi_device torn down\u003e\n      rescan_partitions\n        sd_revalidate_disk\n          \u003coops\u003e\nOopses are reported here:\nhttp://marc.info/?l\u003dlinux-scsi\u0026m\u003d132388619710052\n\nThis patch separates the partition invalidation from rescan_partitions()\nand use it for -ENOMEDIUM case.\n\nReported-by: Huajun Li \u003chuajun.li.lee@gmail.com\u003e\nSigned-off-by: Jun\u0027ichi Nomura \u003cj-nomura@ce.jp.nec.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": "7e4d960993331e92567f0180e45322a93e6780ba",
      "tree": "4d7444035303fc0b545e88afbd894176344fb2a3",
      "parents": [
        "de5bdff7a72acc281219be2b8edeeca1fd81c542",
        "164974a8f2a482f1abcb027c6d1a89dd79b14297"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Thu Mar 01 10:26:41 2012 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Thu Mar 01 10:26:43 2012 +0100"
      },
      "message": "Merge branch \u0027linus\u0027 into sched/core\n\nMerge reason: we\u0027ll queue up dependent patches.\n\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "97387e3baaf3c35ad560f8878e943c720a77da1b",
      "tree": "fb7ca5625edc0693388a1355b85ed62fc8a5b221",
      "parents": [
        "9b556248ecb059095e000f77c4b84899feb50098"
      ],
      "author": {
        "name": "Anton Altaparmakov",
        "email": "anton@tuxera.com",
        "time": "Fri Feb 24 09:37:42 2012 +0000"
      },
      "committer": {
        "name": "Anton Altaparmakov",
        "email": "anton@tuxera.com",
        "time": "Fri Feb 24 09:37:42 2012 +0000"
      },
      "message": "LDM: Fix reassembly of extended VBLKs.\n\nFrom: Ben Hutchings \u003cben@decadent.org.uk\u003e\n\nExtended VBLKs (those larger than the preset VBLK size) are divided\ninto fragments, each with its own VBLK header.  Our LDM implementation\ngenerally assumes that each VBLK is contiguous in memory, so these\nfragments must be assembled before further processing.\n\nCurrently the reassembly seems to be done quite wrongly - no VBLK\nheader is copied into the contiguous buffer, and the length of the\nheader is subtracted twice from each fragment.  Also the total\nlength of the reassembled VBLK is calculated incorrectly.\n\nSigned-off-by: Ben Hutchings \u003cben@decadent.org.uk\u003e\nSigned-off-by: Anton Altaparmakov \u003canton@tuxera.com\u003e\n"
    },
    {
      "commit": "621032ad6eaabf2fe771c4fa0d8f58e1fcfcdba6",
      "tree": "903f4b1ae7dc9aa4f0538b606b1c7deb1542e704",
      "parents": [
        "2274b029f640cd652ab59c363e5beebf5f50e609"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Wed Feb 15 09:45:53 2012 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@kernel.dk",
        "time": "Wed Feb 15 09:45:53 2012 +0100"
      },
      "message": "block: exit_io_context() should call elevator_exit_icq_fn()\n\nWhile updating locking, b2efa05265 \"block, cfq: unlink\ncfq_io_context\u0027s immediately\" moved elevator_exit_icq_fn() invocation\nfrom exit_io_context() to the final ioc put.  While this doesn\u0027t cause\ncatastrophic failure, it effectively removes task exit notification to\nelevator and cause noticeable IO performance degradation with CFQ.\n\nOn task exit, CFQ used to immediately expire the slice if it was being\nused by the exiting task as no more IO would be issued by the task;\nhowever, after b2efa05265, the notification is lost and disk could sit\nidle needlessly, leading to noticeable IO performance degradation for\ncertain workloads.\n\nThis patch renames ioc_exit_icq() to ioc_destroy_icq(), separates\nelevator_exit_icq_fn() invocation into ioc_exit_icq() and invokes it\nfrom exit_io_context().  ICQ_EXITED flag is added to avoid invoking\nthe callback more than once for the same icq.\n\nWalking icq_list from ioc side and invoking elevator callback requires\nreverse double locking.  This may be better implemented using RCU;\nunfortunately, using RCU isn\u0027t trivial.  e.g. RCU protection would\nneed to cover request_queue and queue_lock switch on cleanup makes\ngrabbing queue_lock from RCU unsafe.  Reverse double locking should\ndo, at least for now.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nReported-and-bisected-by: Shaohua Li \u003cshli@kernel.org\u003e\nLKML-Reference: \u003cCANejiEVzs\u003dpUhQSTvUppkDcc2TNZyfohBRLygW5zFmXyk5A-xQ@mail.gmail.com\u003e\nTested-by: Shaohua Li \u003cshaohua.li@intel.com\u003e\nSigned-off-by: Jens Axboe \u003caxboe@kernel.dk\u003e\n"
    },
    {
      "commit": "2274b029f640cd652ab59c363e5beebf5f50e609",
      "tree": "652a2e774c537b83cd70481a936f5c7485436491",
      "parents": [
        "d705ae6b133f9f6a8beee617b1224b6a5c99c5da"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Wed Feb 15 09:45:52 2012 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@kernel.dk",
        "time": "Wed Feb 15 09:45:52 2012 +0100"
      },
      "message": "block: simplify ioc_release_fn()\n\nReverse double lock dancing in ioc_release_fn() can be simplified by\njust using trylock on the queue_lock and back out from ioc lock on\ntrylock failure.  Simplify it.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nTested-by: Shaohua Li \u003cshaohua.li@intel.com\u003e\nSigned-off-by: Jens Axboe \u003caxboe@kernel.dk\u003e\n"
    },
    {
      "commit": "d705ae6b133f9f6a8beee617b1224b6a5c99c5da",
      "tree": "b1a0b09ae01f8385e66c021c338106b88e8d23f8",
      "parents": [
        "7ada1dd62804ca9ce1cb8666c6e563cd92fa50c1"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Wed Feb 15 09:45:49 2012 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@kernel.dk",
        "time": "Wed Feb 15 09:45:49 2012 +0100"
      },
      "message": "block: replace icq-\u003echanged with icq-\u003eflags\n\nicq-\u003echanged was used for ICQ_*_CHANGED bits.  Rename it to flags and\naccess it under ioc-\u003elock instead of using atomic bitops.\nioc_get_changed() is added so that the changed part can be fetched and\ncleared as before.\n\nicq-\u003eflags will be used to carry other flags.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nTested-by: Shaohua Li \u003cshaohua.li@intel.com\u003e\nSigned-off-by: Jens Axboe \u003caxboe@kernel.dk\u003e\n"
    },
    {
      "commit": "d8c66c5d59247e25a69428aced0b79d33b9c66d6",
      "tree": "1aed7dc560df36157d8cde6fdebc1d86f4ed61ad",
      "parents": [
        "f6302f1bcd75a042df69866d98b8d775a668f8f1"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Sat Feb 11 12:37:25 2012 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@kernel.dk",
        "time": "Sat Feb 11 12:37:25 2012 +0100"
      },
      "message": "block: fix lockdep warning on io_context release put_io_context()\n\n11a3122f6c \"block: strip out locking optimization in put_io_context()\"\nremoved ioc_lock depth lockdep annoation along with locking\noptimization; however, while recursing from put_io_context() is no\nlonger possible, ioc_release_fn() may still end up putting the last\nreference of another ioc through elevator, which wlil grab ioc-\u003elock\ntriggering spurious (as the ioc is always different one) A-A deadlock\nwarning.\n\nAs this can only happen one time from ioc_release_fn(), using non-zero\nsubclass from ioc_release_fn() is enough.  Use subclass 1.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nSigned-off-by: Jens Axboe \u003caxboe@kernel.dk\u003e\n"
    },
    {
      "commit": "37b40adf2d1b4a5e51323be73ccf8ddcf3f15dd3",
      "tree": "39c935adb74eccf088dabad743425a822a843910",
      "parents": [
        "07c2bd37350c9b1af71b35d05f16e300a6602948"
      ],
      "author": {
        "name": "Stanislaw Gruszka",
        "email": "sgruszka@redhat.com",
        "time": "Wed Feb 08 20:02:03 2012 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@kernel.dk",
        "time": "Wed Feb 08 20:02:03 2012 +0100"
      },
      "message": "bsg: fix sysfs link remove warning\n\nWe create \"bsg\" link if q-\u003ekobj.sd is not NULL, so remove it only\nwhen the same condition is true.\n\nFixes:\n\nWARNING: at fs/sysfs/inode.c:323 sysfs_hash_and_remove+0x2b/0x77()\nsysfs: can not remove \u0027bsg\u0027, no directory\nCall Trace:\n  [\u003cc0429683\u003e] warn_slowpath_common+0x6a/0x7f\n  [\u003cc0537a68\u003e] ? sysfs_hash_and_remove+0x2b/0x77\n  [\u003cc042970b\u003e] warn_slowpath_fmt+0x2b/0x2f\n  [\u003cc0537a68\u003e] sysfs_hash_and_remove+0x2b/0x77\n  [\u003cc053969a\u003e] sysfs_remove_link+0x20/0x23\n  [\u003cc05d88f1\u003e] bsg_unregister_queue+0x40/0x6d\n  [\u003cc0692263\u003e] __scsi_remove_device+0x31/0x9d\n  [\u003cc069149f\u003e] scsi_forget_host+0x41/0x52\n  [\u003cc0689fa9\u003e] scsi_remove_host+0x71/0xe0\n  [\u003cf7de5945\u003e] quiesce_and_remove_host+0x51/0x83 [usb_storage]\n  [\u003cf7de5a1e\u003e] usb_stor_disconnect+0x18/0x22 [usb_storage]\n  [\u003cc06c29de\u003e] usb_unbind_interface+0x4e/0x109\n  [\u003cc067a80f\u003e] __device_release_driver+0x6b/0xa6\n  [\u003cc067a861\u003e] device_release_driver+0x17/0x22\n  [\u003cc067a46a\u003e] bus_remove_device+0xd6/0xe6\n  [\u003cc06785e2\u003e] device_del+0xf2/0x137\n  [\u003cc06c101f\u003e] usb_disable_device+0x94/0x1a0\n\nSigned-off-by: Stanislaw Gruszka \u003csgruszka@redhat.com\u003e\nSigned-off-by: Jens Axboe \u003caxboe@kernel.dk\u003e\n"
    },
    {
      "commit": "07c2bd37350c9b1af71b35d05f16e300a6602948",
      "tree": "e45ee2952fb78d6d8f2372c8ea1f854da825fa90",
      "parents": [
        "050c8ea80e3e90019d9e981c6a117ef614e882ed"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Wed Feb 08 09:19:42 2012 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@kernel.dk",
        "time": "Wed Feb 08 09:19:42 2012 +0100"
      },
      "message": "block: don\u0027t call elevator callbacks for plug merges\n\nPlug merge calls two elevator callbacks outside queue lock -\nelevator_allow_merge_fn() and elevator_bio_merged_fn().  Although\nattempt_plug_merge() suggests that elevator is guaranteed to be there\nthrough the existing request on the plug list, nothing prevents plug\nmerge from calling into dying or initializing elevator.\n\nFor regular merges, bypass ensures elvpriv count to reach zero, which\nin turn prevents merges as all !ELVPRIV requests get REQ_SOFTBARRIER\nfrom forced back insertion.  Plug merge doesn\u0027t check ELVPRIV, and, as\nthe requests haven\u0027t gone through elevator insertion yet, it doesn\u0027t\nhave SOFTBARRIER set allowing merges on a bypassed queue.\n\nThis, for example, leads to the following crash during elevator\nswitch.\n\n BUG: unable to handle kernel NULL pointer dereference at 0000000000000008\n IP: [\u003cffffffff813b34e9\u003e] cfq_allow_merge+0x49/0xa0\n PGD 112cbc067 PUD 115d5c067 PMD 0\n Oops: 0000 [#1] PREEMPT SMP\n CPU 1\n Modules linked in: deadline_iosched\n\n Pid: 819, comm: dd Not tainted 3.3.0-rc2-work+ #76 Bochs Bochs\n RIP: 0010:[\u003cffffffff813b34e9\u003e]  [\u003cffffffff813b34e9\u003e] cfq_allow_merge+0x49/0xa0\n RSP: 0018:ffff8801143a38f8  EFLAGS: 00010297\n RAX: 0000000000000000 RBX: ffff88011817ce28 RCX: ffff880116eb6cc0\n RDX: 0000000000000000 RSI: ffff880118056e20 RDI: ffff8801199512f8\n RBP: ffff8801143a3908 R08: 0000000000000000 R09: 0000000000000000\n R10: 0000000000000001 R11: 0000000000000000 R12: ffff880118195708\n R13: ffff880118052aa0 R14: ffff8801143a3d50 R15: ffff880118195708\n FS:  00007f19f82cb700(0000) GS:ffff88011fc80000(0000) knlGS:0000000000000000\n CS:  0010 DS: 0000 ES: 0000 CR0: 000000008005003b\n CR2: 0000000000000008 CR3: 0000000112c6a000 CR4: 00000000000006e0\n DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000\n DR3: 0000000000000000 DR6: 00000000ffff0ff0 DR7: 0000000000000400\n Process dd (pid: 819, threadinfo ffff8801143a2000, task ffff880116eb6cc0)\n Stack:\n  ffff88011817ce28 ffff880118195708 ffff8801143a3928 ffffffff81391bba\n  ffff88011817ce28 ffff880118195708 ffff8801143a3948 ffffffff81391bf1\n  ffff88011817ce28 0000000000000000 ffff8801143a39a8 ffffffff81398e3e\n Call Trace:\n  [\u003cffffffff81391bba\u003e] elv_rq_merge_ok+0x4a/0x60\n  [\u003cffffffff81391bf1\u003e] elv_try_merge+0x21/0x40\n  [\u003cffffffff81398e3e\u003e] blk_queue_bio+0x8e/0x390\n  [\u003cffffffff81396a5a\u003e] generic_make_request+0xca/0x100\n  [\u003cffffffff81396b04\u003e] submit_bio+0x74/0x100\n  [\u003cffffffff811d45c2\u003e] __blockdev_direct_IO+0x1ce2/0x3450\n  [\u003cffffffff811d0dc7\u003e] blkdev_direct_IO+0x57/0x60\n  [\u003cffffffff811460b5\u003e] generic_file_aio_read+0x6d5/0x760\n  [\u003cffffffff811986b2\u003e] do_sync_read+0xe2/0x120\n  [\u003cffffffff81199345\u003e] vfs_read+0xc5/0x180\n  [\u003cffffffff81199501\u003e] sys_read+0x51/0x90\n  [\u003cffffffff81aeac12\u003e] system_call_fastpath+0x16/0x1b\n\nThere are multiple ways to fix this including making plug merge check\nELVPRIV; however,\n\n* Calling into elevator outside queue lock is confusing and\n  error-prone.\n\n* Requests on plug list aren\u0027t known to the elevator.  They aren\u0027t on\n  the elevator yet, so there\u0027s no elevator specific state to update.\n\n* Given the nature of plug merges - collecting bio\u0027s for the same\n  purpose from the same issuer - elevator specific restrictions aren\u0027t\n  applicable.\n\nSo, simply don\u0027t call into elevator methods from plug merge by moving\nelv_bio_merged() from bio_attempt_*_merge() to blk_queue_bio(), and\nusing blk_try_merge() in attempt_plug_merge().\n\nThis is based on Jens\u0027 patch to skip elevator_allow_merge_fn() from\nplug merge.\n\nNote that this makes per-cgroup merged stats skip plug merging.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nLKML-Reference: \u003c4F16F3CA.90904@kernel.dk\u003e\nOriginal-patch-by: Jens Axboe \u003caxboe@kernel.dk\u003e\nSigned-off-by: Jens Axboe \u003caxboe@kernel.dk\u003e\n"
    },
    {
      "commit": "050c8ea80e3e90019d9e981c6a117ef614e882ed",
      "tree": "e1c53f17a93ba48b9aedb0c1560dfb022733845f",
      "parents": [
        "4e8670e26135d8fbfd5e084fddc1a8ed9f8eb4cb"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Wed Feb 08 09:19:38 2012 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@kernel.dk",
        "time": "Wed Feb 08 09:19:38 2012 +0100"
      },
      "message": "block: separate out blk_rq_merge_ok() and blk_try_merge() from elevator functions\n\nblk_rq_merge_ok() is the elevator-neutral part of merge eligibility\ntest.  blk_try_merge() determines merge direction and expects the\ncaller to have tested elv_rq_merge_ok() previously.\n\nelv_rq_merge_ok() now wraps blk_rq_merge_ok() and then calls\nelv_iosched_allow_merge().  elv_try_merge() is removed and the two\ncallers are updated to call elv_rq_merge_ok() explicitly followed by\nblk_try_merge().  While at it, make rq_merge_ok() functions return\nbool.\n\nThis is to prepare for plug merge update and doesn\u0027t introduce any\nbehavior change.\n\nThis is based on Jens\u0027 patch to skip elevator_allow_merge_fn() from\nplug merge.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nLKML-Reference: \u003c4F16F3CA.90904@kernel.dk\u003e\nOriginal-patch-by: Jens Axboe \u003caxboe@kernel.dk\u003e\nSigned-off-by: Jens Axboe \u003caxboe@kernel.dk\u003e\n"
    },
    {
      "commit": "11a3122f6cf2d988a77eb8883d0fc49cd013a6d5",
      "tree": "ded8ea8a2982754ff0c58448a7ed2e59487104cb",
      "parents": [
        "822bfa51ce44f2c63c300fdb76dc99c4d5a5ca9f"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Tue Feb 07 07:51:30 2012 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@kernel.dk",
        "time": "Tue Feb 07 07:51:30 2012 +0100"
      },
      "message": "block: strip out locking optimization in put_io_context()\n\nput_io_context() performed a complex trylock dancing to avoid\ndeferring ioc release to workqueue.  It was also broken on UP because\ntrylock was always assumed to succeed which resulted in unbalanced\npreemption count.\n\nWhile there are ways to fix the UP breakage, even the most\npathological microbench (forced ioc allocation and tight fork/exit\nloop) fails to show any appreciable performance benefit of the\noptimization.  Strip it out.  If there turns out to be workloads which\nare affected by this change, simpler optimization from the discussion\nthread can be applied later.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nLKML-Reference: \u003c1328514611.21268.66.camel@sli10-conroe\u003e\nSigned-off-by: Jens Axboe \u003caxboe@kernel.dk\u003e\n"
    },
    {
      "commit": "9fa73472ddbcd3da87d35a7f4566eaaf345f798e",
      "tree": "6564619c63104411c1370249029f2389510790c6",
      "parents": [
        "05c30b9551f1904d9950ad0d28e65fc4ff3c8a8e"
      ],
      "author": {
        "name": "Shaohua Li",
        "email": "shaohua.li@intel.com",
        "time": "Mon Feb 06 08:57:29 2012 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@kernel.dk",
        "time": "Mon Feb 06 08:57:29 2012 +0100"
      },
      "message": "block: fix ioc locking warning\n\nMeelis reported a warning:\n\nWARNING: at kernel/timer.c:1122 run_timer_softirq+0x199/0x1ec()\nHardware name: 939Dual-SATA2\ntimer: cfq_idle_slice_timer+0x0/0xaa preempt leak: 00000102 -\u003e 00000103\nModules linked in: sr_mod cdrom videodev media drm_kms_helper ohci_hcd ehci_hcd v4l2_compat_ioctl32 usbcore i2c_ali15x3 snd_seq drm snd_timer snd_seq\nPid: 0, comm: swapper Not tainted 3.3.0-rc2-00110-gd125666 #176\nCall Trace:\n \u003cIRQ\u003e  [\u003cffffffff81022aaa\u003e] warn_slowpath_common+0x7e/0x96\n [\u003cffffffff8114c485\u003e] ? cfq_slice_expired+0x1d/0x1d\n [\u003cffffffff81022b56\u003e] warn_slowpath_fmt+0x41/0x43\n [\u003cffffffff8114c526\u003e] ? cfq_idle_slice_timer+0xa1/0xaa\n [\u003cffffffff8114c485\u003e] ? cfq_slice_expired+0x1d/0x1d\n [\u003cffffffff8102c124\u003e] run_timer_softirq+0x199/0x1ec\n [\u003cffffffff81047a53\u003e] ? timekeeping_get_ns+0x12/0x31\n [\u003cffffffff810145fd\u003e] ? apic_write+0x11/0x13\n [\u003cffffffff81027475\u003e] __do_softirq+0x74/0xfa\n [\u003cffffffff812f337a\u003e] call_softirq+0x1a/0x30\n [\u003cffffffff81002ff9\u003e] do_softirq+0x31/0x68\n [\u003cffffffff810276cf\u003e] irq_exit+0x3d/0xa3\n [\u003cffffffff81014aca\u003e] smp_apic_timer_interrupt+0x6b/0x77\n [\u003cffffffff812f2de9\u003e] apic_timer_interrupt+0x69/0x70\n \u003cEOI\u003e  [\u003cffffffff81040136\u003e] ? sched_clock_cpu+0x73/0x7d\n [\u003cffffffff81040136\u003e] ? sched_clock_cpu+0x73/0x7d\n [\u003cffffffff8100801f\u003e] ? default_idle+0x1e/0x32\n [\u003cffffffff81008019\u003e] ? default_idle+0x18/0x32\n [\u003cffffffff810008b1\u003e] cpu_idle+0x87/0xd1\n [\u003cffffffff812de861\u003e] rest_init+0x85/0x89\n [\u003cffffffff81659a4d\u003e] start_kernel+0x2eb/0x2f8\n [\u003cffffffff8165926e\u003e] x86_64_start_reservations+0x7e/0x82\n [\u003cffffffff81659362\u003e] x86_64_start_kernel+0xf0/0xf7\n\nthis_q \u003d\u003d locked_q is possible. There are two problems here:\n1. In UP case, there is preemption counter issue as spin_trylock always\nsuccesses.\n2. In SMP case, the loop breaks too earlier.\n\nSigned-off-by: Shaohua Li \u003cshaohua.li@intel.com\u003e\nReported-by: Meelis Roos \u003cmroos@linux.ee\u003e\nReported-by: Knut Petersen \u003cKnut_Petersen@t-online.de\u003e\nTested-by: Knut Petersen \u003cKnut_Petersen@t-online.de\u003e\nSigned-off-by: Jens Axboe \u003caxboe@kernel.dk\u003e\n"
    },
    {
      "commit": "761b3ef50e1c2649cffbfa67a4dcb2dcdb7982ed",
      "tree": "67ab6a9a2520811c9c0b4d70d1c19b4bfca16237",
      "parents": [
        "61d1d219c4c0761059236a46867bc49943c4d29d"
      ],
      "author": {
        "name": "Li Zefan",
        "email": "lizf@cn.fujitsu.com",
        "time": "Tue Jan 31 13:47:36 2012 +0800"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Thu Feb 02 09:20:22 2012 -0800"
      },
      "message": "cgroup: remove cgroup_subsys argument from callbacks\n\nThe argument is not used at all, and it\u0027s not necessary, because\na specific callback handler of course knows which subsys it\nbelongs to.\n\nNow only -\u003epupulate() takes this argument, because the handlers of\nthis callback always call cgroup_add_file()/cgroup_add_files().\n\nSo we reduce a few lines of code, though the shrinking of object size\nis minimal.\n\n 16 files changed, 113 insertions(+), 162 deletions(-)\n\n   text    data     bss     dec     hex filename\n5486240  656987 7039960 13183187         c928d3 vmlinux.o.orig\n5486170  656987 7039960 13183117         c9288d vmlinux.o\n\nSigned-off-by: Li Zefan \u003clizf@cn.fujitsu.com\u003e\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\n"
    },
    {
      "commit": "39be350127ec60a078edffe5b4915dafba4ba514",
      "tree": "9b1ad6ee75c3b5842434b697b96ccdfbe1a40a2f",
      "parents": [
        "cb297a3e433dbdcf7ad81e0564e7b804c941ff0d"
      ],
      "author": {
        "name": "Peter Zijlstra",
        "email": "a.p.zijlstra@chello.nl",
        "time": "Thu Jan 26 12:44:34 2012 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Fri Jan 27 13:28:48 2012 +0100"
      },
      "message": "sched, block: Unify cache detection\n\nThe block layer has some code trying to determine if two CPUs share a\ncache, the scheduler has a similar function. Expose the function used\nby the scheduler and make the block layer use it, thereby removing the\nblock layers usage of CONFIG_SCHED* and topology bits.\n\nSigned-off-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nAcked-by: Jens Axboe \u003caxboe@kernel.dk\u003e\nLink: http://lkml.kernel.org/r/1327579450.2446.95.camel@twins\n"
    },
    {
      "commit": "8bd8442fec18284924e17a0fa8ef89d98b0a6d71",
      "tree": "94cd21d75673e85efc4442bc639ce15cb12c4aa6",
      "parents": [
        "3b8373b85c761b2a12bdaf9fcee4c7a3eefa8459"
      ],
      "author": {
        "name": "Paolo Bonzini",
        "email": "pbonzini@redhat.com",
        "time": "Thu Jan 12 16:01:28 2012 +0100"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@suse.de",
        "time": "Wed Jan 25 17:24:54 2012 -0800"
      },
      "message": "block: fail SCSI passthrough ioctls on partition devices\n\ncommit 0bfc96cb77224736dfa35c3c555d37b3646ef35e upstream.\n\n[ Changes with respect to 3.3: return -ENOTTY from scsi_verify_blk_ioctl\n  and -ENOIOCTLCMD from sd_compat_ioctl. ]\n\nLinux allows executing the SG_IO ioctl on a partition or LVM volume, and\nwill pass the command to the underlying block device.  This is\nwell-known, but it is also a large security problem when (via Unix\npermissions, ACLs, SELinux or a combination thereof) a program or user\nneeds to be granted access only to part of the disk.\n\nThis patch lets partitions forward a small set of harmless ioctls;\nothers are logged with printk so that we can see which ioctls are\nactually sent.  In my tests only CDROM_GET_CAPABILITY actually occurred.\nOf course it was being sent to a (partition on a) hard disk, so it would\nhave failed with ENOTTY and the patch isn\u0027t changing anything in\npractice.  Still, I\u0027m treating it specially to avoid spamming the logs.\n\nIn principle, this restriction should include programs running with\nCAP_SYS_RAWIO.  If for example I let a program access /dev/sda2 and\n/dev/sdb, it still should not be able to read/write outside the\nboundaries of /dev/sda2 independent of the capabilities.  However, for\nnow programs with CAP_SYS_RAWIO will still be allowed to send the\nioctls.  Their actions will still be logged.\n\nThis patch does not affect the non-libata IDE driver.  That driver\nhowever already tests for bd !\u003d bd-\u003ebd_contains before issuing some\nioctl; it could be restricted further to forbid these ioctls even for\nprograms running with CAP_SYS_ADMIN/CAP_SYS_RAWIO.\n\nCc: linux-scsi@vger.kernel.org\nCc: Jens Axboe \u003caxboe@kernel.dk\u003e\nCc: James Bottomley \u003cJBottomley@parallels.com\u003e\nSigned-off-by: Paolo Bonzini \u003cpbonzini@redhat.com\u003e\n[ Make it also print the command name when warning - Linus ]\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@suse.de\u003e\n\n\n"
    },
    {
      "commit": "3b8373b85c761b2a12bdaf9fcee4c7a3eefa8459",
      "tree": "4960b4933b6eaf81c07f65bbae8d54aa081eadf8",
      "parents": [
        "3ec3f83aee534f732fd7012ff6c04776952e47fd"
      ],
      "author": {
        "name": "Paolo Bonzini",
        "email": "pbonzini@redhat.com",
        "time": "Thu Jan 12 16:01:27 2012 +0100"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@suse.de",
        "time": "Wed Jan 25 17:24:54 2012 -0800"
      },
      "message": "block: add and use scsi_blk_cmd_ioctl\n\ncommit 577ebb374c78314ac4617242f509e2f5e7156649 upstream.\n\nIntroduce a wrapper around scsi_cmd_ioctl that takes a block device.\n\nThe function will then be enhanced to detect partition block devices\nand, in that case, subject the ioctls to whitelisting.\n\nCc: linux-scsi@vger.kernel.org\nCc: Jens Axboe \u003caxboe@kernel.dk\u003e\nCc: James Bottomley \u003cJBottomley@parallels.com\u003e\nSigned-off-by: Paolo Bonzini \u003cpbonzini@redhat.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@suse.de\u003e\n\n"
    },
    {
      "commit": "05c30b9551f1904d9950ad0d28e65fc4ff3c8a8e",
      "tree": "2efdf9cd5e28ee20e9b2824b13e621826d56f19e",
      "parents": [
        "df0793abb929e66606fa25f3875ff1b89de5ad32"
      ],
      "author": {
        "name": "Shaohua Li",
        "email": "shaohua.li@intel.com",
        "time": "Thu Jan 19 09:20:10 2012 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@kernel.dk",
        "time": "Thu Jan 19 09:20:10 2012 +0100"
      },
      "message": "block: fix NULL icq_cache reference\n\nVivek reported a kernel crash:\n[   94.217015] BUG: unable to handle kernel NULL pointer dereference at 000000000000001c\n[   94.218004] IP: [\u003cffffffff81142fae\u003e] kmem_cache_free+0x5e/0x200\n[   94.218004] PGD 13abda067 PUD 137d52067 PMD 0\n[   94.218004] Oops: 0000 [#1] SMP DEBUG_PAGEALLOC\n[   94.218004] CPU 0\n[   94.218004] Modules linked in: [last unloaded: scsi_wait_scan]\n[   94.218004]\n[   94.218004] Pid: 0, comm: swapper/0 Not tainted 3.2.0+ #16 Hewlett-Packard HP xw6600 Workstation/0A9Ch\n[   94.218004] RIP: 0010:[\u003cffffffff81142fae\u003e]  [\u003cffffffff81142fae\u003e] kmem_cache_free+0x5e/0x200\n[   94.218004] RSP: 0018:ffff88013fc03de0  EFLAGS: 00010006\n[   94.218004] RAX: ffffffff81e0d020 RBX: ffff880138b3c680 RCX: 00000001801c001b\n[   94.218004] RDX: 00000000003aac1d RSI: ffff880138b3c680 RDI: ffffffff81142fae\n[   94.218004] RBP: ffff88013fc03e10 R08: ffff880137830238 R09: 0000000000000001\n[   94.218004] R10: 0000000000000000 R11: 0000000000000000 R12: 0000000000000000\n[   94.218004] R13: ffffea0004e2cf00 R14: ffffffff812f6eb6 R15: 0000000000000246\n[   94.218004] FS:  0000000000000000(0000) GS:ffff88013fc00000(0000) knlGS:0000000000000000\n[   94.218004] CS:  0010 DS: 0000 ES: 0000 CR0: 000000008005003b\n[   94.218004] CR2: 000000000000001c CR3: 00000001395ab000 CR4: 00000000000006f0\n[   94.218004] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000\n[   94.218004] DR3: 0000000000000000 DR6: 00000000ffff0ff0 DR7: 0000000000000400\n[   94.218004] Process swapper/0 (pid: 0, threadinfo ffffffff81e00000, task ffffffff81e0d020)\n[   94.218004] Stack:\n[   94.218004]  0000000000000102 ffff88013fc0db20 ffffffff81e22700 ffff880139500f00\n[   94.218004]  0000000000000001 000000000000000a ffff88013fc03e20 ffffffff812f6eb6\n[   94.218004]  ffff88013fc03e90 ffffffff810c8da2 ffffffff81e01fd8 ffff880137830240\n[   94.218004] Call Trace:\n[   94.218004]  \u003cIRQ\u003e\n[   94.218004]  [\u003cffffffff812f6eb6\u003e] icq_free_icq_rcu+0x16/0x20\n[   94.218004]  [\u003cffffffff810c8da2\u003e] __rcu_process_callbacks+0x1c2/0x420\n[   94.218004]  [\u003cffffffff810c9038\u003e] rcu_process_callbacks+0x38/0x250\n[   94.218004]  [\u003cffffffff810405ee\u003e] __do_softirq+0xce/0x3e0\n[   94.218004]  [\u003cffffffff8108ed04\u003e] ? clockevents_program_event+0x74/0x100\n[   94.218004]  [\u003cffffffff81090104\u003e] ? tick_program_event+0x24/0x30\n[   94.218004]  [\u003cffffffff8183ed1c\u003e] call_softirq+0x1c/0x30\n[   94.218004]  [\u003cffffffff8100422d\u003e] do_softirq+0x8d/0xc0\n[   94.218004]  [\u003cffffffff81040c3e\u003e] irq_exit+0xae/0xe0\n[   94.218004]  [\u003cffffffff8183f4be\u003e] smp_apic_timer_interrupt+0x6e/0x99\n[   94.218004]  [\u003cffffffff8183e330\u003e] apic_timer_interrupt+0x70/0x80\n\nOnce a queue is quiesced, it\u0027s not supposed to have any elvpriv data or\nicq\u0027s, and elevator switching depends on that.  Request alloc path\nfollowed the rule for elvpriv data but forgot apply it to icq\u0027s\nleading to the following crash during elevator switch. Fix it by not\nallocating icq\u0027s if ELVPRIV is not set for the request.\n\nReported-by: Vivek Goyal \u003cvgoyal@redhat.com\u003e\nTested-by: Vivek Goyal \u003cvgoyal@redhat.com\u003e\nSigned-off-by: Shaohua Li \u003cshaohua.li@intel.com\u003e\nAcked-by: Tejun Heo \u003ctj@kernel.org\u003e\nSigned-off-by: Jens Axboe \u003caxboe@kernel.dk\u003e\n"
    },
    {
      "commit": "df0793abb929e66606fa25f3875ff1b89de5ad32",
      "tree": "fa53e6e4e7f4a6773f45173132bbfd77908f7c17",
      "parents": [
        "90a4c0f51e8e44111a926be6f4c87af3938a79c3"
      ],
      "author": {
        "name": "Shaohua Li",
        "email": "shaohua.li@intel.com",
        "time": "Thu Jan 19 09:20:09 2012 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@kernel.dk",
        "time": "Thu Jan 19 09:20:09 2012 +0100"
      },
      "message": "block,cfq: change code order\n\ncfq_slice_expired will change saved_workload_slice. It should be called\nfirst so saved_workload_slice is correctly set to 0 after workload type\nis changed.\nThis fixes the code order changed by 54b466e44b1c7.\n\nTested-by: Tetsuo Handa \u003cpenguin-kernel@I-love.SAKURA.ne.jp\u003e\nSigned-off-by: Shaohua Li \u003cshaohua.li@intel.com\u003e\nSigned-off-by: Jens Axboe \u003caxboe@kernel.dk\u003e\n"
    },
    {
      "commit": "54b466e44b1c7809144bbd8cd6be3f85877ca46f",
      "tree": "01c99a8b6fff843ac7c327b8a0c777039e2c405e",
      "parents": [
        "b3c9dd182ed3bdcdaf0e42625a35924b0497afdc"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "axboe@kernel.dk",
        "time": "Tue Jan 17 21:26:11 2012 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@kernel.dk",
        "time": "Tue Jan 17 21:26:11 2012 +0100"
      },
      "message": "cfq-iosched: fix use-after-free of cfqq\n\nWith the changes in life time management between the cfq IO contexts\nand the cfq queues, we now risk having cfqd-\u003eactive_queue being\nfreed when cfq_slice_expired() is being called. cfq_preempt_queue()\ncaches this queue and uses it after calling said function, causing\na use-after-free condition. This triggers the following oops,\nwhen cfqq_type() attempts to dereference it:\n\nBUG: unable to handle kernel paging request at ffff8800746c4f0c\nIP: [\u003cffffffff81266d59\u003e] cfqq_type+0xb/0x20\nPGD 18d4063 PUD 1fe15067 PMD 1ffb9067 PTE 80000000746c4160\nOops: 0000 [#1] SMP DEBUG_PAGEALLOC\nCPU 3\nModules linked in:\n\nPid: 1, comm: init Not tainted 3.2.0-josef+ #367 Bochs Bochs\nRIP: 0010:[\u003cffffffff81266d59\u003e]  [\u003cffffffff81266d59\u003e] cfqq_type+0xb/0x20\nRSP: 0018:ffff880079c11778  EFLAGS: 00010046\nRAX: 0000000000000000 RBX: ffff880076f3df08 RCX: 0000000000000000\nRDX: 0000000000000006 RSI: ffff880074271888 RDI: ffff8800746c4f08\nRBP: ffff880079c11778 R08: 0000000000000078 R09: 0000000000000001\nR10: 09f911029d74e35b R11: 09f911029d74e35b R12: ffff880076f337f0\nR13: ffff8800746c4f08 R14: ffff8800746c4f08 R15: 0000000000000002\nFS:  00007f62fd44f700(0000) GS:ffff88007cd80000(0000) knlGS:0000000000000000\nCS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033\nCR2: ffff8800746c4f0c CR3: 0000000076c21000 CR4: 00000000000006e0\nDR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000\nDR3: 0000000000000000 DR6: 00000000ffff0ff0 DR7: 0000000000000400\nProcess init (pid: 1, threadinfo ffff880079c10000, task ffff880079c0a040)\nStack:\n ffff880079c117c8 ffffffff812683d8 ffff880079c117a8 ffffffff8125de43\n ffff8800744fcf48 ffff880074b43e98 ffff8800770c8828 ffff880074b43e98\n 0000000000000003 0000000000000000 ffff880079c117f8 ffffffff81254149\nCall Trace:\n [\u003cffffffff812683d8\u003e] cfq_insert_request+0x3f5/0x47c\n [\u003cffffffff8125de43\u003e] ? blk_recount_segments+0x20/0x31\n [\u003cffffffff81254149\u003e] __elv_add_request+0x1ca/0x200\n [\u003cffffffff8125aa99\u003e] blk_queue_bio+0x2ef/0x312\n [\u003cffffffff81258f7b\u003e] generic_make_request+0x9f/0xe0\n [\u003cffffffff8125907b\u003e] submit_bio+0xbf/0xca\n [\u003cffffffff81136ec7\u003e] submit_bh+0xdf/0xfe\n [\u003cffffffff81176d04\u003e] ext3_bread+0x50/0x99\n [\u003cffffffff811785b3\u003e] dx_probe+0x38/0x291\n [\u003cffffffff81178864\u003e] ext3_dx_find_entry+0x58/0x219\n [\u003cffffffff81178ad5\u003e] ext3_find_entry+0xb0/0x406\n [\u003cffffffff8110c4d5\u003e] ? cache_alloc_debugcheck_after.isra.46+0x14d/0x1a0\n [\u003cffffffff8110cfbd\u003e] ? kmem_cache_alloc+0xef/0x191\n [\u003cffffffff8117a330\u003e] ext3_lookup+0x39/0xe1\n [\u003cffffffff81119461\u003e] d_alloc_and_lookup+0x45/0x6c\n [\u003cffffffff8111ac41\u003e] do_lookup+0x1e4/0x2f5\n [\u003cffffffff8111aef6\u003e] link_path_walk+0x1a4/0x6ef\n [\u003cffffffff8111b557\u003e] path_lookupat+0x59/0x5ea\n [\u003cffffffff8127406c\u003e] ? __strncpy_from_user+0x30/0x5a\n [\u003cffffffff8111bce0\u003e] do_path_lookup+0x23/0x59\n [\u003cffffffff8111cfd6\u003e] user_path_at_empty+0x53/0x99\n [\u003cffffffff8107b37b\u003e] ? remove_wait_queue+0x51/0x56\n [\u003cffffffff8111d02d\u003e] user_path_at+0x11/0x13\n [\u003cffffffff811141f5\u003e] vfs_fstatat+0x3a/0x64\n [\u003cffffffff8111425a\u003e] vfs_stat+0x1b/0x1d\n [\u003cffffffff81114359\u003e] sys_newstat+0x1a/0x33\n [\u003cffffffff81060e12\u003e] ? task_stopped_code+0x42/0x42\n [\u003cffffffff815d6712\u003e] system_call_fastpath+0x16/0x1b\nCode: 89 e6 48 89 c7 e8 fa ca fe ff 85 c0 74 06 4c 89 2b 41 b6 01 5b 44 89 f0 41 5c 41 5d 41 5e 5d c3 55 48 89 e5 66 66 66 66 90 31 c0 \u003c8b\u003e 57 04 f6 c6 01 74 0b 83 e2 20 83 fa 01 19 c0 83 c0 02 5d c3\nRIP  [\u003cffffffff81266d59\u003e] cfqq_type+0xb/0x20\n RSP \u003cffff880079c11778\u003e\nCR2: ffff8800746c4f0c\n\nGet rid of the caching of cfqd-\u003eactive_queue, and reorder the\ncheck so that it happens before we expire the active queue.\n\nThanks to Tejun for pin pointing the error location.\n\nReported-by: Chris Mason \u003cchris.mason@oracle.com\u003e\nTested-by: Chris Mason \u003cchris.mason@oracle.com\u003e\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": "5d381efb3d1f1ef10535a31ca0dd9b22fe1e1922",
      "tree": "fba354212902ad0c7228bff43a38aca6df47c899",
      "parents": [
        "6898e3bd11cc9a931ef115eee9000ac9d8f8c3cf"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "axboe@kernel.dk",
        "time": "Sun Jan 15 10:29:48 2012 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@kernel.dk",
        "time": "Sun Jan 15 10:29:48 2012 +0100"
      },
      "message": "Revert \"block: recursive merge requests\"\n\nThis reverts commit 274193224cdabd687d804a26e0150bb20f2dd52c.\n\nWe have some problems related to selection of empty queues\nthat need to be resolved, evidence so far points to the\nrecursive merge logic making either being the cause or at\nleast the accelerator for this. So revert it for now, until\nwe figure this out.\n\nSigned-off-by: Jens Axboe \u003caxboe@kernel.dk\u003e\n"
    },
    {
      "commit": "0bfc96cb77224736dfa35c3c555d37b3646ef35e",
      "tree": "af5135c929ee8e1bdb38c306b2634dbc547d5189",
      "parents": [
        "577ebb374c78314ac4617242f509e2f5e7156649"
      ],
      "author": {
        "name": "Paolo Bonzini",
        "email": "pbonzini@redhat.com",
        "time": "Thu Jan 12 16:01:28 2012 +0100"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Jan 14 15:07:24 2012 -0800"
      },
      "message": "block: fail SCSI passthrough ioctls on partition devices\n\nLinux allows executing the SG_IO ioctl on a partition or LVM volume, and\nwill pass the command to the underlying block device.  This is\nwell-known, but it is also a large security problem when (via Unix\npermissions, ACLs, SELinux or a combination thereof) a program or user\nneeds to be granted access only to part of the disk.\n\nThis patch lets partitions forward a small set of harmless ioctls;\nothers are logged with printk so that we can see which ioctls are\nactually sent.  In my tests only CDROM_GET_CAPABILITY actually occurred.\nOf course it was being sent to a (partition on a) hard disk, so it would\nhave failed with ENOTTY and the patch isn\u0027t changing anything in\npractice.  Still, I\u0027m treating it specially to avoid spamming the logs.\n\nIn principle, this restriction should include programs running with\nCAP_SYS_RAWIO.  If for example I let a program access /dev/sda2 and\n/dev/sdb, it still should not be able to read/write outside the\nboundaries of /dev/sda2 independent of the capabilities.  However, for\nnow programs with CAP_SYS_RAWIO will still be allowed to send the\nioctls.  Their actions will still be logged.\n\nThis patch does not affect the non-libata IDE driver.  That driver\nhowever already tests for bd !\u003d bd-\u003ebd_contains before issuing some\nioctl; it could be restricted further to forbid these ioctls even for\nprograms running with CAP_SYS_ADMIN/CAP_SYS_RAWIO.\n\nCc: linux-scsi@vger.kernel.org\nCc: Jens Axboe \u003caxboe@kernel.dk\u003e\nCc: James Bottomley \u003cJBottomley@parallels.com\u003e\nSigned-off-by: Paolo Bonzini \u003cpbonzini@redhat.com\u003e\n[ Make it also print the command name when warning - Linus ]\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "577ebb374c78314ac4617242f509e2f5e7156649",
      "tree": "690ae95d67bb8f9fd66bc0daebc90a46904420ac",
      "parents": [
        "81d48f0aee544885c39ef6e1ffb1175f276e6adf"
      ],
      "author": {
        "name": "Paolo Bonzini",
        "email": "pbonzini@redhat.com",
        "time": "Thu Jan 12 16:01:27 2012 +0100"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Jan 14 15:07:24 2012 -0800"
      },
      "message": "block: add and use scsi_blk_cmd_ioctl\n\nIntroduce a wrapper around scsi_cmd_ioctl that takes a block device.\n\nThe function will then be enhanced to detect partition block devices\nand, in that case, subject the ioctls to whitelisting.\n\nCc: linux-scsi@vger.kernel.org\nCc: Jens Axboe \u003caxboe@kernel.dk\u003e\nCc: James Bottomley \u003cJBottomley@parallels.com\u003e\nSigned-off-by: Paolo Bonzini \u003cpbonzini@redhat.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "ef00f59c95fe6e002e7c6e3663cdea65e253f4cc",
      "tree": "8e84273162b7a743767098cc08b6c6eb2b041281",
      "parents": [
        "b1bd055d397e09f99dcef9b138ed104ff1812fcb"
      ],
      "author": {
        "name": "Martin K. Petersen",
        "email": "martin.petersen@oracle.com",
        "time": "Wed Jan 11 16:29:31 2012 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@kernel.dk",
        "time": "Wed Jan 11 16:29:31 2012 +0100"
      },
      "message": "block: Add BLKROTATIONAL ioctl\n\nIntroduce an ioctl which permits applications to query whether a block\ndevice is rotational.\n\nSigned-off-by: Martin K. Petersen \u003cmartin.petersen@oracle.com\u003e\nSigned-off-by: Jens Axboe \u003caxboe@kernel.dk\u003e\n"
    },
    {
      "commit": "b1bd055d397e09f99dcef9b138ed104ff1812fcb",
      "tree": "e8e1d3d0b6a33859392bcba516933aff256dc4b4",
      "parents": [
        "c98b2cc29af8e84e7364b53e9bb4cc7cfaf62555"
      ],
      "author": {
        "name": "Martin K. Petersen",
        "email": "martin.petersen@oracle.com",
        "time": "Wed Jan 11 16:27:11 2012 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@kernel.dk",
        "time": "Wed Jan 11 16:27:11 2012 +0100"
      },
      "message": "block: Introduce blk_set_stacking_limits function\n\nStacking driver queue limits are typically bounded exclusively by the\ncapabilities of the low level devices, not by the stacking driver\nitself.\n\nThis patch introduces blk_set_stacking_limits() which has more liberal\nmetrics than the default queue limits function. This allows us to\ninherit topology parameters from bottom devices without manually\ntweaking the default limits in each driver prior to calling the stacking\nfunction.\n\nSince there is now a clear distinction between stacking and low-level\ndevices, blk_set_default_limits() has been modified to carry the more\nconservative values that we used to manually set in\nblk_queue_make_request().\n\nSigned-off-by: Martin K. Petersen \u003cmartin.petersen@oracle.com\u003e\nAcked-by: Mike Snitzer \u003csnitzer@redhat.com\u003e\nSigned-off-by: Jens Axboe \u003caxboe@kernel.dk\u003e\n"
    },
    {
      "commit": "db0c2bf69aa095d4a6de7b1145f29fe9a7c0f6a3",
      "tree": "8f38957c01b18edddd44d49ecc3beeac08a20b4e",
      "parents": [
        "ac69e0928054ff29a5049902fb477f9c7605c773",
        "0d19ea866562e46989412a0676412fa0983c9ce7"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Jan 09 12:59:24 2012 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Jan 09 12:59:24 2012 -0800"
      },
      "message": "Merge branch \u0027for-3.3\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tj/cgroup\n\n* \u0027for-3.3\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tj/cgroup: (21 commits)\n  cgroup: fix to allow mounting a hierarchy by name\n  cgroup: move assignement out of condition in cgroup_attach_proc()\n  cgroup: Remove task_lock() from cgroup_post_fork()\n  cgroup: add sparse annotation to cgroup_iter_start() and cgroup_iter_end()\n  cgroup: mark cgroup_rmdir_waitq and cgroup_attach_proc() as static\n  cgroup: only need to check oldcgrp\u003d\u003dnewgrp once\n  cgroup: remove redundant get/put of task struct\n  cgroup: remove redundant get/put of old css_set from migrate\n  cgroup: Remove unnecessary task_lock before fetching css_set on migration\n  cgroup: Drop task_lock(parent) on cgroup_fork()\n  cgroups: remove redundant get/put of css_set from css_set_check_fetched()\n  resource cgroups: remove bogus cast\n  cgroup: kill subsys-\u003ecan_attach_task(), pre_attach() and attach_task()\n  cgroup, cpuset: don\u0027t use ss-\u003epre_attach()\n  cgroup: don\u0027t use subsys-\u003ecan_attach_task() or -\u003eattach_task()\n  cgroup: introduce cgroup_taskset and use it in subsys-\u003ecan_attach(), cancel_attach() and attach()\n  cgroup: improve old cgroup handling in cgroup_attach_proc()\n  cgroup: always lock threadgroup during migration\n  threadgroup: extend threadgroup_lock() to cover exit and exec\n  threadgroup: rename signal-\u003ethreadgroup_fork_lock to -\u003egroup_rwsem\n  ...\n\nFix up conflict in kernel/cgroup.c due to commit e0197aae59e5: \"cgroups:\nfix a css_set not found bug in cgroup_attach_proc\" that already\nmentioned that the bug is fixed (differently) in Tejun\u0027s cgroup\npatchset. This one, in other words.\n"
    },
    {
      "commit": "972b2c719990f91eb3b2310d44ef8a2d38955a14",
      "tree": "b25a250ec5bec4b7b6355d214642d8b57c5cab32",
      "parents": [
        "02550d61f49266930e674286379d3601006b2893",
        "c3aa077648e147783a7a53b409578234647db853"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Jan 08 12:19:57 2012 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Jan 08 12:19:57 2012 -0800"
      },
      "message": "Merge branch \u0027for-linus2\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs\n\n* \u0027for-linus2\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs: (165 commits)\n  reiserfs: Properly display mount options in /proc/mounts\n  vfs: prevent remount read-only if pending removes\n  vfs: count unlinked inodes\n  vfs: protect remounting superblock read-only\n  vfs: keep list of mounts for each superblock\n  vfs: switch -\u003eshow_options() to struct dentry *\n  vfs: switch -\u003eshow_path() to struct dentry *\n  vfs: switch -\u003eshow_devname() to struct dentry *\n  vfs: switch -\u003eshow_stats to struct dentry *\n  switch security_path_chmod() to struct path *\n  vfs: prefer -\u003edentry-\u003ed_sb to -\u003emnt-\u003emnt_sb\n  vfs: trim includes a bit\n  switch mnt_namespace -\u003eroot to struct mount\n  vfs: take /proc/*/mounts and friends to fs/proc_namespace.c\n  vfs: opencode mntget() mnt_set_mountpoint()\n  vfs: spread struct mount - remaining argument of next_mnt()\n  vfs: move fsnotify junk to struct mount\n  vfs: move mnt_devname\n  vfs: move mnt_list to struct mount\n  vfs: switch pnode.h macros to struct mount *\n  ...\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": "d27bf91d1a9ea58a32bf9dd949e93bb1dc1fc9bf",
      "tree": "3b71c18560ce6e675525c0d0899f542fabaa72a4",
      "parents": [
        "afa2450ce311b3182c737c3fda59bb557da93409"
      ],
      "author": {
        "name": "Mike Snitzer",
        "email": "snitzer@redhat.com",
        "time": "Wed Nov 23 10:59:13 2011 +0100"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@suse.de",
        "time": "Fri Jan 06 14:13:48 2012 -0800"
      },
      "message": "block: initialize request_queue\u0027s numa node during\n\ncommit 5151412dd4338b273afdb107c3772528e9e67d92 upstream.\n\nstruct request_queue is allocated with __GFP_ZERO so its \"node\" field is\nzero before initialization.  This causes an oops if node 0 is offline in\nthe page allocator because its zonelists are not initialized.  From Dave\nYoung\u0027s dmesg:\n\n\tSRAT: Node 1 PXM 2 0-d0000000\n\tSRAT: Node 1 PXM 2 100000000-330000000\n\tSRAT: Node 0 PXM 1 330000000-630000000\n\tInitmem setup node 1 0000000000000000-000000000affb000\n\t...\n\tBuilt 1 zonelists in Node order, mobility grouping on.\n\t...\n\tBUG: unable to handle kernel paging request at 0000000000001c08\n\tIP: [\u003cffffffff8111c355\u003e] __alloc_pages_nodemask+0xb5/0x870\n\nand __alloc_pages_nodemask+0xb5 translates to a NULL pointer on\nzonelist-\u003e_zonerefs.\n\nThe fix is to initialize q-\u003enode at the time of allocation so the correct\nnode is passed to the slab allocator later.\n\nSince blk_init_allocated_queue_node() is no longer needed, merge it with\nblk_init_allocated_queue().\n\n[rientjes@google.com: changelog, initializing q-\u003enode]\nReported-by: Dave Young \u003cdyoung@redhat.com\u003e\nSigned-off-by: Mike Snitzer \u003csnitzer@redhat.com\u003e\nSigned-off-by: David Rientjes \u003crientjes@google.com\u003e\nTested-by: Dave Young \u003cdyoung@redhat.com\u003e\nSigned-off-by: Jens Axboe \u003caxboe@kernel.dk\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@suse.de\u003e\n\n"
    },
    {
      "commit": "cec3c159f674367def095745a72ac6150f889243",
      "tree": "3fefce578c3ede09ef02d3a241b0e29cf2fc5a17",
      "parents": [
        "8f8a594251e5260f53d746887890d0d2185ceebb"
      ],
      "author": {
        "name": "Yasuaki Ishimatsu",
        "email": "isimatu.yasuaki@jp.fujitsu.com",
        "time": "Fri Dec 02 10:07:07 2011 +0100"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@suse.de",
        "time": "Fri Jan 06 14:13:46 2012 -0800"
      },
      "message": "cfq-iosched: fix cfq_cic_link() race confition\n\ncommit 5eb46851de3904cd1be9192fdacb8d34deadc1fc upstream.\n\ncfq_cic_link() has race condition. When some processes which shared ioc\nissue I/O to same block device simultaneously, cfq_cic_link() returns -EEXIST\nsometimes. The race condition might stop I/O by following steps:\n\nstep  1: Process A: Issue an I/O to /dev/sda\nstep  2: Process A: Get an ioc (iocA here) in get_io_context() which does not\n\t\t    linked with a cic for the device\nstep  3: Process A: Get a new cic for the device (cicA here) in\n\t\t    cfq_alloc_io_context()\n\nstep  4: Process B: Issue an I/O to /dev/sda\nstep  5: Process B: Get iocA in get_io_context() since process A and B share the\n\t\t    same ioc\nstep  6: Process B: Get a new cic for the device (cicB here) in\n\t\t    cfq_alloc_io_context() since iocA has not been linked with a\n\t\t    cic for the device yet\n\nstep  7: Process A: Link cicA to iocA in cfq_cic_link()\nstep  8: Process A: Dispatch I/O to driver and finish it\n\nstep  9: Process B: Try to link cicB to iocA in cfq_cic_link()\n\t\t    But it fails with showing \"cfq: cic link failed!\" kernel\n\t\t    message, since iocA has already linked with cicA at step 7.\nstep 10: Process B: Wait for finishig I/O in get_request_wait()\n\t\t    The function does not wake up, when there is no I/O to the\n\t\t    device.\n\nWhen cfq_cic_link() returns -EEXIST, it means ioc has already linked with cic.\nSo when cfq_cic_link() return -EEXIST, retry cfq_cic_lookup().\n\nSigned-off-by: Yasuaki Ishimatsu \u003cisimatu.yasuaki@jp.fujitsu.com\u003e\nSigned-off-by: Jens Axboe \u003caxboe@kernel.dk\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@suse.de\u003e\n\n"
    },
    {
      "commit": "8f8a594251e5260f53d746887890d0d2185ceebb",
      "tree": "fe49c65525bc1599823f4dc43569c69c6c36c862",
      "parents": [
        "183647b865aea1411c87f9b76b8c74511e34807d"
      ],
      "author": {
        "name": "majianpeng",
        "email": "majianpeng@gmail.com",
        "time": "Wed Nov 30 15:47:48 2011 +0100"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@suse.de",
        "time": "Fri Jan 06 14:13:46 2012 -0800"
      },
      "message": "cfq-iosched: free cic_index if blkio_alloc_blkg_stats fails\n\ncommit 2984ff38ccf6cbc02a7a996a36c7d6f69f3c6146 upstream.\n\nIf we fail allocating the blkpg stats, we free cfqd and cfgq.\nBut we need to free the IDA cfqd-\u003ecic_index as well.\n\nSigned-off-by: majianpeng \u003cmajianpeng@gmail.com\u003e\nSigned-off-by: Jens Axboe \u003caxboe@kernel.dk\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@suse.de\u003e\n\n"
    },
    {
      "commit": "07d106d0a33d6063d2061305903deb02489eba20",
      "tree": "6f257f877a9c2e653ca0515253e930fa6606239a",
      "parents": [
        "805a6af8dba5dfdd35ec35dc52ec0122400b2610"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 05 15:40:12 2012 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 05 15:40:12 2012 -0800"
      },
      "message": "vfs: fix up ENOIOCTLCMD error handling\n\nWe\u0027re doing some odd things there, which already messes up various users\n(see the net/socket.c code that this removes), and it was going to add\nyet more crud to the block layer because of the incorrect error code\ntranslation.\n\nENOIOCTLCMD is not an error return that should be returned to user mode\nfrom the \"ioctl()\" system call, but it should *not* be translated as\nEINVAL (\"Invalid argument\").  It should be translated as ENOTTY\n(\"Inappropriate ioctl for device\").\n\nThat EINVAL confusion has apparently so permeated some code that the\nblock layer actually checks for it, which is sad.  We continue to do so\nfor now, but add a big comment about how wrong that is, and we should\nremove it entirely eventually.  In the meantime, this tries to keep the\nchanges localized to just the EINVAL -\u003e ENOTTY fix, and removing code\nthat makes it harder to do the right thing.\n\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\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": "94ea4158f1733e3b10cef067d535f504866e0c41",
      "tree": "75a4d0c646b29dd529baeb3250afc1deaf570a8e",
      "parents": [
        "9be96f3fd10187f185d84cf878cf032465bcced3"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Fri Sep 16 00:45:36 2011 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue Jan 03 22:54:06 2012 -0500"
      },
      "message": "separate partition format handling from generic code\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "9be96f3fd10187f185d84cf878cf032465bcced3",
      "tree": "432a430ed9e0cbe0c18916cd3c3992f09b3feb37",
      "parents": [
        "4752bc309b7604d507c973c7b7678ac2ce10a058"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Fri Sep 16 00:25:05 2011 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue Jan 03 22:54:06 2012 -0500"
      },
      "message": "move fs/partitions to block/\n\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": "f2b20d436534f22ccc3f5ad172499fcb013bb315",
      "tree": "5c5df70a252ea14da6063d2c6c3de4a4e769ecae",
      "parents": [
        "609f6ea1c9cdfe0c43a927e13205a57d0c266d5a"
      ],
      "author": {
        "name": "Dan Williams",
        "email": "dan.j.williams@intel.com",
        "time": "Thu Dec 29 09:16:28 2011 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@kernel.dk",
        "time": "Thu Dec 29 09:16:28 2011 +0100"
      },
      "message": "block: fix blk_queue_end_tag()\n\nCommit 5e081591 \"block: warn if tag is greater than real_max_depth\"\ncleaned up blk_queue_end_tag() to warn when the tag is truly invalid\n(greater than real_max_depth).  However, it changed behavior in the tag \u003c\nmax_depth case to not end the request.  Leading to triggering of\nBUG_ON(blk_queued_rq(rq)) in the request completion path:\n\n  http://marc.info/?l\u003dlinux-kernel\u0026m\u003d132204370518629\u0026w\u003d2\n\nIn order to allow blk_queue_resize_tags() to shrink the tag space\nblk_queue_end_tag() must always complete tags with a value less than\nreal_max_depth regardless of the current max_depth.  The comment about\n\"handling the shrink case\" seems to be what prompted changes in this\nspace, so remove it and BUG on all invalid tags (made even simpler by\nMatthew\u0027s suggestion to use an unsigned compare).\n\nSigned-off-by: Dan Williams \u003cdan.j.williams@intel.com\u003e\nCc: Tao Ma \u003cboyu.mt@taobao.com\u003e\nCc: Matthew Wilcox \u003cmatthew@wil.cx\u003e\nReported-by: Meelis Roos \u003cmroos@ut.ee\u003e\nReported-by: Ed Nadolski \u003cedmund.nadolski@intel.com\u003e\nCc: Tejun Heo \u003ctj@kernel.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Jens Axboe \u003caxboe@kernel.dk\u003e\n"
    },
    {
      "commit": "c98b2cc29af8e84e7364b53e9bb4cc7cfaf62555",
      "tree": "ed6e9642bb32fe53f5c036c66df4b6692228d0a9",
      "parents": [
        "fd63836811d6e5b5f5f608abf865bc9e91762c8c"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Tue Dec 27 18:52:16 2011 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@kernel.dk",
        "time": "Tue Dec 27 18:52:16 2011 +0100"
      },
      "message": "block: remove WARN_ON_ONCE() in exit_io_context()\n\n6e736be7 \"block: make ioc get/put interface more conventional and fix\nrace on alloction\" added WARN_ON_ONCE() in exit_io_context() which\ntriggers if !PF_EXITING.  All tasks hitting exit_io_context() from\ntask exit should have PF_EXITING set but task struct tearing down\nafter fork failure calls into the function without PF_EXITING,\ntriggering the condition.\n\n  WARNING: at block/blk-ioc.c:234 exit_io_context+0x40/0x92()\n  Pid: 17090, comm: trinity Not tainted 3.2.0-rc6-next-20111222-sasha-dirty #77\n  Call Trace:\n   [\u003cffffffff810b69a3\u003e] warn_slowpath_common+0x8f/0xb2\n   [\u003cffffffff810b6a77\u003e] warn_slowpath_null+0x18/0x1a\n   [\u003cffffffff8181a7a2\u003e] exit_io_context+0x40/0x92\n   [\u003cffffffff810b58c9\u003e] copy_process+0x126f/0x1453\n   [\u003cffffffff810b5c1b\u003e] do_fork+0x120/0x3e9\n   [\u003cffffffff8106242f\u003e] sys_clone+0x26/0x28\n   [\u003cffffffff82425803\u003e] stub_clone+0x13/0x20\n  ---[ end trace a2e4eb670b375238 ]---\n\nReported-by: Sasha Levin \u003clevinsasha928@gmail.com\u003e\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nSigned-off-by: Jens Axboe \u003caxboe@kernel.dk\u003e\n"
    },
    {
      "commit": "fd63836811d6e5b5f5f608abf865bc9e91762c8c",
      "tree": "9262ccdc0319b331c497701a851c8c5752dedb00",
      "parents": [
        "64c42998f14d5894ea3138625897d620b30c8e4e"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Sun Dec 25 14:29:14 2011 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@kernel.dk",
        "time": "Sun Dec 25 14:29:14 2011 +0100"
      },
      "message": "block: an exiting task should be allowed to create io_context\n\nWhile fixing io_context creation / task exit race condition,\n6e736be7f2 \"block: make ioc get/put interface more conventional and\nfix race on alloction\" also prevented an exiting (%PF_EXITING) task\nfrom creating its own io_context.  This is incorrect as exit path may\nissue IOs, e.g. from exit_files(), and if those IOs are the first ones\nissued by the task, io_context needs to be created to process the IOs.\n\nCombined with the existing problem of io_context / io_cq creation\nfailure having the possibility of stalling IO, this problem results in\ndeterministic full IO lockup with certain workloads.\n\nFix it by allowing io_context creation regardless of %PF_EXITING for\n%current.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nReported-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nReported-by: Hugh Dickins \u003chughd@google.com\u003e\nSigned-off-by: Jens Axboe \u003caxboe@kernel.dk\u003e\n"
    },
    {
      "commit": "609f6ea1c9cdfe0c43a927e13205a57d0c266d5a",
      "tree": "4bb34c0004e1650ee44f23105dc9362908470282",
      "parents": [
        "6ae0516b8a50ece5d766be608a305707e0450060"
      ],
      "author": {
        "name": "majianpeng",
        "email": "majianpeng@gmail.com",
        "time": "Wed Dec 21 15:27:24 2011 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@kernel.dk",
        "time": "Wed Dec 21 15:27:24 2011 +0100"
      },
      "message": "block: re-use existing \u0027reading\u0027 variable instead of checking direction again\n\nSigned-off-by: majianpeng \u003cmajianpeng@gmail.com\u003e\nSigned-off-by: Jens Axboe \u003caxboe@kernel.dk\u003e\n"
    },
    {
      "commit": "64c42998f14d5894ea3138625897d620b30c8e4e",
      "tree": "10a7f02d30f6f70f02f8e9db6f93aae41edc85f8",
      "parents": [
        "274193224cdabd687d804a26e0150bb20f2dd52c"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "axboe@kernel.dk",
        "time": "Mon Dec 19 10:36:44 2011 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@kernel.dk",
        "time": "Mon Dec 19 10:36:44 2011 +0100"
      },
      "message": "block: ioc_cgroup_changed() needs to be exported\n\nWith the ioc changed, ioc_cgroup_changed() can be used by modular\ncode. So ensure that it is exported.\n\nReported-by: Stephen Rothwell \u003csfr@canb.auug.org.au\u003e\nSigned-off-by: Jens Axboe \u003caxboe@kernel.dk\u003e\n"
    },
    {
      "commit": "6ae0516b8a50ece5d766be608a305707e0450060",
      "tree": "90e4768d9d984d94cb45464b49b9c62b93ffba9f",
      "parents": [
        "4eabc941259f9d8c8fb71746d3f30c87e1d9e49b"
      ],
      "author": {
        "name": "Shaohua Li",
        "email": "shaohua.li@intel.com",
        "time": "Fri Dec 16 14:04:23 2011 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@kernel.dk",
        "time": "Fri Dec 16 14:04:23 2011 +0100"
      },
      "message": "block, cfq: fix empty queue crash caused by request merge\n\nAll requests of a queue could be merged to other requests of other queue.\nSuch queue will not have request in it, but it\u0027s in service tree. This\nwill cause kernel oops.\nI encounter a BUG_ON() in cfq_dispatch_request() with next patch, but the\nissue should exist without the patch.\n\nSigned-off-by: Shaohua Li \u003cshaohua.li@intel.com\u003e\nSigned-off-by: Jens Axboe \u003caxboe@kernel.dk\u003e\n"
    },
    {
      "commit": "274193224cdabd687d804a26e0150bb20f2dd52c",
      "tree": "f07a788183f2ac91b9b16295f8f146bd5b88fb96",
      "parents": [
        "4a0b75c7d02c2bd46ed227d4ba5941ba8a0aba5d"
      ],
      "author": {
        "name": "Shaohua Li",
        "email": "shaohua.li@intel.com",
        "time": "Fri Dec 16 14:00:31 2011 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@kernel.dk",
        "time": "Fri Dec 16 14:00:31 2011 +0100"
      },
      "message": "block: recursive merge requests\n\nIn my workload, thread 1 accesses a, a+2, ..., thread 2 accesses a+1,\na+3,.... When the requests are flushed to queue, a and a+1 are merged\nto (a, a+1), a+2 and a+3 too to (a+2, a+3), but (a, a+1) and (a+2, a+3)\naren\u0027t merged.\nWith recursive merge below, the workload throughput gets improved 20%\nand context switch drops 60%.\n\nSigned-off-by: Shaohua Li \u003cshaohua.li@intel.com\u003e\nSigned-off-by: Jens Axboe \u003caxboe@kernel.dk\u003e\n"
    },
    {
      "commit": "4a0b75c7d02c2bd46ed227d4ba5941ba8a0aba5d",
      "tree": "a5a0c37a44c87227539ebc356178cc80435144d9",
      "parents": [
        "f1f8cc94651738b418ba54c039df536303b91704"
      ],
      "author": {
        "name": "Shaohua Li",
        "email": "shaohua.li@intel.com",
        "time": "Fri Dec 16 14:00:22 2011 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@kernel.dk",
        "time": "Fri Dec 16 14:00:22 2011 +0100"
      },
      "message": "block, cfq: fix empty queue crash caused by request merge\n\nAll requests of a queue could be merged to other requests of other queue.\nSuch queue will not have request in it, but it\u0027s in service tree. This\nwill cause kernel oops.\nI encounter a BUG_ON() in cfq_dispatch_request() with next patch, but the\nissue should exist without the patch.\n\nSigned-off-by: Shaohua Li \u003cshaohua.li@intel.com\u003e\nSigned-off-by: Jens Axboe \u003caxboe@kernel.dk\u003e\n"
    },
    {
      "commit": "4eabc941259f9d8c8fb71746d3f30c87e1d9e49b",
      "tree": "f8ac1b8c1c1dc4d08830d2c430bef090b45dc277",
      "parents": [
        "b302545744c031eae04a43fb1c56cc17e00a193a"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Thu Dec 15 20:03:04 2011 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@kernel.dk",
        "time": "Thu Dec 15 20:03:04 2011 +0100"
      },
      "message": "block: don\u0027t kick empty queue in blk_drain_queue()\n\nWhile probing, fd sets up queue, probes hardware and tears down the\nqueue if probing fails.  In the process, blk_drain_queue() kicks the\nqueue which failed to finish initialization and fd is unhappy about\nthat.\n\n  floppy0: no floppy controllers found\n  ------------[ cut here ]------------\n  WARNING: at drivers/block/floppy.c:2929 do_fd_request+0xbf/0xd0()\n  Hardware name: To Be Filled By O.E.M.\n  VFS: do_fd_request called on non-open device\n  Modules linked in:\n  Pid: 1, comm: swapper Not tainted 3.2.0-rc4-00077-g5983fe2 #2\n  Call Trace:\n   [\u003cffffffff81039a6a\u003e] warn_slowpath_common+0x7a/0xb0\n   [\u003cffffffff81039b41\u003e] warn_slowpath_fmt+0x41/0x50\n   [\u003cffffffff813d657f\u003e] do_fd_request+0xbf/0xd0\n   [\u003cffffffff81322b95\u003e] blk_drain_queue+0x65/0x80\n   [\u003cffffffff81322c93\u003e] blk_cleanup_queue+0xe3/0x1a0\n   [\u003cffffffff818a809d\u003e] floppy_init+0xdeb/0xe28\n   [\u003cffffffff818a72b2\u003e] ? daring+0x6b/0x6b\n   [\u003cffffffff810002af\u003e] do_one_initcall+0x3f/0x170\n   [\u003cffffffff81884b34\u003e] kernel_init+0x9d/0x11e\n   [\u003cffffffff810317c2\u003e] ? schedule_tail+0x22/0xa0\n   [\u003cffffffff815dbb14\u003e] kernel_thread_helper+0x4/0x10\n   [\u003cffffffff81884a97\u003e] ? start_kernel+0x2be/0x2be\n   [\u003cffffffff815dbb10\u003e] ? gs_change+0xb/0xb\n\nAvoid it by making blk_drain_queue() kick queue iff dispatch queue has\nsomething on it.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nReported-by: Ralf Hildebrandt \u003cRalf.Hildebrandt@charite.de\u003e\nReported-by: Wu Fengguang \u003cfengguang.wu@intel.com\u003e\nTested-by: Sergei Trofimovich \u003cslyich@gmail.com\u003e\nSigned-off-by: Jens Axboe \u003caxboe@kernel.dk\u003e\n"
    },
    {
      "commit": "f1f8cc94651738b418ba54c039df536303b91704",
      "tree": "eb8bc5a33dec104ab32a935a5bb1e1da2e7cdd34",
      "parents": [
        "9b84cacd013996f244d85b3d873287c2a8f88658"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Wed Dec 14 00:33:42 2011 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@kernel.dk",
        "time": "Wed Dec 14 00:33:42 2011 +0100"
      },
      "message": "block, cfq: move icq creation and rq-\u003eelv.icq association to block core\n\nNow block layer knows everything necessary to create and associate\nicq\u0027s with requests.  Move ioc_create_icq() to blk-ioc.c and update\nget_request() such that, if elevator_type-\u003eicq_size is set, requests\nare automatically associated with their matching icq\u0027s before\nelv_set_request().  io_context reference is also managed by block core\non request alloc/free.\n\n* Only ioprio/cgroup changed handling remains from cfq_get_cic().\n  Collapsed into cfq_set_request().\n\n* This removes queue kicking on icq allocation failure (for now).  As\n  icq allocation failure is rare and the only effect of queue kicking\n  achieved was possibily accelerating queue processing, this change\n  shouldn\u0027t be noticeable.\n\n  There is a larger underlying problem.  Unlike request allocation,\n  icq allocation is not guaranteed to succeed eventually after\n  retries.  The number of icq is unbound and thus mempool can\u0027t be the\n  solution either.  This effectively adds allocation dependency on\n  memory free path and thus possibility of deadlock.\n\n  This usually wouldn\u0027t happen because icq allocation is not a hot\n  path and, even when the condition triggers, it\u0027s highly unlikely\n  that none of the writeback workers already has icq.\n\n  However, this is still possible especially if elevator is being\n  switched under high memory pressure, so we better get it fixed.\n  Probably the only solution is just bypassing elevator and appending\n  to dispatch queue on any elevator allocation failure.\n\n* Comment added to explain how icq\u0027s are managed and synchronized.\n\nThis completes cleanup of io_context interface.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nSigned-off-by: Jens Axboe \u003caxboe@kernel.dk\u003e\n"
    },
    {
      "commit": "9b84cacd013996f244d85b3d873287c2a8f88658",
      "tree": "a11b850f9c8b182a7a8141276244a831aaae5291",
      "parents": [
        "7e5a8794492e43e9eebb68a98a23be055888ccd0"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Wed Dec 14 00:33:42 2011 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@kernel.dk",
        "time": "Wed Dec 14 00:33:42 2011 +0100"
      },
      "message": "block, cfq: restructure io_cq creation path for io_context interface cleanup\n\nAdd elevator_ops-\u003eelevator_init_icq_fn() and restructure\ncfq_create_cic() and rename it to ioc_create_icq().\n\nThe new function expects its caller to pass in io_context, uses\nelevator_type-\u003eicq_cache, handles generic init, calls the new elevator\noperation for elevator specific initialization, and returns pointer to\ncreated or looked up icq.  This leaves cfq_icq_pool variable without\nany user.  Removed.\n\nThis prepares for io_context interface cleanup and doesn\u0027t introduce\nany functional difference.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nSigned-off-by: Jens Axboe \u003caxboe@kernel.dk\u003e\n"
    },
    {
      "commit": "7e5a8794492e43e9eebb68a98a23be055888ccd0",
      "tree": "cc049a23b2c994f910d3101860bc1c2ecb7aa35f",
      "parents": [
        "3d3c2379feb177a5fd55bb0ed76776dc9d4f3243"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Wed Dec 14 00:33:42 2011 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@kernel.dk",
        "time": "Wed Dec 14 00:33:42 2011 +0100"
      },
      "message": "block, cfq: move io_cq exit/release to blk-ioc.c\n\nWith kmem_cache managed by blk-ioc, io_cq exit/release can be moved to\nblk-ioc too.  The odd -\u003eio_cq-\u003eexit/release() callbacks are replaced\nwith elevator_ops-\u003eelevator_exit_icq_fn() with unlinking from both ioc\nand q, and freeing automatically handled by blk-ioc.  The elevator\noperation only need to perform exit operation specific to the elevator\n- in cfq\u0027s case, exiting the cfqq\u0027s.\n\nAlso, clearing of io_cq\u0027s on q detach is moved to block core and\nautomatically performed on elevator switch and q release.\n\nBecause the q io_cq points to might be freed before RCU callback for\nthe io_cq runs, blk-ioc code should remember to which cache the io_cq\nneeds to be freed when the io_cq is released.  New field\nio_cq-\u003e__rcu_icq_cache is added for this purpose.  As both the new\nfield and rcu_head are used only after io_cq is released and the\nq/ioc_node fields aren\u0027t, they are put into unions.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nSigned-off-by: Jens Axboe \u003caxboe@kernel.dk\u003e\n"
    },
    {
      "commit": "3d3c2379feb177a5fd55bb0ed76776dc9d4f3243",
      "tree": "fafebbef8f0fb5b73ac4db24bff20dcd40b8bf12",
      "parents": [
        "47fdd4ca96bf4b28ac4d05d7a6e382df31d3d758"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Wed Dec 14 00:33:42 2011 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@kernel.dk",
        "time": "Wed Dec 14 00:33:42 2011 +0100"
      },
      "message": "block, cfq: move icq cache management to block core\n\nLet elevators set -\u003eicq_size and -\u003eicq_align in elevator_type and\nelv_register() and elv_unregister() respectively create and destroy\nkmem_cache for icq.\n\n* elv_register() now can return failure.  All callers updated.\n\n* icq caches are automatically named \"ELVNAME_io_cq\".\n\n* cfq_slab_setup/kill() are collapsed into cfq_init/exit().\n\n* While at it, minor indentation change for iosched_cfq.elevator_name\n  for consistency.\n\nThis will help moving icq management to block core.  This doesn\u0027t\nintroduce any functional change.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nSigned-off-by: Jens Axboe \u003caxboe@kernel.dk\u003e\n"
    },
    {
      "commit": "47fdd4ca96bf4b28ac4d05d7a6e382df31d3d758",
      "tree": "bcb928575b66511345b00102a7e8cace84526e3e",
      "parents": [
        "a612fddf0d8090f2877305c9168b6c1a34fb5d90"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Wed Dec 14 00:33:42 2011 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@kernel.dk",
        "time": "Wed Dec 14 00:33:42 2011 +0100"
      },
      "message": "block, cfq: move io_cq lookup to blk-ioc.c\n\nNow that all io_cq related data structures are in block core layer,\nio_cq lookup can be moved from cfq-iosched.c to blk-ioc.c.\n\nLookup logic from cfq_cic_lookup() is moved to ioc_lookup_icq() with\nparameter return type changes (cfqd -\u003e request_queue, cfq_io_cq -\u003e\nio_cq) and cfq_cic_lookup() becomes thin wrapper around\ncfq_cic_lookup().\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nSigned-off-by: Jens Axboe \u003caxboe@kernel.dk\u003e\n"
    },
    {
      "commit": "a612fddf0d8090f2877305c9168b6c1a34fb5d90",
      "tree": "b59047a1670469362e1ea44093522224bdcf5aae",
      "parents": [
        "c58698073218f2c8f2fc5982fa3938c2d3803b9f"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Wed Dec 14 00:33:41 2011 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@kernel.dk",
        "time": "Wed Dec 14 00:33:41 2011 +0100"
      },
      "message": "block, cfq: move cfqd-\u003eicq_list to request_queue and add request-\u003eelv.icq\n\nMost of icq management is about to be moved out of cfq into blk-ioc.\nThis patch prepares for it.\n\n* Move cfqd-\u003eicq_list to request_queue-\u003eicq_list\n\n* Make request explicitly point to icq instead of through elevator\n  private data.  -\u003eelevator_private[3] is replaced with sub struct elv\n  which contains icq pointer and priv[2].  cfq is updated accordingly.\n\n* Meaningless clearing of -\u003eelevator_private[0] removed from\n  elv_set_request().  At that point in code, the field was guaranteed\n  to be %NULL anyway.\n\nThis patch doesn\u0027t introduce any functional change.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nSigned-off-by: Jens Axboe \u003caxboe@kernel.dk\u003e\n"
    },
    {
      "commit": "c58698073218f2c8f2fc5982fa3938c2d3803b9f",
      "tree": "ccd2403fd8674051a062efd2c22e6fdd179b7b8f",
      "parents": [
        "22f746e235a5cbee2a6ca9887b1be2aa7d31fe71"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Wed Dec 14 00:33:41 2011 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@kernel.dk",
        "time": "Wed Dec 14 00:33:41 2011 +0100"
      },
      "message": "block, cfq: reorganize cfq_io_context into generic and cfq specific parts\n\nCurrently io_context and cfq logics are mixed without clear boundary.\nMost of io_context is independent from cfq but cfq_io_context handling\nlogic is dispersed between generic ioc code and cfq.\n\ncfq_io_context represents association between an io_context and a\nrequest_queue, which is a concept useful outside of cfq, but it also\ncontains fields which are useful only to cfq.\n\nThis patch takes out generic part and put it into io_cq (io\ncontext-queue) and the rest into cfq_io_cq (cic moniker remains the\nsame) which contains io_cq.  The following changes are made together.\n\n* cfq_ttime and cfq_io_cq now live in cfq-iosched.c.\n\n* All related fields, functions and constants are renamed accordingly.\n\n* ioc-\u003eioc_data is now \"struct io_cq *\" instead of \"void *\" and\n  renamed to icq_hint.\n\nThis prepares for io_context API cleanup.  Documentation is currently\nsparse.  It will be added later.\n\nChanges in this patch are mechanical and don\u0027t cause functional\nchange.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nSigned-off-by: Jens Axboe \u003caxboe@kernel.dk\u003e\n"
    },
    {
      "commit": "22f746e235a5cbee2a6ca9887b1be2aa7d31fe71",
      "tree": "a9786fe9fdb994b5ff69794023e6e3e48e39e0b0",
      "parents": [
        "f8fc877d3c1f10457d0d73d8540a0c51a1fa718a"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Wed Dec 14 00:33:41 2011 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@kernel.dk",
        "time": "Wed Dec 14 00:33:41 2011 +0100"
      },
      "message": "block: remove elevator_queue-\u003eops\n\nelevator_queue-\u003eops points to the same ops struct -\u003eelevator_type.ops\nis pointing to.  The only effect of caching it in elevator_queue is\nshorter notation - it doesn\u0027t save any indirect derefence.\n\nRelocate elevator_type-\u003elist which used only during module init/exit\nto the end of the structure, rename elevator_queue-\u003eelevator_type to\n-\u003etype, and replace elevator_queue-\u003eops with elevator_queue-\u003etype.ops.\n\nThis doesn\u0027t introduce any functional difference.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nSigned-off-by: Jens Axboe \u003caxboe@kernel.dk\u003e\n"
    },
    {
      "commit": "f8fc877d3c1f10457d0d73d8540a0c51a1fa718a",
      "tree": "036d5d57996a6b3f1dfd68fb569eea0e699f2263",
      "parents": [
        "f2dbd76a0a994bc1d5a3d0e7c844cc373832e86c"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Wed Dec 14 00:33:40 2011 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@kernel.dk",
        "time": "Wed Dec 14 00:33:40 2011 +0100"
      },
      "message": "block: reorder elevator switch sequence\n\nElevator switch sequence first attached the new elevator, then tried\nregistering it (sysfs) and if that failed attached back the old\nelevator.  However, sysfs registration doesn\u0027t require the elevator to\nbe attached, so there is no reason to do the \"detach, attach new,\nregister, maybe re-attach old\" sequence.  It can just do \"register,\ndetach, attach\".\n\n* elevator_init_queue() is updated to set -\u003eelevator_data directly and\n  return 0 / -errno.  This allows elevator_exit() on an unattached\n  elevator.\n\n* __elv_unregister_queue() which was necessary to unregister\n  unattached q is removed in favor of __elv_register_queue() which can\n  register unattached q.\n\n* elevator_attach() becomes a single assignment and obscures more then\n  it helps.  Dropped.\n\nThis will help cleaning up io_context handling across elevator switch.\n\nThis patch doesn\u0027t introduce visible behavior change.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nSigned-off-by: Jens Axboe \u003caxboe@kernel.dk\u003e\n"
    },
    {
      "commit": "f2dbd76a0a994bc1d5a3d0e7c844cc373832e86c",
      "tree": "cae6a4333ee6e5eb76ef133dfdee95e1943c0ab1",
      "parents": [
        "1238033c79e92e5c315af12e45396f1a78c73dec"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Wed Dec 14 00:33:40 2011 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@kernel.dk",
        "time": "Wed Dec 14 00:33:40 2011 +0100"
      },
      "message": "block, cfq: replace current_io_context() with create_io_context()\n\nWhen called under queue_lock, current_io_context() triggers lockdep\nwarning if it hits allocation path.  This is because io_context\ninstallation is protected by task_lock which is not IRQ safe, so it\ntriggers irq-unsafe-lock -\u003e irq -\u003e irq-safe-lock -\u003e irq-unsafe-lock\ndeadlock warning.\n\nGiven the restriction, accessor + creator rolled into one doesn\u0027t work\ntoo well.  Drop current_io_context() and let the users access\ntask-\u003eio_context directly inside queue_lock combined with explicit\ncreation using create_io_context().\n\nFuture ioc updates will further consolidate ioc access and the create\ninterface will be unexported.\n\nWhile at it, relocate ioc internal interface declarations in blk.h and\nadd section comments before and after.\n\nThis patch does not introduce functional change.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nSigned-off-by: Jens Axboe \u003caxboe@kernel.dk\u003e\n"
    },
    {
      "commit": "1238033c79e92e5c315af12e45396f1a78c73dec",
      "tree": "0f205155f811930f0cf43716e56fa57ea1f792b9",
      "parents": [
        "b50b636bce6293fa858cc7ff6c3ffe4920d90006"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Wed Dec 14 00:33:40 2011 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@kernel.dk",
        "time": "Wed Dec 14 00:33:40 2011 +0100"
      },
      "message": "block, cfq: kill cic-\u003ekey\n\nNow that lazy paths are removed, cfqd_dead_key() is meaningless and\ncic-\u003eq can be used whereever cic-\u003ekey is used.  Kill cic-\u003ekey.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nSigned-off-by: Jens Axboe \u003caxboe@kernel.dk\u003e\n"
    }
  ],
  "next": "b50b636bce6293fa858cc7ff6c3ffe4920d90006"
}
