)]}'
{
  "log": [
    {
      "commit": "ee89f81252179dcbf6cd65bd48299f5e52292d88",
      "tree": "805846cd12821f84cfe619d44c9e3e36e0b0f9e6",
      "parents": [
        "21f3b24da9328415792efc780f50b9f434c12465",
        "de33127d8d3f1d570aad8c2223cd81b206636bc1"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Feb 28 12:52:24 2013 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Feb 28 12:52:24 2013 -0800"
      },
      "message": "Merge branch \u0027for-3.9/core\u0027 of git://git.kernel.dk/linux-block\n\nPull block IO core bits from Jens Axboe:\n \"Below are the core block IO bits for 3.9.  It was delayed a few days\n  since my workstation kept crashing every 2-8h after pulling it into\n  current -git, but turns out it is a bug in the new pstate code (divide\n  by zero, will report separately).  In any case, it contains:\n\n   - The big cfq/blkcg update from Tejun and and Vivek.\n\n   - Additional block and writeback tracepoints from Tejun.\n\n   - Improvement of the should sort (based on queues) logic in the plug\n     flushing.\n\n   - _io() variants of the wait_for_completion() interface, using\n     io_schedule() instead of schedule() to contribute to io wait\n     properly.\n\n   - Various little fixes.\n\n  You\u0027ll get two trivial merge conflicts, which should be easy enough to\n  fix up\"\n\nFix up the trivial conflicts due to hlist traversal cleanups (commit\nb67bfe0d42ca: \"hlist: drop the node parameter from iterators\").\n\n* \u0027for-3.9/core\u0027 of git://git.kernel.dk/linux-block: (39 commits)\n  block: remove redundant check to bd_openers()\n  block: use i_size_write() in bd_set_size()\n  cfq: fix lock imbalance with failed allocations\n  drivers/block/swim3.c: fix null pointer dereference\n  block: don\u0027t select PERCPU_RWSEM\n  block: account iowait time when waiting for completion of IO request\n  sched: add wait_for_completion_io[_timeout]\n  writeback: add more tracepoints\n  block: add block_{touch|dirty}_buffer tracepoint\n  buffer: make touch_buffer() an exported function\n  block: add @req to bio_{front|back}_merge tracepoints\n  block: add missing block_bio_complete() tracepoint\n  block: Remove should_sort judgement when flush blk_plug\n  block,elevator: use new hashtable implementation\n  cfq-iosched: add hierarchical cfq_group statistics\n  cfq-iosched: collect stats from dead cfqgs\n  cfq-iosched: separate out cfqg_stats_reset() from cfq_pd_reset_stats()\n  blkcg: make blkcg_print_blkgs() grab q locks instead of blkcg lock\n  block: RCU free request_queue\n  blkcg: implement blkg_[rw]stat_recursive_sum() and blkg_[rw]stat_merge()\n  ...\n"
    },
    {
      "commit": "b67bfe0d42cac56c512dd5da4b1b347a23f4b70a",
      "tree": "3d465aea12b97683f26ffa38eba8744469de9997",
      "parents": [
        "1e142b29e210b5dfb2deeb6ce2210b60af16d2a6"
      ],
      "author": {
        "name": "Sasha Levin",
        "email": "sasha.levin@oracle.com",
        "time": "Wed Feb 27 17:06:00 2013 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Feb 27 19:10:24 2013 -0800"
      },
      "message": "hlist: drop the node parameter from iterators\n\nI\u0027m not sure why, but the hlist for each entry iterators were conceived\n\n        list_for_each_entry(pos, head, member)\n\nThe hlist ones were greedy and wanted an extra parameter:\n\n        hlist_for_each_entry(tpos, pos, head, member)\n\nWhy did they need an extra pos parameter? I\u0027m not quite sure. Not only\nthey don\u0027t really need it, it also prevents the iterator from looking\nexactly like the list iterator, which is unfortunate.\n\nBesides the semantic patch, there was some manual work required:\n\n - Fix up the actual hlist iterators in linux/list.h\n - Fix up the declaration of other iterators based on the hlist ones.\n - A very small amount of places were using the \u0027node\u0027 parameter, this\n was modified to use \u0027obj-\u003emember\u0027 instead.\n - Coccinelle didn\u0027t handle the hlist_for_each_entry_safe iterator\n properly, so those had to be fixed up manually.\n\nThe semantic patch which is mostly the work of Peter Senna Tschudin is here:\n\n@@\niterator name hlist_for_each_entry, hlist_for_each_entry_continue, hlist_for_each_entry_from, hlist_for_each_entry_rcu, hlist_for_each_entry_rcu_bh, hlist_for_each_entry_continue_rcu_bh, for_each_busy_worker, ax25_uid_for_each, ax25_for_each, inet_bind_bucket_for_each, sctp_for_each_hentry, sk_for_each, sk_for_each_rcu, sk_for_each_from, sk_for_each_safe, sk_for_each_bound, hlist_for_each_entry_safe, hlist_for_each_entry_continue_rcu, nr_neigh_for_each, nr_neigh_for_each_safe, nr_node_for_each, nr_node_for_each_safe, for_each_gfn_indirect_valid_sp, for_each_gfn_sp, for_each_host;\n\ntype T;\nexpression a,c,d,e;\nidentifier b;\nstatement S;\n@@\n\n-T b;\n    \u003c+... when !\u003d b\n(\nhlist_for_each_entry(a,\n- b,\nc, d) S\n|\nhlist_for_each_entry_continue(a,\n- b,\nc) S\n|\nhlist_for_each_entry_from(a,\n- b,\nc) S\n|\nhlist_for_each_entry_rcu(a,\n- b,\nc, d) S\n|\nhlist_for_each_entry_rcu_bh(a,\n- b,\nc, d) S\n|\nhlist_for_each_entry_continue_rcu_bh(a,\n- b,\nc) S\n|\nfor_each_busy_worker(a, c,\n- b,\nd) S\n|\nax25_uid_for_each(a,\n- b,\nc) S\n|\nax25_for_each(a,\n- b,\nc) S\n|\ninet_bind_bucket_for_each(a,\n- b,\nc) S\n|\nsctp_for_each_hentry(a,\n- b,\nc) S\n|\nsk_for_each(a,\n- b,\nc) S\n|\nsk_for_each_rcu(a,\n- b,\nc) S\n|\nsk_for_each_from\n-(a, b)\n+(a)\nS\n+ sk_for_each_from(a) S\n|\nsk_for_each_safe(a,\n- b,\nc, d) S\n|\nsk_for_each_bound(a,\n- b,\nc) S\n|\nhlist_for_each_entry_safe(a,\n- b,\nc, d, e) S\n|\nhlist_for_each_entry_continue_rcu(a,\n- b,\nc) S\n|\nnr_neigh_for_each(a,\n- b,\nc) S\n|\nnr_neigh_for_each_safe(a,\n- b,\nc, d) S\n|\nnr_node_for_each(a,\n- b,\nc) S\n|\nnr_node_for_each_safe(a,\n- b,\nc, d) S\n|\n- for_each_gfn_sp(a, c, d, b) S\n+ for_each_gfn_sp(a, c, d) S\n|\n- for_each_gfn_indirect_valid_sp(a, c, d, b) S\n+ for_each_gfn_indirect_valid_sp(a, c, d) S\n|\nfor_each_host(a,\n- b,\nc) S\n|\nfor_each_host_safe(a,\n- b,\nc, d) S\n|\nfor_each_mesh_entry(a,\n- b,\nc, d) S\n)\n    ...+\u003e\n\n[akpm@linux-foundation.org: drop bogus change from net/ipv4/raw.c]\n[akpm@linux-foundation.org: drop bogus hunk from net/ipv6/raw.c]\n[akpm@linux-foundation.org: checkpatch fixes]\n[akpm@linux-foundation.org: fix warnings]\n[akpm@linux-foudnation.org: redo intrusive kvm changes]\nTested-by: Peter Senna Tschudin \u003cpeter.senna@gmail.com\u003e\nAcked-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\nSigned-off-by: Sasha Levin \u003csasha.levin@oracle.com\u003e\nCc: Wu Fengguang \u003cfengguang.wu@intel.com\u003e\nCc: Marcelo Tosatti \u003cmtosatti@redhat.com\u003e\nCc: Gleb Natapov \u003cgleb@redhat.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "ac2e5327a5e4f6477afc6a3b3b0dc6e0476d71d4",
      "tree": "e8193241c1789655f2168013d1ee434c21f12bac",
      "parents": [
        "06004e6eebdaf101a0f9b533fac77b5768d2c09c"
      ],
      "author": {
        "name": "Ming Lei",
        "email": "ming.lei@canonical.com",
        "time": "Wed Feb 27 17:05:19 2013 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Feb 27 19:10:21 2013 -0800"
      },
      "message": "block/partitions: optimize memory allocation in check_partition()\n\nCurrently, sizeof(struct parsed_partitions) may be 64KB in 32bit arch, so\nit is easy to trigger page allocation failure by check_partition,\nespecially in hotplug block device situation(such as, USB mass storage,\nMMC card, ...), and Felipe Balbi has observed the failure.\n\nThis patch does below optimizations on the allocation of struct\nparsed_partitions to try to address the issue:\n\n- make parsed_partitions.parts as pointer so that the pointed memory can\n  fit in 32KB buffer, then approximate 32KB memory can be saved\n\n- vmalloc the buffer pointed by parsed_partitions.parts because 32KB is\n  still a bit big for kmalloc\n\n- given that many devices have the partition count limit, so only\n  allocate disk_max_parts() partitions instead of 256 partitions always\n\nSigned-off-by: Ming Lei \u003cming.lei@canonical.com\u003e\nReported-by: Felipe Balbi \u003cbalbi@ti.com\u003e\nCc: Jens Axboe \u003caxboe@kernel.dk\u003e\nReviewed-by: Yasuaki Ishimatsu \u003cisimatu.yasuaki@jp.fujitsu.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "06004e6eebdaf101a0f9b533fac77b5768d2c09c",
      "tree": "5a867e6e20c7fb468ba4d6b7d5501fded8b174f1",
      "parents": [
        "8b8a6e1881be8d73b7a98f84ccec61e624ec5cac"
      ],
      "author": {
        "name": "Ming Lei",
        "email": "ming.lei@canonical.com",
        "time": "Wed Feb 27 17:05:18 2013 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Feb 27 19:10:21 2013 -0800"
      },
      "message": "block/partitions/mac.c: obey the state-\u003elimit constraint\n\nIt isn\u0027t necessary to read the information of partitions whose number is\nequal and more than state-\u003elimit since only maximum state-\u003elimit\npartitions will be added inside rescan_partitions().\n\nThat is also what other kind of partitions are doing.\n\nSigned-off-by: Ming Lei \u003cming.lei@canonical.com\u003e\nCc: Jens Axboe \u003caxboe@kernel.dk\u003e\nCc: Yasuaki Ishimatsu \u003cisimatu.yasuaki@jp.fujitsu.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "8b8a6e1881be8d73b7a98f84ccec61e624ec5cac",
      "tree": "4e5e883aeee2ee9371b97e52a053d07c24939f2d",
      "parents": [
        "86ee8ba64daf5e09a71e4c216f81fae8d1c937f3"
      ],
      "author": {
        "name": "Peter Jones",
        "email": "pjones@redhat.com",
        "time": "Wed Feb 27 17:05:17 2013 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Feb 27 19:10:21 2013 -0800"
      },
      "message": "block/partitions/efi.c: ensure that the GPT header is at least the size of the structure.\n\nUEFI 2.3.1D will include a change to the spec language mandating that a\nGPT header must be greater than *or equal to* the size of the defined\nstructure.  While verifying that this would work on Linux, I discovered\nthat we\u0027re not actually checking the minimum bound at all.\n\nThe result of this is that when we verify the checksum, it\u0027s possible that\non a malformed header (with header_size of 0), we won\u0027t actually verify\nany data.\n\n[akpm@linux-foundation.org: fix printk warning]\nSigned-off-by: Peter Jones \u003cpjones@redhat.com\u003e\nAcked-by: Matt Fleming \u003cmatt.fleming@intel.com\u003e\nCc: Jens Axboe \u003caxboe@kernel.dk\u003e\nCc: Stephen Warren \u003cswarren@nvidia.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "86ee8ba64daf5e09a71e4c216f81fae8d1c937f3",
      "tree": "074962cd77e6d2cfaef867a1eeadb2c83fdd8ebc",
      "parents": [
        "3c94ce6f48f484bbc4dba83c0ed1f98f5e10957c"
      ],
      "author": {
        "name": "Philippe De Muyter",
        "email": "phdm@macqel.be",
        "time": "Wed Feb 27 17:05:16 2013 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Feb 27 19:10:21 2013 -0800"
      },
      "message": "block/partition/msdos: detect AIX formatted disks even without 55aa\n\nAIX formatted disks do not always have the MSDOS 55aa signature.\nThis happens e.g. for unbootable AIX disks.\n\nUp to now, such disks were not recognized as AIX disks, because of the\nmissing 55aa.  Fix that by inverting the two tests.  Let\u0027s first\ncheck for the AIX magic strings, and only if that fails check for\nthe MSDOS magic word.\n\nSigned-off-by: Philippe De Muyter \u003cphdm@macqel.be\u003e\nCc: Andreas Mohr \u003candi@lisas.de\u003e\nCc: OGAWA Hirofumi \u003chirofumi@mail.parknet.co.jp\u003e\nCc: Jens Axboe \u003caxboe@kernel.dk\u003e\nCc: Olaf Hering \u003colh@suse.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "bab998d62f12db12b3ddf1e06b2ecd4ed9e7ae45",
      "tree": "4fdd87842d72efb147ce12e513ccaccabebae4fb",
      "parents": [
        "ce23bba842aee98092225d9576dba47c82352521"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Wed Feb 27 17:03:57 2013 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Feb 27 19:10:15 2013 -0800"
      },
      "message": "block: convert to idr_alloc()\n\nConvert to the much saner new idr interface.  Both bsg and genhd\nprotect idr w/ mutex making preloading unnecessary.\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\n"
    },
    {
      "commit": "ce23bba842aee98092225d9576dba47c82352521",
      "tree": "5642d356f830bc3987f65f6879249cf96bf24df2",
      "parents": [
        "d5c7409f79e14db49d00785692334657592c07ff"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Wed Feb 27 17:03:56 2013 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Feb 27 19:10:14 2013 -0800"
      },
      "message": "block: fix synchronization and limit check in blk_alloc_devt()\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\nCc: \u003cstable@vger.kernel.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "7b74e912785a11572da43292786ed07ada7e3e0c",
      "tree": "58cf6c0f890c9655a6058b2179c695ca5a2825b5",
      "parents": [
        "8c333ac2e4946a673b54f974d75397c947569c29"
      ],
      "author": {
        "name": "Tomas Henzl",
        "email": "thenzl@redhat.com",
        "time": "Wed Feb 27 17:03:32 2013 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Feb 27 19:10:12 2013 -0800"
      },
      "message": "block: fix ext_devt_idr handling\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\nCc: \u003cstable@vger.kernel.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "25e823c8c37d123b77ce12a042da889e6bb5f9d1",
      "tree": "c06fc6af0ac6d31e3f509871c7f0d871e0d0684b",
      "parents": [
        "e823407f7b11fa06ba8e7a2801eb9ed11268a7ec"
      ],
      "author": {
        "name": "Ming Lei",
        "email": "ming.lei@canonical.com",
        "time": "Fri Feb 22 16:34:13 2013 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Feb 23 17:50:16 2013 -0800"
      },
      "message": "block/genhd.c: apply pm_runtime_set_memalloc_noio on block devices\n\nApply the introduced pm_runtime_set_memalloc_noio on block device so\nthat PM core will teach mm to not allocate memory with GFP_IOFS when\ncalling the runtime_resume and runtime_suspend callback for block\ndevices and its ancestors.\n\nSigned-off-by: Ming Lei \u003cming.lei@canonical.com\u003e\nCc: Jens Axboe \u003caxboe@kernel.dk\u003e\nCc: Minchan Kim \u003cminchan@kernel.org\u003e\nCc: Alan Stern \u003cstern@rowland.harvard.edu\u003e\nCc: Oliver Neukum \u003coneukum@suse.de\u003e\nCc: Jiri Kosina \u003cjiri.kosina@suse.com\u003e\nCc: Mel Gorman \u003cmel@csn.ul.ie\u003e\nCc: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Michal Hocko \u003cmhocko@suse.cz\u003e\nCc: Ingo Molnar \u003cmingo@redhat.com\u003e\nCc: Peter Zijlstra \u003cpeterz@infradead.org\u003e\nCc: \"Rafael J. Wysocki\" \u003crjw@sisk.pl\u003e\nCc: Greg KH \u003cgreg@kroah.com\u003e\nCc: \"David S. Miller\" \u003cdavem@davemloft.net\u003e\nCc: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nCc: David Decotigny \u003cdavid.decotigny@google.com\u003e\nCc: Tom Herbert \u003ctherbert@google.com\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "a3cc86c2f00839453d2dbeb46bfc44e885b073db",
      "tree": "8942e1acba4b7450144b7b6f8221fa0f1e69c326",
      "parents": [
        "7414d4f64b73cc30c600b4fe0a9cbc24cedc4285"
      ],
      "author": {
        "name": "Glauber Costa",
        "email": "glommer@parallels.com",
        "time": "Thu Feb 21 15:16:41 2013 -0800"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@kernel.dk",
        "time": "Fri Feb 22 10:42:46 2013 +0100"
      },
      "message": "cfq: fix lock imbalance with failed allocations\n\nWhile stress-running very-small container scenarios with the Kernel Memory\nController, I\u0027ve run into a lockdep-detected lock imbalance in\ncfq-iosched.c.\n\nI\u0027ll apologize beforehand for not posting a backlog: I didn\u0027t anticipate\nit would be so hard to reproduce, so I didn\u0027t save my serial output and\nwent directly on debugging.  Turns out that it did not happen again in\nmore than 20 runs, making it a quite rare pattern.\n\nBut here is my analysis:\n\nWhen we are in very low-memory situations, we will arrive at\ncfq_find_alloc_queue and may not find a queue, having to resort to the oom\nqueue, in an rcu-locked condition:\n\n  if (!cfqq || cfqq \u003d\u003d \u0026cfqd-\u003eoom_cfqq)\n      [ ... ]\n\nNext, we will release the rcu lock, and try to allocate a queue, retrying\nif we succeed:\n\n  rcu_read_unlock();\n  spin_unlock_irq(cfqd-\u003equeue-\u003equeue_lock);\n  new_cfqq \u003d kmem_cache_alloc_node(cfq_pool,\n                  gfp_mask | __GFP_ZERO,\n                  cfqd-\u003equeue-\u003enode);\n   spin_lock_irq(cfqd-\u003equeue-\u003equeue_lock);\n   if (new_cfqq)\n       goto retry;\n\nWe are unlocked at this point, but it should be fine, since we will\nreacquire the rcu_read_lock when we retry.\n\nExcept of course, that we may not retry: the allocation may very well fail\nand we\u0027ll keep on going through the flow:\n\nThe next branch is:\n\n    if (cfqq) {\n\t[ ... ]\n    } else\n        cfqq \u003d \u0026cfqd-\u003eoom_cfqq;\n\nAnd right before exiting, we\u0027ll issue rcu_read_unlock().\n\nBeing already unlocked, this is the likely source of our imbalance.  Since\ncfqq is either already NULL or made NULL in the first statement of the\noutter branch, the only viable alternative here seems to be to return the\noom queue right away in case of allocation failure.\n\nPlease review the following patch and apply if you agree with my analysis.\n\nSigned-off-by: Glauber Costa \u003cglommer@parallels.com\u003e\nCc: Jens Axboe \u003caxboe@kernel.dk\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": "79d0b7f0e30e803061aa1660602a94c118c0c293",
      "tree": "65fb64a41fca0e05968921d0fd50f7992fd58291",
      "parents": [
        "5577022f4ed8973762450ebe7fe7ebfd953817db"
      ],
      "author": {
        "name": "Mikulas Patocka",
        "email": "mpatocka@redhat.com",
        "time": "Thu Feb 21 15:16:39 2013 -0800"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@kernel.dk",
        "time": "Fri Feb 22 10:42:45 2013 +0100"
      },
      "message": "block: don\u0027t select PERCPU_RWSEM\n\nThe block device doesn\u0027t use percpu rw-semaphore anymore, so don\u0027t select\nit for compilation.\n\nSigned-off-by: Mikulas Patocka \u003cmpatocka@redhat.com\u003e\nCc: Jens Axboe \u003caxboe@kernel.dk\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Jens Axboe \u003caxboe@kernel.dk\u003e\n"
    },
    {
      "commit": "ffecfd1a72fccfcee3dabb99b9ecba9735318f90",
      "tree": "a5c3caf67249ec811a2c2c95678d9349fd8e2412",
      "parents": [
        "13575ca14fcdacd1ad914d00bc63eb4d96280986"
      ],
      "author": {
        "name": "Darrick J. Wong",
        "email": "darrick.wong@oracle.com",
        "time": "Thu Feb 21 16:42:55 2013 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Feb 21 17:22:20 2013 -0800"
      },
      "message": "block: optionally snapshot page contents to provide stable pages during write\n\nThis provides a band-aid to provide stable page writes on jbd without\nneeding to backport the fixed locking and page writeback bit handling\nschemes of jbd2.  The band-aid works by using bounce buffers to snapshot\npage contents instead of waiting.\n\nFor those wondering about the ext3 bandage -- fixing the jbd locking\n(which was done as part of ext4dev years ago) is a lot of surgery, and\nsetting PG_writeback on data pages when we actually hold the page lock\ndropped ext3 performance by nearly an order of magnitude.  If we\u0027re\ngoing to migrate iscsi and raid to use stable page writes, the\ncomplaints about high latency will likely return.  We might as well\ncentralize their page snapshotting thing to one place.\n\nSigned-off-by: Darrick J. Wong \u003cdarrick.wong@oracle.com\u003e\nTested-by: Andy Lutomirski \u003cluto@amacapital.net\u003e\nCc: Adrian Hunter \u003cadrian.hunter@intel.com\u003e\nCc: Artem Bityutskiy \u003cdedekind1@gmail.com\u003e\nReviewed-by: Jan Kara \u003cjack@suse.cz\u003e\nCc: Joel Becker \u003cjlbec@evilplan.org\u003e\nCc: Mark Fasheh \u003cmfasheh@suse.com\u003e\nCc: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\nCc: Jens Axboe \u003caxboe@kernel.dk\u003e\nCc: Eric Van Hensbergen \u003cericvh@gmail.com\u003e\nCc: Ron Minnich \u003crminnich@sandia.gov\u003e\nCc: Latchesar Ionkov \u003clucho@ionkov.net\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "7d311cdab663f4f7ab3a4c0d5d484234406f8268",
      "tree": "c65c6d24b7c6ab12038adea622f9d5b3a66eeea4",
      "parents": [
        "b1ae345d971664f70cfdc293029c40ccfb093591"
      ],
      "author": {
        "name": "Darrick J. Wong",
        "email": "darrick.wong@oracle.com",
        "time": "Thu Feb 21 16:42:48 2013 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Feb 21 17:22:19 2013 -0800"
      },
      "message": "bdi: allow block devices to say that they require stable page writes\n\nThis patchset (\"stable page writes, part 2\") makes some key\nmodifications to the original \u0027stable page writes\u0027 patchset.  First, it\nprovides creators (devices and filesystems) of a backing_dev_info a flag\nthat declares whether or not it is necessary to ensure that page\ncontents cannot change during writeout.  It is no longer assumed that\nthis is true of all devices (which was never true anyway).  Second, the\nflag is used to relaxed the wait_on_page_writeback calls so that wait\nonly occurs if the device needs it.  Third, it fixes up the remaining\ndisk-backed filesystems to use this improved conditional-wait logic to\nprovide stable page writes on those filesystems.\n\nIt is hoped that (for people not using checksumming devices, anyway)\nthis patchset will give back unnecessary performance decreases since the\noriginal stable page write patchset went into 3.0.  Sorry about not\nfixing it sooner.\n\nComplaints were registered by several people about the long write\nlatencies introduced by the original stable page write patchset.\nGenerally speaking, the kernel ought to allocate as little extra memory\nas possible to facilitate writeout, but for people who simply cannot\nwait, a second page stability strategy is (re)introduced: snapshotting\npage contents.  The waiting behavior is still the default strategy; to\nenable page snapshotting, a superblock flag (MS_SNAP_STABLE) must be\nset.  This flag is used to bandaid^Henable stable page writeback on\next3[1], and is not used anywhere else.\n\nGiven that there are already a few storage devices and network FSes that\nhave rolled their own page stability wait/page snapshot code, it would\nbe nice to move towards consolidating all of these.  It seems possible\nthat iscsi and raid5 may wish to use the new stable page write support\nto enable zero-copy writeout.\n\nThank you to Jan Kara for helping fix a couple more filesystems.\n\nPer Andrew Morton\u0027s request, here are the result of using dbench to measure\nlatencies on ext2:\n\n3.8.0-rc3:\n   Operation      Count    AvgLat    MaxLat\n   ----------------------------------------\n   WriteX        109347     0.028    59.817\n   ReadX         347180     0.004     3.391\n   Flush          15514    29.828   287.283\n\n  Throughput 57.429 MB/sec  4 clients  4 procs  max_latency\u003d287.290 ms\n\n3.8.0-rc3 + patches:\n   WriteX        105556     0.029     4.273\n   ReadX         335004     0.005     4.112\n   Flush          14982    30.540   298.634\n\n  Throughput 55.4496 MB/sec  4 clients  4 procs  max_latency\u003d298.650 ms\n\nAs you can see, for ext2 the maximum write latency decreases from ~60ms\non a laptop hard disk to ~4ms.  I\u0027m not sure why the flush latencies\nincrease, though I suspect that being able to dirty pages faster gives\nthe flusher more work to do.\n\nOn ext4, the average write latency decreases as well as all the maximum\nlatencies:\n\n3.8.0-rc3:\n   WriteX         85624     0.152    33.078\n   ReadX         272090     0.010    61.210\n   Flush          12129    36.219   168.260\n\n  Throughput 44.8618 MB/sec  4 clients  4 procs  max_latency\u003d168.276 ms\n\n3.8.0-rc3 + patches:\n   WriteX         86082     0.141    30.928\n   ReadX         273358     0.010    36.124\n   Flush          12214    34.800   165.689\n\n  Throughput 44.9941 MB/sec  4 clients  4 procs  max_latency\u003d165.722 ms\n\nXFS seems to exhibit similar latency improvements as ext2:\n\n3.8.0-rc3:\n   WriteX        125739     0.028   104.343\n   ReadX         399070     0.005     4.115\n   Flush          17851    25.004   131.390\n\n  Throughput 66.0024 MB/sec  4 clients  4 procs  max_latency\u003d131.406 ms\n\n3.8.0-rc3 + patches:\n   WriteX        123529     0.028     6.299\n   ReadX         392434     0.005     4.287\n   Flush          17549    25.120   188.687\n\n  Throughput 64.9113 MB/sec  4 clients  4 procs  max_latency\u003d188.704 ms\n\n...and btrfs, just to round things out, also shows some latency\ndecreases:\n\n3.8.0-rc3:\n   WriteX         67122     0.083    82.355\n   ReadX         212719     0.005     2.828\n   Flush           9547    47.561   147.418\n\n  Throughput 35.3391 MB/sec  4 clients  4 procs  max_latency\u003d147.433 ms\n\n3.8.0-rc3 + patches:\n   WriteX         64898     0.101    71.631\n   ReadX         206673     0.005     7.123\n   Flush           9190    47.963   219.034\n\n  Throughput 34.0795 MB/sec  4 clients  4 procs  max_latency\u003d219.044 ms\n\nBefore this patchset, all filesystems would block, regardless of whether\nor not it was necessary.  ext3 would wait, but still generate occasional\nchecksum errors.  The network filesystems were left to do their own\nthing, so they\u0027d wait too.\n\nAfter this patchset, all the disk filesystems except ext3 and btrfs will\nwait only if the hardware requires it.  ext3 (if necessary) snapshots\npages instead of blocking, and btrfs provides its own bdi so the mm will\nnever wait.  Network filesystems haven\u0027t been touched, so either they\nprovide their own wait code, or they don\u0027t block at all.  The blocking\nbehavior is back to what it was before 3.0 if you don\u0027t have a disk\nrequiring stable page writes.\n\nThis patchset has been tested on 3.8.0-rc3 on x64 with ext3, ext4, and\nxfs.  I\u0027ve spot-checked 3.8.0-rc4 and seem to be getting the same\nresults as -rc3.\n\n[1] The alternative fixes to ext3 include fixing the locking order and\npage bit handling like we did for ext4 (but then why not just use\next4?), or setting PG_writeback so early that ext3 becomes extremely\nslow.  I tried that, but the number of write()s I could initiate dropped\nby nearly an order of magnitude.  That was a bit much even for the\nauthor of the stable page series! :)\n\nThis patch:\n\nCreates a per-backing-device flag that tracks whether or not pages must\nbe held immutable during writeout.  Eventually it will be used to waive\nwait_for_page_writeback() if nothing requires stable pages.\n\nSigned-off-by: Darrick J. Wong \u003cdarrick.wong@oracle.com\u003e\nReviewed-by: Jan Kara \u003cjack@suse.cz\u003e\nCc: Adrian Hunter \u003cadrian.hunter@intel.com\u003e\nCc: Andy Lutomirski \u003cluto@amacapital.net\u003e\nCc: Artem Bityutskiy \u003cdedekind1@gmail.com\u003e\nCc: Joel Becker \u003cjlbec@evilplan.org\u003e\nCc: Mark Fasheh \u003cmfasheh@suse.com\u003e\nCc: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\nCc: Jens Axboe \u003caxboe@kernel.dk\u003e\nCc: Eric Van Hensbergen \u003cericvh@gmail.com\u003e\nCc: Ron Minnich \u003crminnich@sandia.gov\u003e\nCc: Latchesar Ionkov \u003clucho@ionkov.net\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "ece8e0b2f9c980e5511fe8db2d68c6f1859b9d83",
      "tree": "70f1e3363080884965686576d079d24da8863a58",
      "parents": [
        "67cb104b4c30bd52292b6a7f526349aab2dd5cbd",
        "a0327ff0eda915be623658babacef706099c11a8"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Feb 19 22:10:26 2013 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Feb 19 22:10:26 2013 -0800"
      },
      "message": "Merge branch \u0027for-3.9-async\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tj/wq\n\nPull async changes from Tejun Heo:\n \"These are followups for the earlier deadlock issue involving async\n  ending up waiting for itself through block requesting module[1].  The\n  following changes are made by these commits.\n\n   - Instead of requesting default elevator on each request_queue init,\n     block now requests it once early during boot.\n\n   - Kmod triggers warning if invoked from an async worker.\n\n   - Async synchronization implementation has been reimplemented.  It\u0027s\n     a lot simpler now.\"\n\n* \u0027for-3.9-async\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tj/wq:\n  async: initialise list heads to fix crash\n  async: replace list of active domains with global list of pending items\n  async: keep pending tasks on async_domain and remove async_pending\n  async: use ULLONG_MAX for infinity cookie value\n  async: bring sanity to the use of words domain and running\n  async, kmod: warn on synchronous request_module() from async workers\n  block: don\u0027t request module during elevator init\n  init, block: try to load default elevator module early during boot\n"
    },
    {
      "commit": "d652e1eb8e7b739fccbfb503a3da3e9f640fbf3d",
      "tree": "55ab77bad0cbb045eac0b84b80d63f88f1ae09e6",
      "parents": [
        "8f55cea410dbc56114bb71a3742032070c8108d0",
        "77852fea6e2442a0e654a9292060489895de18c7"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Feb 19 18:19:48 2013 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Feb 19 18:19:48 2013 -0800"
      },
      "message": "Merge branch \u0027sched-core-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip\n\nPull scheduler changes from Ingo Molnar:\n \"Main changes:\n\n   - scheduler side full-dynticks (user-space execution is undisturbed\n     and receives no timer IRQs) preparation changes that convert the\n     cputime accounting code to be full-dynticks ready, from Frederic\n     Weisbecker.\n\n   - Initial sched.h split-up changes, by Clark Williams\n\n   - select_idle_sibling() performance improvement by Mike Galbraith:\n\n        \" 1 tbench pair (worst case) in a 10 core + SMT package:\n\n          pre   15.22 MB/sec 1 procs\n          post 252.01 MB/sec 1 procs \"\n\n  - sched_rr_get_interval() ABI fix/change.  We think this detail is not\n    used by apps (so it\u0027s not an ABI in practice), but lets keep it\n    under observation.\n\n  - misc RT scheduling cleanups, optimizations\"\n\n* \u0027sched-core-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: (24 commits)\n  sched/rt: Add \u003clinux/sched/rt.h\u003e header to \u003clinux/init_task.h\u003e\n  cputime: Remove irqsave from seqlock readers\n  sched, powerpc: Fix sched.h split-up build failure\n  cputime: Restore CPU_ACCOUNTING config defaults for PPC64\n  sched/rt: Move rt specific bits into new header file\n  sched/rt: Add a tuning knob to allow changing SCHED_RR timeslice\n  sched: Move sched.h sysctl bits into separate header\n  sched: Fix signedness bug in yield_to()\n  sched: Fix select_idle_sibling() bouncing cow syndrome\n  sched/rt: Further simplify pick_rt_task()\n  sched/rt: Do not account zero delta_exec in update_curr_rt()\n  cputime: Safely read cputime of full dynticks CPUs\n  kvm: Prepare to add generic guest entry/exit callbacks\n  cputime: Use accessors to read task cputime stats\n  cputime: Allow dynamic switch between tick/virtual based cputime accounting\n  cputime: Generic on-demand virtual cputime accounting\n  cputime: Move default nsecs_to_cputime() to jiffies based cputime file\n  cputime: Librarize per nsecs resolution cputime definitions\n  cputime: Avoid multiplication overflow on utime scaling\n  context_tracking: Export context state for generic vtime\n  ...\n\nFix up conflict in kernel/context_tracking.c due to comment additions.\n"
    },
    {
      "commit": "5577022f4ed8973762450ebe7fe7ebfd953817db",
      "tree": "c6c965101e32bf2b36155da0fc0ad94c696d4606",
      "parents": [
        "686855f5d833178e518d79e7912cdb3268a9fa69"
      ],
      "author": {
        "name": "Vladimir Davydov",
        "email": "vdavydov@parallels.com",
        "time": "Thu Feb 14 18:19:59 2013 +0400"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@kernel.dk",
        "time": "Fri Feb 15 16:45:07 2013 +0100"
      },
      "message": "block: account iowait time when waiting for completion of IO request\n\nUsing wait_for_completion() for waiting for a IO request to be executed\nresults in wrong iowait time accounting. For example, a system having\nthe only task doing write() and fdatasync() on a block device can be\nreported being idle instead of iowaiting as it should because\nblkdev_issue_flush() calls wait_for_completion() which in turn calls\nschedule() that does not increment the iowait proc counter and thus does\nnot turn on iowait time accounting.\n\nThe patch makes block layer use wait_for_completion_io() instead of\nwait_for_completion() where appropriate to account iowait time\ncorrectly.\n\nSigned-off-by: Vladimir Davydov \u003cvdavydov@parallels.com\u003e\nSigned-off-by: Jens Axboe \u003caxboe@kernel.dk\u003e\n"
    },
    {
      "commit": "cf4aebc292fac7f34f8345664320e9d4a42ca76c",
      "tree": "6eceb9bb2d8382c4499366a8fee060688aad6107",
      "parents": [
        "b2c77a57e4a0a7877e357dead7ee8acc19944f3e"
      ],
      "author": {
        "name": "Clark Williams",
        "email": "williams@redhat.com",
        "time": "Thu Feb 07 09:46:59 2013 -0600"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@kernel.org",
        "time": "Thu Feb 07 20:50:54 2013 +0100"
      },
      "message": "sched: Move sched.h sysctl bits into separate header\n\nMove the sysctl-related bits from include/linux/sched.h into\na new file: include/linux/sched/sysctl.h. Then update source\nfiles requiring access to those bits by including the new\nheader file.\n\nSigned-off-by: Clark Williams \u003cwilliams@redhat.com\u003e\nCc: Peter Zijlstra \u003cpeterz@infradead.org\u003e\nCc: Steven Rostedt \u003crostedt@goodmis.org\u003e\nLink: http://lkml.kernel.org/r/20130207094659.06dced96@riff.lan\nSigned-off-by: Ingo Molnar \u003cmingo@kernel.org\u003e\n"
    },
    {
      "commit": "21c3c5d2800733b7a276725b8e1ae49a694adc1a",
      "tree": "5e9150f182dc71be6b939ac4dbd2c570d7313407",
      "parents": [
        "bb813f4c933ae9f887a014483690d5f8b8ec05e1"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Tue Jan 22 16:48:03 2013 -0800"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Tue Jan 22 16:48:03 2013 -0800"
      },
      "message": "block: don\u0027t request module during elevator init\n\nBlock layer allows selecting an elevator which is built as a module to\nbe selected as system default via kernel param \"elevator\u003d\".  This is\nachieved by automatically invoking request_module() whenever a new\nblock device is initialized and the elevator is not available.\n\nThis led to an interesting deadlock problem involving async and module\ninit.  Block device probing running off an async job invokes\nrequest_module().  While the module is being loaded, it performs\nasync_synchronize_full() which ends up waiting for the async job which\nis already waiting for request_module() to finish, leading to\ndeadlock.\n\nInvoking request_module() from deep in block device init path is\nalready nasty in itself.  It seems best to avoid these situations from\nthe beginning by moving on-demand module loading out of block init\npath.\n\nThe previous patch made sure that the default elevator module is\nloaded early during boot if available.  This patch removes on-demand\nloading of the default elevator from elevator init path.  As the\nmodule would have been loaded during boot, userland-visible behavior\ndifference should be minimal.\n\nFor more details, please refer to the following thread.\n\n  http://thread.gmane.org/gmane.linux.kernel/1420814\n\nv2: The bool parameter was named @request_module which conflicted with\n    request_module().  This built okay w/ CONFIG_MODULES because\n    request_module() was defined as a macro.  W/o CONFIG_MODULES, it\n    causes build breakage.  Rename the parameter to @try_loading.\n    Reported by Fengguang.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nCc: Jens Axboe \u003caxboe@kernel.dk\u003e\nCc: Arjan van de Ven \u003carjan@linux.intel.com\u003e\nCc: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\nCc: Alex Riesen \u003craa.lkml@gmail.com\u003e\nCc: Fengguang Wu \u003cfengguang.wu@intel.com\u003e\n"
    },
    {
      "commit": "bb813f4c933ae9f887a014483690d5f8b8ec05e1",
      "tree": "04107b0ae2d1881960dea63b623915db159ecacc",
      "parents": [
        "84b233adcca3cacd5cfa8013a5feda7a3db4a9af"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Fri Jan 18 14:05:56 2013 -0800"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Fri Jan 18 14:05:56 2013 -0800"
      },
      "message": "init, block: try to load default elevator module early during boot\n\nThis patch adds default module loading and uses it to load the default\nblock elevator.  During boot, it\u0027s called right after initramfs or\ninitrd is made available and right before control is passed to\nuserland.  This ensures that as long as the modules are available in\nthe usual places in initramfs, initrd or the root filesystem, the\ndefault modules are loaded as soon as possible.\n\nThis will replace the on-demand elevator module loading from elevator\ninit path.\n\nv2: Fixed build breakage when !CONFIG_BLOCK.  Reported by kbuild test\n    robot.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nCc: Jens Axboe \u003caxboe@kernel.dk\u003e\nCc: Arjan van de Ven \u003carjan@linux.intel.com\u003e\nCc: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\nCc: Alex Riesen \u003craa.lkml@gmail.com\u003e\nCc: Fengguang We \u003cfengguang.wu@intel.com\u003e\n"
    },
    {
      "commit": "8c1cf6bb02fda79b0a4b9bd121f6be6d4ce7a15a",
      "tree": "e10008c7fb3c7b8cf832712dd6e7b55f149a49e6",
      "parents": [
        "3a366e614d0837d9fc23f78cdb1a1186ebc3387f"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Fri Jan 11 13:06:34 2013 -0800"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@kernel.dk",
        "time": "Mon Jan 14 15:00:36 2013 +0100"
      },
      "message": "block: add @req to bio_{front|back}_merge tracepoints\n\nbio_{front|back}_merge tracepoints report a bio merging into an\nexisting request but didn\u0027t specify which request the bio is being\nmerged into.  Add @req to it.  This makes it impossible to share the\nevent template with block_bio_queue - split it out.\n\n@req isn\u0027t used or exported to userland at this point and there is no\nuserland visible behavior change.  Later changes will make use of the\nextra parameter.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nSigned-off-by: Jens Axboe \u003caxboe@kernel.dk\u003e\n"
    },
    {
      "commit": "3a366e614d0837d9fc23f78cdb1a1186ebc3387f",
      "tree": "5be6ec716687234ac1e6202db62c84ee1d2246be",
      "parents": [
        "ac9a19745196388ae5d828c0be7a1d6e472101f3"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Fri Jan 11 13:06:33 2013 -0800"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@kernel.dk",
        "time": "Mon Jan 14 15:00:36 2013 +0100"
      },
      "message": "block: add missing block_bio_complete() tracepoint\n\nbio completion didn\u0027t kick block_bio_complete TP.  Only dm was\nexplicitly triggering the TP on IO completion.  This makes\nblock_bio_complete TP useless for tracers which want to know about\nbios, and all other bio based drivers skip generating blktrace\ncompletion events.\n\nThis patch makes all bio completions via bio_endio() generate\nblock_bio_complete TP.\n\n* Explicit trace_block_bio_complete() invocation removed from dm and\n  the trace point is unexported.\n\n* @rq dropped from trace_block_bio_complete().  bios may fly around\n  w/o queue associated.  Verifying and accessing the assocaited queue\n  belongs to TP probes.\n\n* blktrace now gets both request and bio completions.  Make it ignore\n  bio completions if request completion path is happening.\n\nThis makes all bio based drivers generate blktrace completion events\nproperly and makes the block_bio_complete TP actually useful.\n\nv2: With this change, block_bio_complete TP could be invoked on sg\n    commands which have bio\u0027s with %NULL bi_bdev.  Update TP\n    assignment code to check whether bio-\u003ebi_bdev is %NULL before\n    dereferencing.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nOriginal-patch-by: Namhyung Kim \u003cnamhyung@gmail.com\u003e\nCc: Tejun Heo \u003ctj@kernel.org\u003e\nCc: Steven Rostedt \u003crostedt@goodmis.org\u003e\nCc: Alasdair Kergon \u003cagk@redhat.com\u003e\nCc: dm-devel@redhat.com\nCc: Neil Brown \u003cneilb@suse.de\u003e\nSigned-off-by: Jens Axboe \u003caxboe@kernel.dk\u003e\n"
    },
    {
      "commit": "ac9a19745196388ae5d828c0be7a1d6e472101f3",
      "tree": "49c47e1a07241653deb4a4b4e7a91626f586ad05",
      "parents": [
        "422765c2638924da10ff363b5eed77924911bdc7",
        "43114018cb0b253fd03c4ff4d42bcdc43389ac1c"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "axboe@kernel.dk",
        "time": "Fri Jan 11 19:53:53 2013 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@kernel.dk",
        "time": "Fri Jan 11 19:53:53 2013 +0100"
      },
      "message": "Merge branch \u0027blkcg-cfq-hierarchy\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tj/cgroup into for-3.9/core\n\nTejun writes:\n\nHello, Jens.\n\nPlease consider pulling from the following branch to receive cfq blkcg\nhierarchy support.  The branch is based on top of v3.8-rc2.\n\n  git://git.kernel.org/pub/scm/linux/kernel/git/tj/cgroup.git blkcg-cfq-hierarchy\n\nThe patchset was reviewd in the following thread.\n\n  http://thread.gmane.org/gmane.linux.kernel.cgroups/5571\n"
    },
    {
      "commit": "422765c2638924da10ff363b5eed77924911bdc7",
      "tree": "76ae39f6f744e45ec023859c2d46fad2aeaf7714",
      "parents": [
        "242d98f077ac0ab80920219769eb095503b93f61"
      ],
      "author": {
        "name": "Jianpeng Ma",
        "email": "majianpeng@gmail.com",
        "time": "Fri Jan 11 14:46:09 2013 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@kernel.dk",
        "time": "Fri Jan 11 14:46:09 2013 +0100"
      },
      "message": "block: Remove should_sort judgement when flush blk_plug\n\nIn commit 975927b942c932,it add blk_rq_pos to sort rq when flushing.\nAlthough this commit was used for the situation which blk_plug handled\nmulti devices on the same time like md device.\nI think there must be some situations like this but only single\ndevice.\nSo remove the should_sort judgement.\nBecause the parameter should_sort is only for this purpose,it can delete\nshould_sort from blk_plug.\n\nCC: Shaohua Li \u003cshli@kernel.org\u003e\nSigned-off-by: Jianpeng Ma \u003cmajianpeng@gmail.com\u003e\nSigned-off-by: Jens Axboe \u003caxboe@kernel.dk\u003e\n"
    },
    {
      "commit": "242d98f077ac0ab80920219769eb095503b93f61",
      "tree": "df4bd59a6db181b796ff8687339e4335e2c59104",
      "parents": [
        "9931faca02c604c22335f5a935a501bb2ace6e20"
      ],
      "author": {
        "name": "Sasha Levin",
        "email": "sasha.levin@oracle.com",
        "time": "Mon Dec 17 10:01:27 2012 -0500"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@kernel.dk",
        "time": "Fri Jan 11 14:43:13 2013 +0100"
      },
      "message": "block,elevator: use new hashtable implementation\n\nSwitch elevator to use the new hashtable implementation. This reduces the\namount of generic unrelated code in the elevator.\n\nThis also removes the dymanic allocation of the hash table. The size of the table is\nconstant so there\u0027s no point in paying the price of an extra dereference when accessing\nit.\n\nThis patch depends on d9b482c (\"hashtable: introduce a small and naive\nhashtable\") which was merged in v3.6.\n\nSigned-off-by: Sasha Levin \u003csasha.levin@oracle.com\u003e\nSigned-off-by: Jens Axboe \u003caxboe@kernel.dk\u003e\n"
    },
    {
      "commit": "43114018cb0b253fd03c4ff4d42bcdc43389ac1c",
      "tree": "abe35791e5ab46d944f35112e25570ab861a7e2f",
      "parents": [
        "0b39920b5f9f3ad37dd259bfa2e9cbca33475b28"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Wed Jan 09 08:05:13 2013 -0800"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Wed Jan 09 08:05:13 2013 -0800"
      },
      "message": "cfq-iosched: add hierarchical cfq_group statistics\n\nUnfortunately, at this point, there\u0027s no way to make the existing\nstatistics hierarchical without creating nasty surprises for the\nexisting users.  Just create recursive counterpart of the existing\nstats.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nAcked-by: Vivek Goyal \u003cvgoyal@redhat.com\u003e\n"
    },
    {
      "commit": "0b39920b5f9f3ad37dd259bfa2e9cbca33475b28",
      "tree": "84f3c07ae535dbf02276ff3645b4fbfe95419d9b",
      "parents": [
        "689665af4489f779bc82e7869509c9ac11b5a903"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Wed Jan 09 08:05:13 2013 -0800"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Wed Jan 09 08:05:13 2013 -0800"
      },
      "message": "cfq-iosched: collect stats from dead cfqgs\n\nTo support hierarchical stats, it\u0027s necessary to remember stats from\ndead children.  Add cfqg-\u003edead_stats and make a dying cfqg transfer\nits stats to the parent\u0027s dead-stats.\n\nThe transfer happens form -\u003epd_offline_fn() and it is possible that\nthere are some residual IOs completing afterwards.  Currently, we lose\nthese stats.  Given that cgroup removal isn\u0027t a very high frequency\noperation and the amount of residual IOs on offline are likely to be\nnil or small, this shouldn\u0027t be a big deal and the complexity needed\nto handle residual IOs - another callback and rather elaborate\nsynchronization to reach and lock the matching q - doesn\u0027t seem\njustified.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nAcked-by: Vivek Goyal \u003cvgoyal@redhat.com\u003e\n"
    },
    {
      "commit": "689665af4489f779bc82e7869509c9ac11b5a903",
      "tree": "2ae00b3beb2f658987d3e65cf9d08ff24ce916e3",
      "parents": [
        "810ecfa765f8be20c8d9c468885b3403a2232d2f"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Wed Jan 09 08:05:13 2013 -0800"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Wed Jan 09 08:05:13 2013 -0800"
      },
      "message": "cfq-iosched: separate out cfqg_stats_reset() from cfq_pd_reset_stats()\n\nSeparate out cfqg_stats_reset() which takes struct cfqg_stats * from\ncfq_pd_reset_stats() and move the latter to where other pd methods are\ndefined.  cfqg_stats_reset() will be used to implement hierarchical\nstats.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nAcked-by: Vivek Goyal \u003cvgoyal@redhat.com\u003e\n"
    },
    {
      "commit": "810ecfa765f8be20c8d9c468885b3403a2232d2f",
      "tree": "0c9173defed8de28cf43d972b8e36b48fbcc6f24",
      "parents": [
        "548bc8e1b38e48653a90f48f636f8d253504f8a2"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Wed Jan 09 08:05:13 2013 -0800"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Wed Jan 09 08:05:13 2013 -0800"
      },
      "message": "blkcg: make blkcg_print_blkgs() grab q locks instead of blkcg lock\n\nInstead of holding blkcg-\u003elock while walking -\u003eblkg_list and executing\nprfill(), RCU walk -\u003eblkg_list and hold the blkg\u0027s queue lock while\nexecuting prfill().  This makes prfill() implementations easier as\nstats are mostly protected by queue lock.\n\nThis will be used to implement hierarchical stats.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nAcked-by: Vivek Goyal \u003cvgoyal@redhat.com\u003e\n"
    },
    {
      "commit": "548bc8e1b38e48653a90f48f636f8d253504f8a2",
      "tree": "db4aca3e40185423e465ef5a67f44658ff292443",
      "parents": [
        "16b3de6652c7aef151f38726faf90f0dbc9e9c71"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Wed Jan 09 08:05:13 2013 -0800"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Wed Jan 09 08:05:13 2013 -0800"
      },
      "message": "block: RCU free request_queue\n\nRCU free request_queue so that blkcg_gq-\u003eq can be dereferenced under\nRCU lock.  This will be used to implement hierarchical stats.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nAcked-by: Vivek Goyal \u003cvgoyal@redhat.com\u003e\n"
    },
    {
      "commit": "16b3de6652c7aef151f38726faf90f0dbc9e9c71",
      "tree": "1b8e615c5261b677ff6a6a3b25fad46b34d1b64b",
      "parents": [
        "b50da39f51139f81b3115d0f9d8632507f802755"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Wed Jan 09 08:05:12 2013 -0800"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Wed Jan 09 08:05:12 2013 -0800"
      },
      "message": "blkcg: implement blkg_[rw]stat_recursive_sum() and blkg_[rw]stat_merge()\n\nImplement blkg_[rw]stat_recursive_sum() and blkg_[rw]stat_merge().\nThe former two collect the [rw]stats designated by the target policy\ndata and offset from the pd\u0027s subtree.  The latter two add one\n[rw]stat to another.\n\nNote that the recursive sum functions require the queue lock to be\nheld on entry to make blkg online test reliable.  This is necessary to\nproperly handle stats of a dying blkg.\n\nThese will be used to implement hierarchical stats.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nAcked-by: Vivek Goyal \u003cvgoyal@redhat.com\u003e\n"
    },
    {
      "commit": "b50da39f51139f81b3115d0f9d8632507f802755",
      "tree": "98d8fc862dfa6ad7ed7c9366035eea36a6489d5c",
      "parents": [
        "4d5e80a76074786a49879ff482a83e72ad634606"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Wed Jan 09 08:05:12 2013 -0800"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Wed Jan 09 08:05:12 2013 -0800"
      },
      "message": "blkcg: export __blkg_prfill_rwstat()\n\nHierarchical stats for cfq-iosched will need __blkg_prfill_rwstat().\nExport it.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nReported-by: Fengguang Wu \u003cfengguang.wu@intel.com\u003e\n"
    },
    {
      "commit": "4d5e80a76074786a49879ff482a83e72ad634606",
      "tree": "2bfc06bd5707407c53a295061a2a609af75791d0",
      "parents": [
        "f427d909648aa592c9588d0f66b5b457752a0cd1"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Wed Jan 09 08:05:12 2013 -0800"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Wed Jan 09 08:05:12 2013 -0800"
      },
      "message": "blkcg: s/blkg_rwstat_sum()/blkg_rwstat_total()/\n\nRename blkg_rwstat_sum() to blkg_rwstat_total().  sum will be used for\nsumming up stats from multiple blkgs.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nAcked-by: Vivek Goyal \u003cvgoyal@redhat.com\u003e\n"
    },
    {
      "commit": "f427d909648aa592c9588d0f66b5b457752a0cd1",
      "tree": "d6f91a6d46a1302f0cca6137851f0806364b7965",
      "parents": [
        "b276a876a014c5fa58a16f247c0933f6c42112e3"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Wed Jan 09 08:05:12 2013 -0800"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Wed Jan 09 08:05:12 2013 -0800"
      },
      "message": "blkcg: implement blkcg_policy-\u003eon/offline_pd_fn() and blkcg_gq-\u003eonline\n\nAdd two blkcg_policy methods, -\u003eonline_pd_fn() and -\u003eoffline_pd_fn(),\nwhich are invoked as the policy_data gets activated and deactivated\nwhile holding both blkcg and q locks.\n\nAlso, add blkcg_gq-\u003eonline bool, which is set and cleared as the\nblkcg_gq gets activated and deactivated.  This flag also is toggled\nwhile holding both blkcg and q locks.\n\nThese will be used to implement hierarchical stats.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nAcked-by: Vivek Goyal \u003cvgoyal@redhat.com\u003e\n"
    },
    {
      "commit": "b276a876a014c5fa58a16f247c0933f6c42112e3",
      "tree": "c49f85e03d11296683ed938864bd823cdeaa614f",
      "parents": [
        "d02f7aa8dce8166dbbc515ce393912aa45e6b8a6"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Wed Jan 09 08:05:12 2013 -0800"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Wed Jan 09 08:05:12 2013 -0800"
      },
      "message": "blkcg: add blkg_policy_data-\u003eplid\n\nAdd pd-\u003eplid so that the policy a pd belongs to can be identified\neasily.  This will be used to implement hierarchical blkg_[rw]stats.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nAcked-by: Vivek Goyal \u003cvgoyal@redhat.com\u003e\n"
    },
    {
      "commit": "d02f7aa8dce8166dbbc515ce393912aa45e6b8a6",
      "tree": "8a3e8e54bed797bb084a83008ca47065a261a9d6",
      "parents": [
        "41cad6ab2cb9ccb3b11546ad56b8b285e47c6279"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Wed Jan 09 08:05:11 2013 -0800"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Wed Jan 09 08:05:11 2013 -0800"
      },
      "message": "cfq-iosched: enable full blkcg hierarchy support\n\nWith the previous two patches, all cfqg scheduling decisions are based\non vfraction and ready for hierarchy support.  The only thing which\nkeeps the behavior flat is cfqg_flat_parent() which makes vfraction\ncalculation consider all non-root cfqgs children of the root cfqg.\n\nReplace it with cfqg_parent() which returns the real parent.  This\nenables full blkcg hierarchy support for cfq-iosched.  For example,\nconsider the following hierarchy.\n\n        root\n      /      \\\n   A:500      B:250\n  /     \\\n AA:500  AB:1000\n\nFor simplicity, let\u0027s say all the leaf nodes have active tasks and are\non service tree.  For each leaf node, vfraction would be\n\n AA: (500  / 1500) * (500 / 750) \u003d~ 0.2222\n AB: (1000 / 1500) * (500 / 750) \u003d~ 0.4444\n  B:                 (250 / 750) \u003d~ 0.3333\n\nand vdisktime will be distributed accordingly.  For more detail,\nplease refer to Documentation/block/cfq-iosched.txt.\n\nv2: cfq-iosched.txt updated to describe group scheduling as suggested\n    by Vivek.\n\nv3: blkio-controller.txt updated.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nAcked-by: Vivek Goyal \u003cvgoyal@redhat.com\u003e\n"
    },
    {
      "commit": "41cad6ab2cb9ccb3b11546ad56b8b285e47c6279",
      "tree": "c6308080ab464a5f7a5da52035e948431061949a",
      "parents": [
        "1d3650f713e7f6392b02fde450c5bae40291e65b"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Wed Jan 09 08:05:11 2013 -0800"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Wed Jan 09 08:05:11 2013 -0800"
      },
      "message": "cfq-iosched: convert cfq_group_slice() to use cfqg-\u003evfraction\n\ncfq_group_slice() calculates slice by taking a fraction of\ncfq_target_latency according to the ratio of cfqg-\u003eweight against\nservice_tree-\u003etotal_weight.  This currently works only because all\ncfqgs are treated to be at the same level.\n\nTo prepare for proper hierarchy support, convert cfq_group_slice() to\nbase the calculation on cfqg-\u003evfraction.  As cfqg-\u003evfraction is always\na fraction of 1 and represents the fraction allocated to the cfqg with\nhierarchy considered, the slice can be simply calculated by\nmultiplying cfqg-\u003evfraction to cfq_target_latency (with fixed point\nshift factored in).\n\nAs vfraction calculation currently treats all non-root cfqgs as\nchildren of the root cfqg, this patch doesn\u0027t introduce noticeable\nbehavior difference.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nAcked-by: Vivek Goyal \u003cvgoyal@redhat.com\u003e\n"
    },
    {
      "commit": "1d3650f713e7f6392b02fde450c5bae40291e65b",
      "tree": "bc1645e9ce6d762894b51505fc90253f9a9aed58",
      "parents": [
        "7918ffb5b83e3373206ada84873c674fbddf61cc"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Wed Jan 09 08:05:11 2013 -0800"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Wed Jan 09 08:05:11 2013 -0800"
      },
      "message": "cfq-iosched: implement hierarchy-ready cfq_group charge scaling\n\nCurrently, cfqg charges are scaled directly according to cfqg-\u003eweight.\nRegardless of the number of active cfqgs or the amount of active\nweights, a given weight value always scales charge the same way.  This\nworks fine as long as all cfqgs are treated equally regardless of\ntheir positions in the hierarchy, which is what cfq currently\nimplements.  It can\u0027t work in hierarchical settings because the\ninterpretation of a given weight value depends on where the weight is\nlocated in the hierarchy.\n\nThis patch reimplements cfqg charge scaling so that it can be used to\nsupport hierarchy properly.  The scheme is fairly simple and\nlight-weight.\n\n* When a cfqg is added to the service tree, v(disktime)weight is\n  calculated.  It walks up the tree to root calculating the fraction\n  it has in the hierarchy.  At each level, the fraction can be\n  calculated as\n\n    cfqg-\u003eweight / parent-\u003elevel_weight\n\n  By compounding these, the global fraction of vdisktime the cfqg has\n  claim to - vfraction - can be determined.\n\n* When the cfqg needs to be charged, the charge is scaled inversely\n  proportionally to the vfraction.\n\nThe new scaling scheme uses the same CFQ_SERVICE_SHIFT for fixed point\nrepresentation as before; however, the smallest scaling factor is now\n1 (ie. 1 \u003c\u003c CFQ_SERVICE_SHIFT).  This is different from before where 1\nwas for CFQ_WEIGHT_DEFAULT and higher weight would result in smaller\nscaling factor.\n\nWhile this shifts the global scale of vdisktime a bit, it doesn\u0027t\nchange the relative relationships among cfqgs and the scheduling\nresult isn\u0027t different.\n\ncfq_group_notify_queue_add uses fixed CFQ_IDLE_DELAY when appending\nnew cfqg to the service tree.  The specific value of CFQ_IDLE_DELAY\ndidn\u0027t have any relevance to vdisktime before and is unlikely to cause\nany visible behavior difference now especially as the scale shift\nisn\u0027t that large.\n\nAs the new scheme now makes proper distinction between cfqg-\u003eweight\nand -\u003eleaf_weight, reverse the weight aliasing for root cfqgs.  For\nroot, both weights are now mapped to -\u003eleaf_weight instead of the\nother way around.\n\nBecause we\u0027re still using cfqg_flat_parent(), this patch shouldn\u0027t\nchange the scheduling behavior in any noticeable way.\n\nv2: Beefed up comments on vfraction as requested by Vivek.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nAcked-by: Vivek Goyal \u003cvgoyal@redhat.com\u003e\n"
    },
    {
      "commit": "7918ffb5b83e3373206ada84873c674fbddf61cc",
      "tree": "d7b2fe17efe9453fbb1afbfad8c7fc0e7a6bb01b",
      "parents": [
        "e71357e118bdd4057e3bc020b9d80fecdd08f588"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Wed Jan 09 08:05:11 2013 -0800"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Wed Jan 09 08:05:11 2013 -0800"
      },
      "message": "cfq-iosched: implement cfq_group-\u003enr_active and -\u003echildren_weight\n\nTo prepare for blkcg hierarchy support, add cfqg-\u003enr_active and\n-\u003echildren_weight.  cfqg-\u003enr_active counts the number of active cfqgs\nat the cfqg\u0027s level and -\u003echildren_weight is sum of weights of those\ncfqgs.  The level covers itself (cfqg-\u003eleaf_weight) and immediate\nchildren.\n\nThe two values are updated when a cfqg enters and leaves the group\nservice tree.  Unless the hierarchy is very deep, the added overhead\nshould be negligible.\n\nCurrently, the parent is determined using cfqg_flat_parent() which\nmakes the root cfqg the parent of all other cfqgs.  This is to make\nthe transition to hierarchy-aware scheduling gradual.  Scheduling\nlogic will be converted to use cfqg-\u003echildren_weight without actually\nchanging the behavior.  When everything is ready,\nblkcg_weight_parent() will be replaced with proper parent function.\n\nThis patch doesn\u0027t introduce any behavior chagne.\n\nv2: s/cfqg-\u003elevel_weight/cfqg-\u003echildren_weight/ as per Vivek.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nAcked-by: Vivek Goyal \u003cvgoyal@redhat.com\u003e\n"
    },
    {
      "commit": "e71357e118bdd4057e3bc020b9d80fecdd08f588",
      "tree": "a26644afeb5efb7dcd5f2e8a59c32c1d509f8574",
      "parents": [
        "3c547865902e9fc30dc15941f326fd8039c6628d"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Wed Jan 09 08:05:10 2013 -0800"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Wed Jan 09 08:05:10 2013 -0800"
      },
      "message": "cfq-iosched: add leaf_weight\n\ncfq blkcg is about to grow proper hierarchy handling, where a child\nblkg\u0027s weight would nest inside the parent\u0027s.  This makes tasks in a\nblkg to compete against both tasks in the sibling blkgs and the tasks\nof child blkgs.\n\nWe\u0027re gonna use the existing weight as the group weight which decides\nthe blkg\u0027s weight against its siblings.  This patch introduces a new\nweight - leaf_weight - which decides the weight of a blkg against the\nchild blkgs.\n\nIt\u0027s named leaf_weight because another way to look at it is that each\ninternal blkg nodes have a hidden child leaf node which contains all\nits tasks and leaf_weight is the weight of the leaf node and handled\nthe same as the weight of the child blkgs.\n\nThis patch only adds leaf_weight fields and exposes it to userland.\nThe new weight isn\u0027t actually used anywhere yet.  Note that\ncfq-iosched currently offcially supports only single level hierarchy\nand root blkgs compete with the first level blkgs - ie. root weight is\nbasically being used as leaf_weight.  For root blkgs, the two weights\nare kept in sync for backward compatibility.\n\nv2: cfqd-\u003eroot_group-\u003eleaf_weight initialization was missing from\n    cfq_init_queue() causing divide by zero when\n    !CONFIG_CFQ_GROUP_SCHED.  Fix it.  Reported by Fengguang.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nCc: Fengguang Wu \u003cfengguang.wu@intel.com\u003e\n"
    },
    {
      "commit": "3c547865902e9fc30dc15941f326fd8039c6628d",
      "tree": "e86d926e86258cfc69d6665e28551fa14267634e",
      "parents": [
        "93e6d5d8f5c909479623c6ab4427f038c6c3f63f"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Wed Jan 09 08:05:10 2013 -0800"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Wed Jan 09 08:05:10 2013 -0800"
      },
      "message": "blkcg: make blkcg_gq\u0027s hierarchical\n\nCurrently a child blkg (blkcg_gq) can be created even if its parent\ndoesn\u0027t exist.  ie. Given a blkg, it\u0027s not guaranteed that its\nancestors will exist.  This makes it difficult to implement proper\nhierarchy support for blkcg policies.\n\nAlways create blkgs recursively and make a child blkg hold a reference\nto its parent.  blkg-\u003eparent is added so that finding the parent is\neasy.  blkcg_parent() is also added in the process.\n\nThis change can be visible to userland.  e.g. while issuing IO in a\nnested cgroup didn\u0027t affect the ancestors at all, now it will\ninitialize all ancestor blkgs and zero stats for the request_queue\nwill always appear on them.  While this is userland visible, this\nshouldn\u0027t cause any functional difference.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nAcked-by: Vivek Goyal \u003cvgoyal@redhat.com\u003e\n"
    },
    {
      "commit": "93e6d5d8f5c909479623c6ab4427f038c6c3f63f",
      "tree": "a67f60f0b7582f0e85437455c40e071fb27607dd",
      "parents": [
        "86cde6b62313dd221c2e5935db02de7234cb4164"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Wed Jan 09 08:05:10 2013 -0800"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Wed Jan 09 08:05:10 2013 -0800"
      },
      "message": "blkcg: cosmetic updates to blkg_create()\n\n* Rename out_* labels to err_*.\n\n* Do ERR_PTR() conversion once in the error return path.\n\nThis patch is cosmetic and to prepare for the hierarchy support.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nAcked-by: Vivek Goyal \u003cvgoyal@redhat.com\u003e\n"
    },
    {
      "commit": "86cde6b62313dd221c2e5935db02de7234cb4164",
      "tree": "879485988325bb8d97882cac82056bff434b000e",
      "parents": [
        "356d2e581032b686da0854c7f17de2027c872762"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Wed Jan 09 08:05:10 2013 -0800"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Wed Jan 09 08:05:10 2013 -0800"
      },
      "message": "blkcg: reorganize blkg_lookup_create() and friends\n\nReorganize such that\n\n* __blkg_lookup() takes bool param @update_hint to determine whether\n  to update hint.\n\n* __blkg_lookup_create() no longer performs lookup before trying to\n  create.  Renamed to blkg_create().\n\n* blkg_lookup_create() now performs lookup and then invokes\n  blkg_create() if lookup fails.\n\n* root_blkg creation in blkcg_activate_policy() updated accordingly.\n  Note that blkcg_activate_policy() no longer updates lookup hint if\n  root_blkg already exists.\n\nExcept for the last lookup hint bit which is immaterial, this is pure\nreorganization and doesn\u0027t introduce any visible behavior change.\nThis is to prepare for proper hierarchy support.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nAcked-by: Vivek Goyal \u003cvgoyal@redhat.com\u003e\n"
    },
    {
      "commit": "356d2e581032b686da0854c7f17de2027c872762",
      "tree": "c3c10018d5856523ba6a8a3816b433a1b5214412",
      "parents": [
        "b226e5c411759eec29308f0ea38e918aa695dc7f"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Wed Jan 09 08:05:10 2013 -0800"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Wed Jan 09 08:05:10 2013 -0800"
      },
      "message": "blkcg: fix minor bug in blkg_alloc()\n\nblkg_alloc() was mistakenly checking blkcg_policy_enabled() twice.\nThe latter test should have been on whether pol-\u003epd_init_fn() exists.\nThis doesn\u0027t cause actual problems because both blkcg policies\nimplement pol-\u003epd_init_fn().  Fix it.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nAcked-by: Vivek Goyal \u003cvgoyal@redhat.com\u003e\n"
    },
    {
      "commit": "b226e5c411759eec29308f0ea38e918aa695dc7f",
      "tree": "6f2499ce07c59f7a180de4b21bd5fc8e8f4c09bd",
      "parents": [
        "1f23f12151ab508728dd5fca12180e2fce6c6949"
      ],
      "author": {
        "name": "Vivek Goyal",
        "email": "vgoyal@redhat.com",
        "time": "Wed Oct 03 16:57:01 2012 -0400"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Wed Jan 09 08:05:09 2013 -0800"
      },
      "message": "cfq-iosched: Print sync-noidle information in blktrace messages\n\nCurrently we attach a character \"S\" or \"A\" to the cfqq\u003cpid\u003e, to represent\nwhether queues is sync or async. Add one more character \"N\" to represent\nwhether it is sync-noidle queue or sync queue. So now three different\ntype of queues will look as follows.\n\ncfq1234S   --\u003e sync queus\ncfq1234SN  --\u003e sync noidle queue\ncfq1234A   --\u003e Async queue\n\nPreviously S/A classification was being printed only if group scheduling\nwas enabled. This patch also makes sure that this classification is\ndisplayed even if group idling is disabled.\n\nSigned-off-by: Vivek Goyal \u003cvgoyal@redhat.com\u003e\nAcked-by: Jeff Moyer \u003cjmoyer@redhat.com\u003e\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\n"
    },
    {
      "commit": "1f23f12151ab508728dd5fca12180e2fce6c6949",
      "tree": "ebd8f061f62d381d9f346f4d720f0a6288143eb6",
      "parents": [
        "6d816ec7c83871da7c2472af7479d2438e641052"
      ],
      "author": {
        "name": "Vivek Goyal",
        "email": "vgoyal@redhat.com",
        "time": "Wed Oct 03 16:57:00 2012 -0400"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Wed Jan 09 08:05:09 2013 -0800"
      },
      "message": "cfq-iosched: Get rid of unnecessary local variable\n\nUse of local varibale \"n\" seems to be unnecessary. Remove it. This brings\nit inline with function __cfq_group_st_add(), which is also doing the\nsimilar operation of adding a group to a rb tree.\n\nNo functionality change here.\n\nSigned-off-by: Vivek Goyal \u003cvgoyal@redhat.com\u003e\nAcked-by: Jeff Moyer \u003cjmoyer@redhat.com\u003e\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\n"
    },
    {
      "commit": "6d816ec7c83871da7c2472af7479d2438e641052",
      "tree": "39c8593f5524ac5a68e9a031d61ae5ff8a8c5477",
      "parents": [
        "34b98d03bd6e3f3c67af1e4933aaf19887a61192"
      ],
      "author": {
        "name": "Vivek Goyal",
        "email": "vgoyal@redhat.com",
        "time": "Wed Oct 03 16:56:59 2012 -0400"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Wed Jan 09 08:05:09 2013 -0800"
      },
      "message": "cfq-iosched: Rename few functions related to selecting workload\n\nchoose_service_tree() selects/sets both wl_class and wl_type.  Rename it to\nchoose_wl_class_and_type() to make it very clear.\n\ncfq_choose_wl() only selects and sets wl_type. It is easy to confuse\nit with choose_st(). So rename it to cfq_choose_wl_type() to make\nit clear what does it do.\n\nJust renaming. No functionality change.\n\nSigned-off-by: Vivek Goyal \u003cvgoyal@redhat.com\u003e\nAcked-by: Jeff Moyer \u003cjmoyer@redhat.com\u003e\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\n"
    },
    {
      "commit": "34b98d03bd6e3f3c67af1e4933aaf19887a61192",
      "tree": "f8c12ac87eda374852f02cc0de078e2c74146c23",
      "parents": [
        "4d2ceea4cb86060b03b2aa4826b365320bc78651"
      ],
      "author": {
        "name": "Vivek Goyal",
        "email": "vgoyal@redhat.com",
        "time": "Wed Oct 03 16:56:58 2012 -0400"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Wed Jan 09 08:05:09 2013 -0800"
      },
      "message": "cfq-iosched: Rename \"service_tree\" to \"st\" at some places\n\nAt quite a few places we use the keyword \"service_tree\". At some places,\nespecially local variables, I have abbreviated it to \"st\".\n\nAlso at couple of places moved binary operator \"+\" from beginning of line\nto end of previous line, as per Tejun\u0027s feedback.\n\nv2:\n Reverted most of the service tree name change based on Jeff Moyer\u0027s feedback.\n\nSigned-off-by: Vivek Goyal \u003cvgoyal@redhat.com\u003e\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\n"
    },
    {
      "commit": "4d2ceea4cb86060b03b2aa4826b365320bc78651",
      "tree": "2d848153c4feb146f603b3d2273f9a486febe992",
      "parents": [
        "3bf10fea3ba3804090e82aa59fabf25f43fa74c2"
      ],
      "author": {
        "name": "Vivek Goyal",
        "email": "vgoyal@redhat.com",
        "time": "Wed Oct 03 16:56:57 2012 -0400"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Wed Jan 09 08:05:09 2013 -0800"
      },
      "message": "cfq-iosched: More renaming to better represent wl_class and wl_type\n\nSome more renaming. Again making the code uniform w.r.t use of\nwl_class/class to represent IO class (RT, BE, IDLE) and using\nwl_type/type to represent subclass (SYNC, SYNC-IDLE, ASYNC).\n\nAt places this patch shortens the string \"workload\" to \"wl\".\nRenamed \"saved_workload\" to \"saved_wl_type\". Renamed\n\"saved_serving_class\" to \"saved_wl_class\".\n\nFor uniformity with \"saved_wl_*\" variables, renamed \"serving_class\"\nto \"serving_wl_class\" and renamed \"serving_type\" to \"serving_wl_type\".\n\nAgain, just trying to improve upon code uniformity and improve\nreadability. No functional change.\n\nv2:\n- Restored the usage of keyword \"service\" based on Jeff Moyer\u0027s feedback.\n\nSigned-off-by: Vivek Goyal \u003cvgoyal@redhat.com\u003e\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\n"
    },
    {
      "commit": "3bf10fea3ba3804090e82aa59fabf25f43fa74c2",
      "tree": "ac129e9bc5655f9ae925db7093e6e7bc60f77737",
      "parents": [
        "d1c3ed669a2d452cacfb48c2d171a1f364dae2ed"
      ],
      "author": {
        "name": "Vivek Goyal",
        "email": "vgoyal@redhat.com",
        "time": "Wed Oct 03 16:56:56 2012 -0400"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Wed Jan 09 08:05:08 2013 -0800"
      },
      "message": "cfq-iosched: Properly name all references to IO class\n\nCurrently CFQ has three IO classes, RT, BE and IDLE. At many a places we\nare calling workloads belonging to these classes as \"prio\". This gets\nvery confusing as one starts to associate it with ioprio.\n\nSo this patch just does bunch of renaming so that reading code becomes\neasier. All reference to RT, BE and IDLE workload are done using keyword\n\"class\" and all references to subclass, SYNC, SYNC-IDLE, ASYNC are made\nusing keyword \"type\".\n\nThis makes me feel much better while I am reading the code. There is no\nfunctionality change due to this patch.\n\nSigned-off-by: Vivek Goyal \u003cvgoyal@redhat.com\u003e\nAcked-by: Jeff Moyer \u003cjmoyer@redhat.com\u003e\nAcked-by: Tejun Heo \u003ctj@kernel.org\u003e\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\n"
    },
    {
      "commit": "12c2bdb232168511c8dd54d6626549391a228918",
      "tree": "8b9179df57d7ddd596a57d465cce4e0949795d25",
      "parents": [
        "aea24a8bbc81c8b404e4e293fb37aefaf388d35d"
      ],
      "author": {
        "name": "Derek Basehore",
        "email": "dbasehore@chromium.org",
        "time": "Tue Dec 18 12:27:20 2012 -0800"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@kernel.dk",
        "time": "Wed Dec 19 20:36:10 2012 +0100"
      },
      "message": "block: prevent race/cleanup\n\nRemove a race condition which causes a warning in disk_clear_events.  This\nis a race between disk_clear_events() and disk_flush_events().\nev-\u003eclearing will be altered by disk_flush_events() even though we are\nblocking event checking through disk_flush_events().  If this happens\nafter ev-\u003eclearing was cleared for disk_clear_events(), this can cause the\nWARN_ON_ONCE() in that function to be triggered.\n\nThis change also has disk_clear_events() not go through a workqueue.\nSince we have to wait for the work to complete, we should just call the\nfunction directly.  Also, since this work cannot be put on a freezable\nworkqueue, it will have to contend with increased demand, so calling the\nfunction directly avoids this.\n\n[akpm@linux-foundation.org: fix spello in comment]\nSigned-off-by: Derek Basehore \u003cdbasehore@chromium.org\u003e\nCc: Mandeep Singh Baines \u003cmsb@chromium.org\u003e\nCc: Jens Axboe \u003caxboe@kernel.dk\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Jens Axboe \u003caxboe@kernel.dk\u003e\n"
    },
    {
      "commit": "aea24a8bbc81c8b404e4e293fb37aefaf388d35d",
      "tree": "fc12abcaacf7c5af4c0557d68da3fad9e5879906",
      "parents": [
        "74779e22261172ea728b989310f6ecc991b57d62"
      ],
      "author": {
        "name": "Derek Basehore",
        "email": "dbasehore@chromium.org",
        "time": "Tue Dec 18 12:27:18 2012 -0800"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@kernel.dk",
        "time": "Wed Dec 19 20:36:05 2012 +0100"
      },
      "message": "block: remove deadlock in disk_clear_events\n\nIn disk_clear_events, do not put work on system_nrt_freezable_wq.\nInstead, put it on system_nrt_wq.\n\nThere is a race between probing a usb and suspending the device.  Since\nprobing a usb calls disk_clear_events, which puts work on a frozen\nworkqueue, probing cannot finish after the workqueue is frozen.  However,\nsuspending cannot finish until the usb probe is finished, so we get a\ndeadlock, causing the system to reboot.\n\nThe way to reproduce this bug is to wake up from suspend with a usb\nstorage device plugged in, or plugging in a usb storage device right\nbefore suspend.  The window of time is on the order of time it takes to\nprobe the usb device.  As long as the workqueues are frozen before the\ncall to add_disk within sd_probe_async finishes, there will be a deadlock\n(which calls blkdev_get, sd_open, check_disk_change, then\ndisk_clear_events).  This is not difficult to reproduce after figuring out\nthe timings.\n\n[akpm@linux-foundation.org: fix up comment]\nSigned-off-by: Derek Basehore \u003cdbasehore@chromium.org\u003e\nReviewed-by: Mandeep Singh Baines \u003cmsb@chromium.org\u003e\nCc: Jens Axboe \u003caxboe@kernel.dk\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Jens Axboe \u003caxboe@kernel.dk\u003e\n"
    },
    {
      "commit": "848b81415c42ff3dc9a4204749087b015c37ef66",
      "tree": "391da3a73aea48632248220d2d6b8d45a88f7eae",
      "parents": [
        "992956189de58cae9f2be40585bc25105cd7c5ad",
        "6fd59a83b9261fa53eaf98fb5514abba504a3ea3"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Dec 17 20:58:12 2012 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Dec 17 20:58:12 2012 -0800"
      },
      "message": "Merge branch \u0027akpm\u0027 (Andrew\u0027s patch-bomb)\n\nMerge misc patches from Andrew Morton:\n \"Incoming:\n\n   - lots of misc stuff\n\n   - backlight tree updates\n\n   - lib/ updates\n\n   - Oleg\u0027s percpu-rwsem changes\n\n   - checkpatch\n\n   - rtc\n\n   - aoe\n\n   - more checkpoint/restart support\n\n  I still have a pile of MM stuff pending - Pekka should be merging\n  later today after which that is good to go.  A number of other things\n  are twiddling thumbs awaiting maintainer merges.\"\n\n* emailed patches from Andrew Morton \u003cakpm@linux-foundation.org\u003e: (180 commits)\n  scatterlist: don\u0027t BUG when we can trivially return a proper error.\n  docs: update documentation about /proc/\u003cpid\u003e/fdinfo/\u003cfd\u003e fanotify output\n  fs, fanotify: add @mflags field to fanotify output\n  docs: add documentation about /proc/\u003cpid\u003e/fdinfo/\u003cfd\u003e output\n  fs, notify: add procfs fdinfo helper\n  fs, exportfs: add exportfs_encode_inode_fh() helper\n  fs, exportfs: escape nil dereference if no s_export_op present\n  fs, epoll: add procfs fdinfo helper\n  fs, eventfd: add procfs fdinfo helper\n  procfs: add ability to plug in auxiliary fdinfo providers\n  tools/testing/selftests/kcmp/kcmp_test.c: print reason for failure in kcmp_test\n  breakpoint selftests: print failure status instead of cause make error\n  kcmp selftests: print fail status instead of cause make error\n  kcmp selftests: make run_tests fix\n  mem-hotplug selftests: print failure status instead of cause make error\n  cpu-hotplug selftests: print failure status instead of cause make error\n  mqueue selftests: print failure status instead of cause make error\n  vm selftests: print failure status instead of cause make error\n  ubifs: use prandom_bytes\n  mtd: nandsim: use prandom_bytes\n  ...\n"
    },
    {
      "commit": "22b361d1df7bc25b558e52f22e779286a3d323e4",
      "tree": "a66c2e50d07d87e52dfc74a1e9118b2aff6759fe",
      "parents": [
        "8ebe34731a0d1a9d89b536430afd98d0fadec99b"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Mon Dec 17 16:01:39 2012 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Dec 17 17:15:18 2012 -0800"
      },
      "message": "percpu_rw_semaphore: introduce CONFIG_PERCPU_RWSEM\n\nCurrently only block_dev and uprobes use percpu_rw_semaphore,\nadd the config option selected by BLOCK || UPROBES.\n\nSigned-off-by: Oleg Nesterov \u003coleg@redhat.com\u003e\nCc: Anton Arapov \u003canton@redhat.com\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\nCc: Michal Marek \u003cmmarek@suse.cz\u003e\nCc: Mikulas Patocka \u003cmpatocka@redhat.com\u003e\nCc: \"Paul E. McKenney\" \u003cpaulmck@linux.vnet.ibm.com\u003e\nCc: Peter Zijlstra \u003cpeterz@infradead.org\u003e\nCc: Srikar Dronamraju \u003csrikar@linux.vnet.ibm.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "9228ff90387e276ad67b10c0eb525c9d6a57d5e9",
      "tree": "e7c87b68daba7cf7ca4c342c6b52165bd78fbe16",
      "parents": [
        "9360b53661a2c7754517b2925580055bacc8ec38",
        "d2ec180c23a5a1bfe34d8638b0342a47c00cf70f"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Dec 17 13:39:11 2012 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Dec 17 13:39:11 2012 -0800"
      },
      "message": "Merge branch \u0027for-3.8/drivers\u0027 of git://git.kernel.dk/linux-block\n\nPull block driver update from Jens Axboe:\n \"Now that the core bits are in, here are the driver bits for 3.8.  The\n  branch contains:\n\n   - A huge pile of drbd bits that were dumped from the 3.7 merge\n     window.  Following that, it was both made perfectly clear that\n     there is going to be no more over-the-wall pulls and how the\n     situation on individual pulls can be improved.\n\n   - A few cleanups from Akinobu Mita for drbd and cciss.\n\n   - Queue improvement for loop from Lukas.  This grew into adding a\n     generic interface for waiting/checking an even with a specific\n     lock, allowing this to be pulled out of md and now loop and drbd is\n     also using it.\n\n   - A few fixes for xen back/front block driver from Roger Pau Monne.\n\n   - Partition improvements from Stephen Warren, allowing partiion UUID\n     to be used as an identifier.\"\n\n* \u0027for-3.8/drivers\u0027 of git://git.kernel.dk/linux-block: (609 commits)\n  drbd: update Kconfig to match current dependencies\n  drbd: Fix drbdsetup wait-connect, wait-sync etc... commands\n  drbd: close race between drbd_set_role and drbd_connect\n  drbd: respect no-md-barriers setting also when changed online via disk-options\n  drbd: Remove obsolete check\n  drbd: fixup after wait_even_lock_irq() addition to generic code\n  loop: Limit the number of requests in the bio list\n  wait: add wait_event_lock_irq() interface\n  xen-blkfront: free allocated page\n  xen-blkback: move free persistent grants code\n  block: partition: msdos: provide UUIDs for partitions\n  init: reduce PARTUUID min length to 1 from 36\n  block: store partition_meta_info.uuid as a string\n  cciss: use check_signature()\n  cciss: cleanup bitops usage\n  drbd: use copy_highpage\n  drbd: if the replication link breaks during handshake, keep retrying\n  drbd: check return of kmalloc in receive_uuids\n  drbd: Broadcast sync progress no more often than once per second\n  drbd: don\u0027t try to clear bits once the disk has failed\n  ...\n"
    },
    {
      "commit": "60da5bf47dd3d301a1d3bd4f0a4b9e29a184515c",
      "tree": "30de83370440aae5350d9ab3fbe6583abd439ee8",
      "parents": [
        "3c2e81ef344a90bb0a39d84af6878b4aeff568a2",
        "cbae8d45d61f3a8c155caf267d01e5e0f0b2f4b7"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Dec 17 08:27:23 2012 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Dec 17 08:27:23 2012 -0800"
      },
      "message": "Merge branch \u0027for-3.8/core\u0027 of git://git.kernel.dk/linux-block\n\nPull block layer core updates from Jens Axboe:\n \"Here are the core block IO bits for 3.8.  The branch contains:\n\n   - The final version of the surprise device removal fixups from Bart.\n\n   - Don\u0027t hide EFI partitions under advanced partition types.  It\u0027s\n     fairly wide spread these days.  This is especially dangerous for\n     systems that have both msdos and efi partition tables, where you\n     want to keep them in sync.\n\n   - Cleanup of using -1 instead of the proper NUMA_NO_NODE\n\n   - Export control of bdi flusher thread CPU mask and default to using\n     the home node (if known) from Jeff.\n\n   - Export unplug tracepoint for MD.\n\n   - Core improvements from Shaohua.  Reinstate the recursive merge, as\n     the original bug has been fixed.  Add plugging for discard and also\n     fix a problem handling non pow-of-2 discard limits.\n\n  There\u0027s a trivial merge in block/blk-exec.c due to a fix that went\n  into 3.7-rc at a later point than -rc4 where this is based.\"\n\n* \u0027for-3.8/core\u0027 of git://git.kernel.dk/linux-block:\n  block: export block_unplug tracepoint\n  block: add plug for blkdev_issue_discard\n  block: discard granularity might not be power of 2\n  deadline: Allow 0ms deadline latency, increase the read speed\n  partitions: enable EFI/GPT support by default\n  bsg: Remove unused function bsg_goose_queue()\n  block: Make blk_cleanup_queue() wait until request_fn finished\n  block: Avoid scheduling delayed work on a dead queue\n  block: Avoid that request_fn is invoked on a dead queue\n  block: Let blk_drain_queue() caller obtain the queue lock\n  block: Rename queue dead flag\n  bdi: add a user-tunable cpu_list for the bdi flusher threads\n  block: use NUMA_NO_NODE instead of -1\n  block: recursive merge requests\n  block CFQ: avoid moving request to different queue\n"
    },
    {
      "commit": "cbae8d45d61f3a8c155caf267d01e5e0f0b2f4b7",
      "tree": "bf5920d41e2f948ce92b9dbe8bf3919290000f4e",
      "parents": [
        "0cfbcafcae8b7364b5fa96c2b26ccde7a3a296a9"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Dec 14 20:49:27 2012 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@kernel.dk",
        "time": "Fri Dec 14 20:49:27 2012 +0100"
      },
      "message": "block: export block_unplug tracepoint\n\nThis allows stacked devices (like md/raid5) to provide blktrace\ntracing, including unplug events.\n\nReported-by: Fengguang Wu \u003cfengguang.wu@intel.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\nSigned-off-by: Jens Axboe \u003caxboe@kernel.dk\u003e\n"
    },
    {
      "commit": "0cfbcafcae8b7364b5fa96c2b26ccde7a3a296a9",
      "tree": "dc6601c000fc21c80db3f6861ac117359649429a",
      "parents": [
        "8dd2cb7e880d2f77fba53b523c99133ad5054cfd"
      ],
      "author": {
        "name": "Shaohua Li",
        "email": "shli@kernel.org",
        "time": "Fri Dec 14 11:15:51 2012 +0800"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@kernel.dk",
        "time": "Fri Dec 14 20:46:04 2012 +0100"
      },
      "message": "block: add plug for blkdev_issue_discard\n\nLast post of this patch appears lost, so I resend this.\n\nNow discard merge works, add plug for blkdev_issue_discard. This will help\ndiscard request merge especially for raid0 case. In raid0, a big discard\nrequest is split to small requests, and if correct plug is added, such small\nrequests can be merged in low layer.\n\nSigned-off-by: Shaohua Li \u003cshli@fusionio.com\u003e\nSigned-off-by: Jens Axboe \u003caxboe@kernel.dk\u003e\n"
    },
    {
      "commit": "8dd2cb7e880d2f77fba53b523c99133ad5054cfd",
      "tree": "ea51e89f8c8bf9ca8e888d68ecf6732a52e8e99d",
      "parents": [
        "75274551c81796b636c5acb0c2597dec7ec2e6c4"
      ],
      "author": {
        "name": "Shaohua Li",
        "email": "shli@kernel.org",
        "time": "Fri Dec 14 11:15:36 2012 +0800"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@kernel.dk",
        "time": "Fri Dec 14 20:46:04 2012 +0100"
      },
      "message": "block: discard granularity might not be power of 2\n\nIn MD raid case, discard granularity might not be power of 2, for example, a\n4-disk raid5 has 3*chunk_size discard granularity. Correct the calculation for\nsuch cases.\n\nReported-by: Neil Brown \u003cneilb@suse.de\u003e\nSigned-off-by: Shaohua Li \u003cshli@fusionio.com\u003e\nSigned-off-by: Jens Axboe \u003caxboe@kernel.dk\u003e\n"
    },
    {
      "commit": "d206e09036d6201f90b2719484c8a59526c46125",
      "tree": "84b9057919bcb8cfd1cff47baa5fc74457e77d6d",
      "parents": [
        "fef3ff2eb777e76cfa5ae67591982d902c17139c",
        "15ef4ffaa797034d5ff82844daf8f595d7c6d53c"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Dec 12 08:18:24 2012 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Dec 12 08:18:24 2012 -0800"
      },
      "message": "Merge branch \u0027for-3.8\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tj/cgroup\n\nPull cgroup changes from Tejun Heo:\n \"A lot of activities on cgroup side.  The big changes are focused on\n  making cgroup hierarchy handling saner.\n\n   - cgroup_rmdir() had peculiar semantics - it allowed cgroup\n     destruction to be vetoed by individual controllers and tried to\n     drain refcnt synchronously.  The vetoing never worked properly and\n     caused good deal of contortions in cgroup.  memcg was the last\n     reamining user.  Michal Hocko removed the usage and cgroup_rmdir()\n     path has been simplified significantly.  This was done in a\n     separate branch so that the memcg people can base further memcg\n     changes on top.\n\n   - The above allowed cleaning up cgroup lifecycle management and\n     implementation of generic cgroup iterators which are used to\n     improve hierarchy support.\n\n   - cgroup_freezer updated to allow migration in and out of a frozen\n     cgroup and handle hierarchy.  If a cgroup is frozen, all descendant\n     cgroups are frozen.\n\n   - netcls_cgroup and netprio_cgroup updated to handle hierarchy\n     properly.\n\n   - Various fixes and cleanups.\n\n   - Two merge commits.  One to pull in memcg and rmdir cleanups (needed\n     to build iterators).  The other pulled in cgroup/for-3.7-fixes for\n     device_cgroup fixes so that further device_cgroup patches can be\n     stacked on top.\"\n\nFixed up a trivial conflict in mm/memcontrol.c as per Tejun (due to\ncommit bea8c150a7 (\"memcg: fix hotplugged memory zone oops\") in master\ntouching code close to commit 2ef37d3fe4 (\"memcg: Simplify\nmem_cgroup_force_empty_list error handling\") in for-3.8)\n\n* \u0027for-3.8\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tj/cgroup: (65 commits)\n  cgroup: update Documentation/cgroups/00-INDEX\n  cgroup_rm_file: don\u0027t delete the uncreated files\n  cgroup: remove subsystem files when remounting cgroup\n  cgroup: use cgroup_addrm_files() in cgroup_clear_directory()\n  cgroup: warn about broken hierarchies only after css_online\n  cgroup: list_del_init() on removed events\n  cgroup: fix lockdep warning for event_control\n  cgroup: move list add after list head initilization\n  netprio_cgroup: allow nesting and inherit config on cgroup creation\n  netprio_cgroup: implement netprio[_set]_prio() helpers\n  netprio_cgroup: use cgroup-\u003eid instead of cgroup_netprio_state-\u003eprioidx\n  netprio_cgroup: reimplement priomap expansion\n  netprio_cgroup: shorten variable names in extend_netdev_table()\n  netprio_cgroup: simplify write_priomap()\n  netcls_cgroup: move config inheritance to -\u003ecss_online() and remove .broken_hierarchy marking\n  cgroup: remove obsolete guarantee from cgroup_task_migrate.\n  cgroup: add cgroup-\u003eid\n  cgroup, cpuset: remove cgroup_subsys-\u003epost_clone()\n  cgroup: s/CGRP_CLONE_CHILDREN/CGRP_CPUSET_CLONE_CHILDREN/\n  cgroup: rename -\u003ecreate/post_create/pre_destroy/destroy() to -\u003ecss_alloc/online/offline/free()\n  ...\n"
    },
    {
      "commit": "75274551c81796b636c5acb0c2597dec7ec2e6c4",
      "tree": "6854867ce09c9489e2563b1a0e3ccb0289674491",
      "parents": [
        "5f6f38dbb0fc8518b19542b0ad0739a8a95f05a1"
      ],
      "author": {
        "name": "xiaobing tu",
        "email": "xiaobing.tu@intel.com",
        "time": "Sun Dec 09 19:19:23 2012 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@kernel.dk",
        "time": "Sun Dec 09 19:19:23 2012 +0100"
      },
      "message": "deadline: Allow 0ms deadline latency, increase the read speed\n\nChange a timer compare from after to after-equals, thus allowing\n0 timeout and making deadline schedule FIFO.\n\nSigned-off-by: xiaobing tu \u003cxiaobing.tu@intel.com\u003e\nSigned-off-by: Jens Axboe \u003caxboe@kernel.dk\u003e\n"
    },
    {
      "commit": "5f6f38dbb0fc8518b19542b0ad0739a8a95f05a1",
      "tree": "37b516afe21594499f3c0a8e9e9fee8141883983",
      "parents": [
        "80729beb3326fd682543f4f4ea534df47ab48967"
      ],
      "author": {
        "name": "Diego Calleja",
        "email": "diegocg@gmail.com",
        "time": "Mon Dec 03 16:04:21 2012 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@kernel.dk",
        "time": "Thu Dec 06 14:34:58 2012 +0100"
      },
      "message": "partitions: enable EFI/GPT support by default\n\nThe Kconfig currently enables MSDOS partitions by default because they\nare assumed to be essential, but it\u0027s necessary to enable \"advanced\npartition selection\" in order to get GPT support. IMO GPT partitions\nare becoming common enought to deserve the same treatment MSDOS\npartitions get.\n\n(Side note: I got bit by a disk that had MSDOS and GPT partition\ntables, but for some reason the MSDOS table was different from the\nGPT one. I was stupid enought to disable \"advanced partition\nselection\" in my .config, which disabled GPT partitioning and made\nmy btrfs pool unbootable because it couldn\u0027t find the partitions)\n\nSigned-off-by: Diego Calleja \u003cdiegocg@gmail.com\u003e\nSigned-off-by: Jens Axboe \u003caxboe@kernel.dk\u003e\n"
    },
    {
      "commit": "80729beb3326fd682543f4f4ea534df47ab48967",
      "tree": "f8d2c70a4edc39b571f4d772972628de017f04eb",
      "parents": [
        "24faf6f604efe18236bded4303009fc252913bf0"
      ],
      "author": {
        "name": "Bart Van Assche",
        "email": "bvanassche@acm.org",
        "time": "Wed Nov 28 13:47:36 2012 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@kernel.dk",
        "time": "Thu Dec 06 14:33:02 2012 +0100"
      },
      "message": "bsg: Remove unused function bsg_goose_queue()\n\nThe function bsg_goose_queue() does not have any in-tree callers,\nso let\u0027s remove it.\n\nSigned-off-by: Bart Van Assche \u003cbvanassche@acm.org\u003e\nAcked-by: Tejun Heo \u003ctj@kernel.org\u003e\nSigned-off-by: Jens Axboe \u003caxboe@kernel.dk\u003e\n"
    },
    {
      "commit": "24faf6f604efe18236bded4303009fc252913bf0",
      "tree": "bc4d35a38c44a37ffd718089729ae59b23d50d99",
      "parents": [
        "704605711ef048a7c6ad2ec599f15d2e0baf86b2"
      ],
      "author": {
        "name": "Bart Van Assche",
        "email": "bvanassche@acm.org",
        "time": "Wed Nov 28 13:46:45 2012 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@kernel.dk",
        "time": "Thu Dec 06 14:33:00 2012 +0100"
      },
      "message": "block: Make blk_cleanup_queue() wait until request_fn finished\n\nSome request_fn implementations, e.g. scsi_request_fn(), unlock\nthe queue lock internally. This may result in multiple threads\nexecuting request_fn for the same queue simultaneously. Keep\ntrack of the number of active request_fn calls and make sure that\nblk_cleanup_queue() waits until all active request_fn invocations\nhave finished. A block driver may start cleaning up resources\nneeded by its request_fn as soon as blk_cleanup_queue() finished,\nso blk_cleanup_queue() must wait for all outstanding request_fn\ninvocations to finish.\n\nSigned-off-by: Bart Van Assche \u003cbvanassche@acm.org\u003e\nReported-by: Chanho Min \u003cchanho.min@lge.com\u003e\nCc: James Bottomley \u003cJBottomley@Parallels.com\u003e\nCc: Mike Christie \u003cmichaelc@cs.wisc.edu\u003e\nAcked-by: Tejun Heo \u003ctj@kernel.org\u003e\nSigned-off-by: Jens Axboe \u003caxboe@kernel.dk\u003e\n"
    },
    {
      "commit": "704605711ef048a7c6ad2ec599f15d2e0baf86b2",
      "tree": "16620b55d00b289a9a343d1d2c150684fbb1661c",
      "parents": [
        "c246e80d86736312933646896c4157daf511dadc"
      ],
      "author": {
        "name": "Bart Van Assche",
        "email": "bvanassche@acm.org",
        "time": "Wed Nov 28 13:45:56 2012 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@kernel.dk",
        "time": "Thu Dec 06 14:32:30 2012 +0100"
      },
      "message": "block: Avoid scheduling delayed work on a dead queue\n\nRunning a queue must continue after it has been marked dying until\nit has been marked dead. So the function blk_run_queue_async() must\nnot schedule delayed work after blk_cleanup_queue() has marked a queue\ndead. Hence add a test for that queue state in blk_run_queue_async()\nand make sure that queue_unplugged() invokes that function with the\nqueue lock held. This avoids that the queue state can change after\nit has been tested and before mod_delayed_work() is invoked. Drop\nthe queue dying test in queue_unplugged() since it is now\nsuperfluous: __blk_run_queue() already tests whether or not the\nqueue is dead.\n\nSigned-off-by: Bart Van Assche \u003cbvanassche@acm.org\u003e\nCc: Mike Christie \u003cmichaelc@cs.wisc.edu\u003e\nAcked-by: Tejun Heo \u003ctj@kernel.org\u003e\nSigned-off-by: Jens Axboe \u003caxboe@kernel.dk\u003e\n"
    },
    {
      "commit": "c246e80d86736312933646896c4157daf511dadc",
      "tree": "183119080e120f5a3e98edf5bb824e940e5b8f18",
      "parents": [
        "807592a4fafba1fea6e98b9cf1fb02b7c38fb24c"
      ],
      "author": {
        "name": "Bart Van Assche",
        "email": "bvanassche@acm.org",
        "time": "Thu Dec 06 14:32:01 2012 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@kernel.dk",
        "time": "Thu Dec 06 14:32:01 2012 +0100"
      },
      "message": "block: Avoid that request_fn is invoked on a dead queue\n\nA block driver may start cleaning up resources needed by its\nrequest_fn as soon as blk_cleanup_queue() finished, so request_fn\nmust not be invoked after draining finished. This is important\nwhen blk_run_queue() is invoked without any requests in progress.\nAs an example, if blk_drain_queue() and scsi_run_queue() run in\nparallel, blk_drain_queue() may have finished all requests after\nscsi_run_queue() has taken a SCSI device off the starved list but\nbefore that last function has had a chance to run the queue.\n\nSigned-off-by: Bart Van Assche \u003cbvanassche@acm.org\u003e\nCc: James Bottomley \u003cJBottomley@Parallels.com\u003e\nCc: Mike Christie \u003cmichaelc@cs.wisc.edu\u003e\nCc: Chanho Min \u003cchanho.min@lge.com\u003e\nAcked-by: Tejun Heo \u003ctj@kernel.org\u003e\nSigned-off-by: Jens Axboe \u003caxboe@kernel.dk\u003e\n"
    },
    {
      "commit": "807592a4fafba1fea6e98b9cf1fb02b7c38fb24c",
      "tree": "663e227bd15b6abacd2439c1c4cdfd42ec95e493",
      "parents": [
        "3f3299d5c0268d6cc3f47b446e8aca436e4a5651"
      ],
      "author": {
        "name": "Bart Van Assche",
        "email": "bvanassche@acm.org",
        "time": "Wed Nov 28 13:43:38 2012 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@kernel.dk",
        "time": "Thu Dec 06 14:30:59 2012 +0100"
      },
      "message": "block: Let blk_drain_queue() caller obtain the queue lock\n\nLet the caller of blk_drain_queue() obtain the queue lock to improve\nreadability of the patch called \"Avoid that request_fn is invoked on\na dead queue\".\n\nSigned-off-by: Bart Van Assche \u003cbvanassche@acm.org\u003e\nAcked-by: Tejun Heo \u003ctj@kernel.org\u003e\nCc: James Bottomley \u003cJBottomley@Parallels.com\u003e\nCc: Mike Christie \u003cmichaelc@cs.wisc.edu\u003e\nCc: Jens Axboe \u003caxboe@kernel.dk\u003e\nCc: Chanho Min \u003cchanho.min@lge.com\u003e\nSigned-off-by: Jens Axboe \u003caxboe@kernel.dk\u003e\n"
    },
    {
      "commit": "3f3299d5c0268d6cc3f47b446e8aca436e4a5651",
      "tree": "5c962e7f6c6f1e8f17b612bb4c144ec610abfd8e",
      "parents": [
        "8fa72d234da9b6b473bbb1f74d533663e4996e6b"
      ],
      "author": {
        "name": "Bart Van Assche",
        "email": "bvanassche@acm.org",
        "time": "Wed Nov 28 13:42:38 2012 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@kernel.dk",
        "time": "Thu Dec 06 14:30:58 2012 +0100"
      },
      "message": "block: Rename queue dead flag\n\nQUEUE_FLAG_DEAD is used to indicate that queuing new requests must\nstop. After this flag has been set queue draining starts. However,\nduring the queue draining phase it is still safe to invoke the\nqueue\u0027s request_fn, so QUEUE_FLAG_DYING is a better name for this\nflag.\n\nThis patch has been generated by running the following command\nover the kernel source tree:\n\ngit grep -lEw \u0027blk_queue_dead|QUEUE_FLAG_DEAD\u0027 |\n    xargs sed -i.tmp -e \u0027s/blk_queue_dead/blk_queue_dying/g\u0027      \\\n        -e \u0027s/QUEUE_FLAG_DEAD/QUEUE_FLAG_DYING/g\u0027;                \\\nsed -i.tmp -e \"s/QUEUE_FLAG_DYING$(printf \\\\t)*5/QUEUE_FLAG_DYING$(printf \\\\t)5/g\" \\\n    include/linux/blkdev.h;                                       \\\nsed -i.tmp -e \u0027s/ DEAD/ DYING/g\u0027 -e \u0027s/dead queue/a dying queue/\u0027 \\\n    -e \u0027s/Dead queue/A dying queue/\u0027 block/blk-core.c\n\nSigned-off-by: Bart Van Assche \u003cbvanassche@acm.org\u003e\nAcked-by: Tejun Heo \u003ctj@kernel.org\u003e\nCc: James Bottomley \u003cJBottomley@Parallels.com\u003e\nCc: Mike Christie \u003cmichaelc@cs.wisc.edu\u003e\nCc: Jens Axboe \u003caxboe@kernel.dk\u003e\nCc: Chanho Min \u003cchanho.min@lge.com\u003e\nSigned-off-by: Jens Axboe \u003caxboe@kernel.dk\u003e\n"
    },
    {
      "commit": "893d290f1d7496db97c9471bc352ad4a11dc8a25",
      "tree": "c6d5444d06949edfd5d13fa0beed0992dd2ae469",
      "parents": [
        "836413e8c78ecbc55aa31f3cb600f8ee1aa355a2"
      ],
      "author": {
        "name": "Roland Dreier",
        "email": "roland@purestorage.com",
        "time": "Thu Nov 22 02:00:11 2012 -0800"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@kernel.dk",
        "time": "Fri Nov 23 14:32:55 2012 +0100"
      },
      "message": "block: Don\u0027t access request after it might be freed\n\nAfter we\u0027ve done __elv_add_request() and __blk_run_queue() in\nblk_execute_rq_nowait(), the request might finish and be freed\nimmediately.  Therefore checking if the type is REQ_TYPE_PM_RESUME\nisn\u0027t safe afterwards, because if it isn\u0027t, rq might be gone.\nInstead, check beforehand and stash the result in a temporary.\n\nThis fixes crashes in blk_execute_rq_nowait() I get occasionally when\nrunning with lots of memory debugging options enabled -- I think this\nrace is usually harmless because the window for rq to be reallocated\nis so small.\n\nSigned-off-by: Roland Dreier \u003croland@purestorage.com\u003e\nCc: stable@kernel.org\nSigned-off-by: Jens Axboe \u003caxboe@kernel.dk\u003e\n"
    },
    {
      "commit": "d33b98fc82b0908e91fb05ae081acaed7323f9d2",
      "tree": "fe5803ac8510ab46f0fcbcc1712343806699a5cb",
      "parents": [
        "283f8fc03927b0ef42a2faa60a0df5ec8c612edb"
      ],
      "author": {
        "name": "Stephen Warren",
        "email": "swarren@nvidia.com",
        "time": "Thu Nov 08 16:12:28 2012 -0800"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@kernel.dk",
        "time": "Fri Nov 23 14:28:58 2012 +0100"
      },
      "message": "block: partition: msdos: provide UUIDs for partitions\n\nThe MSDOS/MBR partition table includes a 32-bit unique ID, often referred\nto as the NT disk signature.  When combined with a partition number within\nthe table, this can form a unique ID similar in concept to EFI/GPT\u0027s\npartition UUID.  Constructing and recording this value in struct\npartition_meta_info allows MSDOS partitions to be referred to on the\nkernel command-line using the following syntax:\n\nroot\u003dPARTUUID\u003d0002dd75-01\n\nSigned-off-by: Stephen Warren \u003cswarren@nvidia.com\u003e\nCc: Tejun Heo \u003ctj@kernel.org\u003e\nCc: Will Drewry \u003cwad@chromium.org\u003e\nCc: Kay Sievers \u003ckay.sievers@vrfy.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Jens Axboe \u003caxboe@kernel.dk\u003e\n"
    },
    {
      "commit": "1ad7e89940d5ac411928189e1a4a01901dbf590f",
      "tree": "64bfe2bceb4d157320465d529869783443e031bf",
      "parents": [
        "d48c152a41c8cd6de832397b4ea6f0429ad86318"
      ],
      "author": {
        "name": "Stephen Warren",
        "email": "swarren@nvidia.com",
        "time": "Thu Nov 08 16:12:25 2012 -0800"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@kernel.dk",
        "time": "Fri Nov 23 14:28:53 2012 +0100"
      },
      "message": "block: store partition_meta_info.uuid as a string\n\nThis will allow other types of UUID to be stored here, aside from true\nUUIDs.  This also simplifies code that uses this field, since it\u0027s usually\nconstructed from a, used as a, or compared to other, strings.\n\nNote: A simplistic approach here would be to set uuid_str[36]\u003d0 whenever a\n/PARTNROFF option was found to be present.  However, this modifies the\ninput string, and causes subsequent calls to devt_from_partuuid() not to\nsee the /PARTNROFF option, which causes different results.  In order to\navoid misleading future maintainers, this parameter is marked const.\n\nSigned-off-by: Stephen Warren \u003cswarren@nvidia.com\u003e\nCc: Tejun Heo \u003ctj@kernel.org\u003e\nCc: Will Drewry \u003cwad@chromium.org\u003e\nCc: Kay Sievers \u003ckay.sievers@vrfy.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Jens Axboe \u003caxboe@kernel.dk\u003e\n"
    },
    {
      "commit": "92fb97487a7e41b222c1417cabd1d1ab7cc3a48c",
      "tree": "c220c622b9ac9b16535535d448e9cd29be72c77e",
      "parents": [
        "b1929db42f8a649d9a9e397119f628c27fd4021f"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Mon Nov 19 08:13:38 2012 -0800"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Mon Nov 19 08:13:38 2012 -0800"
      },
      "message": "cgroup: rename -\u003ecreate/post_create/pre_destroy/destroy() to -\u003ecss_alloc/online/offline/free()\n\nRename cgroup_subsys css lifetime related callbacks to better describe\nwhat their roles are.  Also, update documentation.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nAcked-by: Li Zefan \u003clizefan@huawei.com\u003e\n"
    },
    {
      "commit": "c304a51bf42a7ce48f430a371e1213472c89e13d",
      "tree": "687807afd01b9b19bb3ecb7c6d3f786a89112fb1",
      "parents": [
        "bee0393cc12b6d8f10e884e555a095e050e0b2b9"
      ],
      "author": {
        "name": "Ezequiel Garcia",
        "email": "elezegarcia@gmail.com",
        "time": "Sat Nov 10 10:39:44 2012 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@kernel.dk",
        "time": "Sat Nov 10 10:41:13 2012 +0100"
      },
      "message": "block: use NUMA_NO_NODE instead of -1\n\nSigned-off-by: Ezequiel Garcia \u003celezegarcia@gmail.com\u003e\n\nModified by me to cover blk_init_queue() as well.\n\nSigned-off-by: Jens Axboe \u003caxboe@kernel.dk\u003e\n"
    },
    {
      "commit": "bee0393cc12b6d8f10e884e555a095e050e0b2b9",
      "tree": "eabe7526c63a6a965cf0aa5574c222ff2f431e13",
      "parents": [
        "3d106fba2e7eb6967b1e2cc147a6894ec4307cef"
      ],
      "author": {
        "name": "Shaohua Li",
        "email": "shli@fusionio.com",
        "time": "Fri Nov 09 08:44:27 2012 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@kernel.dk",
        "time": "Fri Nov 09 08:44:27 2012 +0100"
      },
      "message": "block: recursive merge requests\n\nIn a workload, thread 1 accesses a, a+2, ..., thread 2 accesses a+1, a+3,....\nWhen the requests are flushed to queue, a and a+1 are merged to (a, a+1), a+2\nand a+3 too to (a+2, a+3), but (a, a+1) and (a+2, a+3) aren\u0027t merged.\n\nIf we do recursive merge for such interleave access, some workloads throughput\nget improvement. A recent worload I\u0027m checking on is swap, below change\nboostes the throughput around 5% ~ 10%.\n\nSigned-off-by: Shaohua Li \u003cshli@fusionio.com\u003e\nSigned-off-by: Jens Axboe \u003caxboe@kernel.dk\u003e\n"
    },
    {
      "commit": "5b805f2a7675634fbdf9ac1c9b2256905ab2ea68",
      "tree": "ee00d1e3d757458d66209b926d274491c6c3f61c",
      "parents": [
        "1db1e31b1ee3ae126ef98f39083b5f213c7b41bf",
        "201e72acb2d3821e2de9ce6091e98859c316b29a"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Tue Nov 06 12:26:23 2012 -0800"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Tue Nov 06 12:26:23 2012 -0800"
      },
      "message": "Merge branch \u0027cgroup/for-3.7-fixes\u0027 into cgroup/for-3.8\n\nThis is to receive device_cgroup fixes so that further device_cgroup\nchanges can be made in cgroup/for-3.8.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\n"
    },
    {
      "commit": "3d106fba2e7eb6967b1e2cc147a6894ec4307cef",
      "tree": "6e812a7d199557452117ed5e53c98e20cf33f893",
      "parents": [
        "3d70f8c617a436c7146ecb81df2265b4626dfe89"
      ],
      "author": {
        "name": "Shaohua Li",
        "email": "shli@kernel.org",
        "time": "Tue Nov 06 12:39:51 2012 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@kernel.dk",
        "time": "Tue Nov 06 12:39:51 2012 +0100"
      },
      "message": "block CFQ: avoid moving request to different queue\n\nrequest is queued in cfqq-\u003efifo list. Looks it\u0027s possible we are moving a\nrequest from one cfqq to another in request merge case. In such case, adjusting\nthe fifo list order doesn\u0027t make sense and is impossible if we don\u0027t iterate\nthe whole fifo list.\n\nMy test does hit one case the two cfqq are different, but didn\u0027t cause kernel\ncrash, maybe it\u0027s because fifo list isn\u0027t used frequently. Anyway, from the\ncode logic, this is buggy.\n\nI thought we can re-enable the recusive merge logic after this is fixed.\n\nSigned-off-by: Shaohua Li \u003cshli@fusionio.com\u003e\nSigned-off-by: Jens Axboe \u003caxboe@kernel.dk\u003e\n"
    },
    {
      "commit": "1db1e31b1ee3ae126ef98f39083b5f213c7b41bf",
      "tree": "98328124d3b8b08b6db894c79d0e79b3a42417bf",
      "parents": [
        "5d8f72b55c275677865de670fa147ed318191d81",
        "bcf6de1b9129531215d26dd9af8331e84973bc52"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Mon Nov 05 09:21:51 2012 -0800"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Mon Nov 05 09:21:51 2012 -0800"
      },
      "message": "Merge branch \u0027cgroup-rmdir-updates\u0027 into cgroup/for-3.8\n\nPull rmdir updates into for-3.8 so that further callback updates can\nbe put on top.  This pull created a trivial conflict between the\nfollowing two commits.\n\n  8c7f6edbda (\"cgroup: mark subsystems with broken hierarchy support and whine if cgroups are nested for them\")\n  ed95779340 (\"cgroup: kill cgroup_subsys-\u003e__DEPRECATED_clear_css_refs\")\n\nThe former added a field to cgroup_subsys and the latter removed one\nfrom it.  They happen to be colocated causing the conflict.  Keeping\nwhat\u0027s added and removing what\u0027s removed resolves the conflict.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\n"
    },
    {
      "commit": "bcf6de1b9129531215d26dd9af8331e84973bc52",
      "tree": "0666760423e4579a50a7752568036a13e0cfa9d5",
      "parents": [
        "9d093cb10eb482adfba6ddc71a0969b78823ee8b"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Mon Nov 05 09:16:59 2012 -0800"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Mon Nov 05 09:16:59 2012 -0800"
      },
      "message": "cgroup: make -\u003epre_destroy() return void\n\nAll -\u003epre_destory() implementations return 0 now, which is the only\nallowed return value.  Make it return void.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nReviewed-by: Michal Hocko \u003cmhocko@suse.cz\u003e\nAcked-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nAcked-by: Li Zefan \u003clizefan@huawei.com\u003e\nCc: Balbir Singh \u003cbsingharora@gmail.com\u003e\nCc: Vivek Goyal \u003cvgoyal@redhat.com\u003e\n"
    },
    {
      "commit": "975927b942c932bd839ed07e5d40b4037d816844",
      "tree": "3e4ca4c93fb2d25d424afb7957b84578e7c9d257",
      "parents": [
        "b8977285ecb0033b0bd9a99d4355f9c0bc8708f1"
      ],
      "author": {
        "name": "Jianpeng Ma",
        "email": "majianpeng@gmail.com",
        "time": "Thu Oct 25 21:58:17 2012 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@kernel.dk",
        "time": "Thu Oct 25 21:58:17 2012 +0200"
      },
      "message": "block: Add blk_rq_pos(rq) to sort rq when plushing\n\nMy workload is a raid5 which had 16 disks. And used our filesystem to\nwrite using direct-io mode.\n\nI used the blktrace to find those message:\n8,16   0     6647     2.453665504  2579  M   W 7493152 + 8 [md0_raid5]\n8,16   0     6648     2.453672411  2579  Q   W 7493160 + 8 [md0_raid5]\n8,16   0     6649     2.453672606  2579  M   W 7493160 + 8 [md0_raid5]\n8,16   0     6650     2.453679255  2579  Q   W 7493168 + 8 [md0_raid5]\n8,16   0     6651     2.453679441  2579  M   W 7493168 + 8 [md0_raid5]\n8,16   0     6652     2.453685948  2579  Q   W 7493176 + 8 [md0_raid5]\n8,16   0     6653     2.453686149  2579  M   W 7493176 + 8 [md0_raid5]\n8,16   0     6654     2.453693074  2579  Q   W 7493184 + 8 [md0_raid5]\n8,16   0     6655     2.453693254  2579  M   W 7493184 + 8 [md0_raid5]\n8,16   0     6656     2.453704290  2579  Q   W 7493192 + 8 [md0_raid5]\n8,16   0     6657     2.453704482  2579  M   W 7493192 + 8 [md0_raid5]\n8,16   0     6658     2.453715016  2579  Q   W 7493200 + 8 [md0_raid5]\n8,16   0     6659     2.453715247  2579  M   W 7493200 + 8 [md0_raid5]\n8,16   0     6660     2.453721730  2579  Q   W 7493208 + 8 [md0_raid5]\n8,16   0     6661     2.453721974  2579  M   W 7493208 + 8 [md0_raid5]\n8,16   0     6662     2.453728202  2579  Q   W 7493216 + 8 [md0_raid5]\n8,16   0     6663     2.453728436  2579  M   W 7493216 + 8 [md0_raid5]\n8,16   0     6664     2.453734782  2579  Q   W 7493224 + 8 [md0_raid5]\n8,16   0     6665     2.453735019  2579  M   W 7493224 + 8 [md0_raid5]\n8,16   0     6666     2.453741401  2579  Q   W 7493232 + 8 [md0_raid5]\n8,16   0     6667     2.453741632  2579  M   W 7493232 + 8 [md0_raid5]\n8,16   0     6668     2.453748148  2579  Q   W 7493240 + 8 [md0_raid5]\n8,16   0     6669     2.453748386  2579  M   W 7493240 + 8 [md0_raid5]\n8,16   0     6670     2.453851843  2579  I   W 7493144 + 104 [md0_raid5]\n8,16   0        0     2.453853661     0  m   N cfq2579 insert_request\n8,16   0     6671     2.453854064  2579  I   W 7493120 + 24 [md0_raid5]\n8,16   0        0     2.453854439     0  m   N cfq2579 insert_request\n8,16   0     6672     2.453854793  2579  U   N [md0_raid5] 2\n8,16   0        0     2.453855513     0  m   N cfq2579 Not idling.st-\u003ecount:1\n8,16   0        0     2.453855927     0  m   N cfq2579 dispatch_insert\n8,16   0        0     2.453861771     0  m   N cfq2579 dispatched a request\n8,16   0        0     2.453862248     0  m   N cfq2579 activate rq,drv\u003d1\n8,16   0     6673     2.453862332  2579  D   W 7493120 + 24 [md0_raid5]\n8,16   0        0     2.453865957     0  m   N cfq2579 Not idling.st-\u003ecount:1\n8,16   0        0     2.453866269     0  m   N cfq2579 dispatch_insert\n8,16   0        0     2.453866707     0  m   N cfq2579 dispatched a request\n8,16   0        0     2.453867061     0  m   N cfq2579 activate rq,drv\u003d2\n8,16   0     6674     2.453867145  2579  D   W 7493144 + 104 [md0_raid5]\n8,16   0     6675     2.454147608     0  C   W 7493120 + 24 [0]\n8,16   0        0     2.454149357     0  m   N cfq2579 complete rqnoidle 0\n8,16   0     6676     2.454791505     0  C   W 7493144 + 104 [0]\n8,16   0        0     2.454794803     0  m   N cfq2579 complete rqnoidle 0\n8,16   0        0     2.454795160     0  m   N cfq schedule dispatch\n\nFrom above messages,we can find rq[W 7493144 + 104] and rq[W\n7493120 + 24] do not merge.\nBecause the bio order is:\n  8,16   0     6638     2.453619407  2579  Q   W 7493144 + 8 [md0_raid5]\n  8,16   0     6639     2.453620460  2579  G   W 7493144 + 8 [md0_raid5]\n  8,16   0     6640     2.453639311  2579  Q   W 7493120 + 8 [md0_raid5]\n  8,16   0     6641     2.453639842  2579  G   W 7493120 + 8 [md0_raid5]\nThe bio(7493144) first and bio(7493120) later.So the subsequent\nbios will be divided into two parts.\nWhen flushing plug-list,because elv_attempt_insert_merge only support\nbackmerge,not supporting frontmerge.\nSo rq[7493120 + 24] can\u0027t merge with rq[7493144 + 104].\n\nFrom my test,i found those situation can count 25% in our system.\nUsing this patch, there is no this situation.\n\nSigned-off-by: Jianpeng Ma \u003cmajianpeng@gmail.com\u003e\nCC:Shaohua Li \u003cshli@kernel.org\u003e\nSigned-off-by: Jens Axboe \u003caxboe@kernel.dk\u003e\n"
    },
    {
      "commit": "8e42e0a23d30ba84d8e946042ee82aac4934048a",
      "tree": "4f0051a8c2da2de4026f9efc2692a932b00579da",
      "parents": [
        "386bc35a2d548c28a5083b2e162a20251b37cab5"
      ],
      "author": {
        "name": "Kees Cook",
        "email": "keescook@chromium.org",
        "time": "Tue Oct 23 13:01:46 2012 -0700"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@kernel.dk",
        "time": "Tue Oct 23 22:30:34 2012 +0200"
      },
      "message": "block: remove CONFIG_EXPERIMENTAL\n\nThis config item has not carried much meaning for a while now and is\nalmost always enabled by default. As agreed during the Linux kernel\nsummit, remove it.\n\nCC: Jens Axboe \u003caxboe@kernel.dk\u003e\nSigned-off-by: Kees Cook \u003ckeescook@chromium.org\u003e\nSigned-off-by: Jens Axboe \u003caxboe@kernel.dk\u003e\n"
    },
    {
      "commit": "65c77fd9e8a1c8c3da0bbbea6b7efa3d6ef265f8",
      "tree": "305b08304869b3f8d57a191b4b23968e53b53247",
      "parents": [
        "65635cbc37e011e71b208257a25e7c1078cd039b"
      ],
      "author": {
        "name": "Jun\u0027ichi Nomura",
        "email": "j-nomura@ce.jp.nec.com",
        "time": "Mon Oct 22 10:15:37 2012 +0900"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@kernel.dk",
        "time": "Mon Oct 22 22:00:26 2012 +0200"
      },
      "message": "blkcg: stop iteration early if root_rl is the only request list\n\n__blk_queue_next_rl() finds next request list based on blkg_list\nwhile skipping root_blkg in the list.\nOTOH, root_rl is special as it may exist even without root_blkg.\n\nThough the later part of the function handles such a case correctly,\nexiting early is good for readability of the code.\n\nSigned-off-by: Jun\u0027ichi Nomura \u003cj-nomura@ce.jp.nec.com\u003e\nCc: Tejun Heo \u003ctj@kernel.org\u003e\nAcked-by: Vivek Goyal \u003cvgoyal@redhat.com\u003e\nSigned-off-by: Jens Axboe \u003caxboe@kernel.dk\u003e\n"
    },
    {
      "commit": "65635cbc37e011e71b208257a25e7c1078cd039b",
      "tree": "47e17aaa3008518373d67feed3673942d5decfe5",
      "parents": [
        "0390c8835690506802fd5d54ea5444f0b9b1708b"
      ],
      "author": {
        "name": "Jun\u0027ichi Nomura",
        "email": "j-nomura@ce.jp.nec.com",
        "time": "Wed Oct 17 17:45:36 2012 +0900"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@kernel.dk",
        "time": "Mon Oct 22 22:00:26 2012 +0200"
      },
      "message": "blkcg: Fix use-after-free of q-\u003eroot_blkg and q-\u003eroot_rl.blkg\n\nblk_put_rl() does not call blkg_put() for q-\u003eroot_rl because we\ndon\u0027t take request list reference on q-\u003eroot_blkg.\nHowever, if root_blkg is once attached then detached (freed),\nblk_put_rl() is confused by the bogus pointer in q-\u003eroot_blkg.\n\nFor example, with !CONFIG_BLK_DEV_THROTTLING \u0026\u0026\nCONFIG_CFQ_GROUP_IOSCHED,\nswitching IO scheduler from cfq to deadline will cause system stall\nafter the following warning with 3.6:\n\n\u003e WARNING: at /work/build/linux/block/blk-cgroup.h:250\n\u003e blk_put_rl+0x4d/0x95()\n\u003e Modules linked in: bridge stp llc sunrpc acpi_cpufreq freq_table mperf\n\u003e ipt_REJECT nf_conntrack_ipv4 nf_defrag_ipv4\n\u003e Pid: 0, comm: swapper/0 Not tainted 3.6.0 #1\n\u003e Call Trace:\n\u003e  \u003cIRQ\u003e  [\u003cffffffff810453bd\u003e] warn_slowpath_common+0x85/0x9d\n\u003e  [\u003cffffffff810453ef\u003e] warn_slowpath_null+0x1a/0x1c\n\u003e  [\u003cffffffff811d5f8d\u003e] blk_put_rl+0x4d/0x95\n\u003e  [\u003cffffffff811d614a\u003e] __blk_put_request+0xc3/0xcb\n\u003e  [\u003cffffffff811d71a3\u003e] blk_finish_request+0x232/0x23f\n\u003e  [\u003cffffffff811d76c3\u003e] ? blk_end_bidi_request+0x34/0x5d\n\u003e  [\u003cffffffff811d76d1\u003e] blk_end_bidi_request+0x42/0x5d\n\u003e  [\u003cffffffff811d7728\u003e] blk_end_request+0x10/0x12\n\u003e  [\u003cffffffff812cdf16\u003e] scsi_io_completion+0x207/0x4d5\n\u003e  [\u003cffffffff812c6fcf\u003e] scsi_finish_command+0xfa/0x103\n\u003e  [\u003cffffffff812ce2f8\u003e] scsi_softirq_done+0xff/0x108\n\u003e  [\u003cffffffff811dcea5\u003e] blk_done_softirq+0x8d/0xa1\n\u003e  [\u003cffffffff810915d5\u003e] ?\n\u003e  generic_smp_call_function_single_interrupt+0x9f/0xd7\n\u003e  [\u003cffffffff8104cf5b\u003e] __do_softirq+0x102/0x213\n\u003e  [\u003cffffffff8108a5ec\u003e] ? lock_release_holdtime+0xb6/0xbb\n\u003e  [\u003cffffffff8104d2b4\u003e] ? raise_softirq_irqoff+0x9/0x3d\n\u003e  [\u003cffffffff81424dfc\u003e] call_softirq+0x1c/0x30\n\u003e  [\u003cffffffff81011beb\u003e] do_softirq+0x4b/0xa3\n\u003e  [\u003cffffffff8104cdb0\u003e] irq_exit+0x53/0xd5\n\u003e  [\u003cffffffff8102d865\u003e] smp_call_function_single_interrupt+0x34/0x36\n\u003e  [\u003cffffffff8142486f\u003e] call_function_single_interrupt+0x6f/0x80\n\u003e  \u003cEOI\u003e  [\u003cffffffff8101800b\u003e] ? mwait_idle+0x94/0xcd\n\u003e  [\u003cffffffff81018002\u003e] ? mwait_idle+0x8b/0xcd\n\u003e  [\u003cffffffff81017811\u003e] cpu_idle+0xbb/0x114\n\u003e  [\u003cffffffff81401fbd\u003e] rest_init+0xc1/0xc8\n\u003e  [\u003cffffffff81401efc\u003e] ? csum_partial_copy_generic+0x16c/0x16c\n\u003e  [\u003cffffffff81cdbd3d\u003e] start_kernel+0x3d4/0x3e1\n\u003e  [\u003cffffffff81cdb79e\u003e] ? kernel_init+0x1f7/0x1f7\n\u003e  [\u003cffffffff81cdb2dd\u003e] x86_64_start_reservations+0xb8/0xbd\n\u003e  [\u003cffffffff81cdb3e3\u003e] x86_64_start_kernel+0x101/0x110\n\nThis patch clears q-\u003eroot_blkg and q-\u003eroot_rl.blkg when root blkg\nis destroyed.\n\nSigned-off-by: Jun\u0027ichi Nomura \u003cj-nomura@ce.jp.nec.com\u003e\nAcked-by: Vivek Goyal \u003cvgoyal@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": "ce40be7a820bb393ac4ac69865f018d2f4038cf0",
      "tree": "b1fe5a93346eb06f22b1c303d63ec5456d7212ab",
      "parents": [
        "ba0a5a36f60e4c1152af3a2ae2813251974405bf",
        "02f3939e1a9357b7c370a4a69717cf9c02452737"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Oct 11 09:04:23 2012 +0900"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Oct 11 09:04:23 2012 +0900"
      },
      "message": "Merge branch \u0027for-3.7/core\u0027 of git://git.kernel.dk/linux-block\n\nPull block IO update from Jens Axboe:\n \"Core block IO bits for 3.7.  Not a huge round this time, it contains:\n\n   - First series from Kent cleaning up and generalizing bio allocation\n     and freeing.\n\n   - WRITE_SAME support from Martin.\n\n   - Mikulas patches to prevent O_DIRECT crashes when someone changes\n     the block size of a device.\n\n   - Make bio_split() work on data-less bio\u0027s (like trim/discards).\n\n   - A few other minor fixups.\"\n\nFixed up silent semantic mis-merge as per Mikulas Patocka and Andrew\nMorton.  It is due to the VM no longer using a prio-tree (see commit\n6b2dbba8b6ac: \"mm: replace vma prio_tree with an interval tree\").\n\nSo make set_blocksize() use mapping_mapped() instead of open-coding the\ninternal VM knowledge that has changed.\n\n* \u0027for-3.7/core\u0027 of git://git.kernel.dk/linux-block: (26 commits)\n  block: makes bio_split support bio without data\n  scatterlist: refactor the sg_nents\n  scatterlist: add sg_nents\n  fs: fix include/percpu-rwsem.h export error\n  percpu-rw-semaphore: fix documentation typos\n  fs/block_dev.c:1644:5: sparse: symbol \u0027blkdev_mmap\u0027 was not declared\n  blockdev: turn a rw semaphore into a percpu rw semaphore\n  Fix a crash when block device is read and block size is changed at the same time\n  block: fix request_queue-\u003eflags initialization\n  block: lift the initial queue bypass mode on blk_register_queue() instead of blk_init_allocated_queue()\n  block: ioctl to zero block ranges\n  block: Make blkdev_issue_zeroout use WRITE SAME\n  block: Implement support for WRITE SAME\n  block: Consolidate command flag and queue limit checks for merges\n  block: Clean up special command handling logic\n  block/blk-tag.c: Remove useless kfree\n  block: remove the duplicated setting for congestion_threshold\n  block: reject invalid queue attribute values\n  block: Add bio_clone_bioset(), bio_clone_kmalloc()\n  block: Consolidate bio_alloc_bioset(), bio_kmalloc()\n  ...\n"
    },
    {
      "commit": "68d47a137c3bef754923bccf73fb639c9b0bbd5e",
      "tree": "e82a527bd978ee96283f03d0df36f47d9aee1e41",
      "parents": [
        "c0e8a139a5bb8add02b4111e9e1957d810d7285e",
        "8c7f6edbda01f1b1a2e60ad61f14fe38023e433b"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Oct 02 10:52:28 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Oct 02 10:52:28 2012 -0700"
      },
      "message": "Merge branch \u0027for-3.7-hierarchy\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tj/cgroup\n\nPull cgroup hierarchy update from Tejun Heo:\n \"Currently, different cgroup subsystems handle nested cgroups\n  completely differently.  There\u0027s no consistency among subsystems and\n  the behaviors often are outright broken.\n\n  People at least seem to agree that the broken hierarhcy behaviors need\n  to be weeded out if any progress is gonna be made on this front and\n  that the fallouts from deprecating the broken behaviors should be\n  acceptable especially given that the current behaviors don\u0027t make much\n  sense when nested.\n\n  This patch makes cgroup emit warning messages if cgroups for\n  subsystems with broken hierarchy behavior are nested to prepare for\n  fixing them in the future.  This was put in a separate branch because\n  more related changes were expected (didn\u0027t make it this round) and the\n  memory cgroup wanted to pull in this and make changes on top.\"\n\n* \u0027for-3.7-hierarchy\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tj/cgroup:\n  cgroup: mark subsystems with broken hierarchy support and whine if cgroups are nested for them\n"
    },
    {
      "commit": "033d9959ed2dc1029217d4165f80a71702dc578e",
      "tree": "3d306316e44bdabce2e0bf2ef7e466e525f90b4c",
      "parents": [
        "974a847e00cf3ff1695e62b276892137893706ab",
        "7c6e72e46c9ea4a88f3f8ba96edce9db4bd48726"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Oct 02 09:54:49 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Oct 02 09:54:49 2012 -0700"
      },
      "message": "Merge branch \u0027for-3.7\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tj/wq\n\nPull workqueue changes from Tejun Heo:\n \"This is workqueue updates for v3.7-rc1.  A lot of activities this\n  round including considerable API and behavior cleanups.\n\n   * delayed_work combines a timer and a work item.  The handling of the\n     timer part has always been a bit clunky leading to confusing\n     cancelation API with weird corner-case behaviors.  delayed_work is\n     updated to use new IRQ safe timer and cancelation now works as\n     expected.\n\n   * Another deficiency of delayed_work was lack of the counterpart of\n     mod_timer() which led to cancel+queue combinations or open-coded\n     timer+work usages.  mod_delayed_work[_on]() are added.\n\n     These two delayed_work changes make delayed_work provide interface\n     and behave like timer which is executed with process context.\n\n   * A work item could be executed concurrently on multiple CPUs, which\n     is rather unintuitive and made flush_work() behavior confusing and\n     half-broken under certain circumstances.  This problem doesn\u0027t\n     exist for non-reentrant workqueues.  While non-reentrancy check\n     isn\u0027t free, the overhead is incurred only when a work item bounces\n     across different CPUs and even in simulated pathological scenario\n     the overhead isn\u0027t too high.\n\n     All workqueues are made non-reentrant.  This removes the\n     distinction between flush_[delayed_]work() and\n     flush_[delayed_]_work_sync().  The former is now as strong as the\n     latter and the specified work item is guaranteed to have finished\n     execution of any previous queueing on return.\n\n   * In addition to the various bug fixes, Lai redid and simplified CPU\n     hotplug handling significantly.\n\n   * Joonsoo introduced system_highpri_wq and used it during CPU\n     hotplug.\n\n  There are two merge commits - one to pull in IRQ safe timer from\n  tip/timers/core and the other to pull in CPU hotplug fixes from\n  wq/for-3.6-fixes as Lai\u0027s hotplug restructuring depended on them.\"\n\nFixed a number of trivial conflicts, but the more interesting conflicts\nwere silent ones where the deprecated interfaces had been used by new\ncode in the merge window, and thus didn\u0027t cause any real data conflicts.\n\nTejun pointed out a few of them, I fixed a couple more.\n\n* \u0027for-3.7\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tj/wq: (46 commits)\n  workqueue: remove spurious WARN_ON_ONCE(in_irq()) from try_to_grab_pending()\n  workqueue: use cwq_set_max_active() helper for workqueue_set_max_active()\n  workqueue: introduce cwq_set_max_active() helper for thaw_workqueues()\n  workqueue: remove @delayed from cwq_dec_nr_in_flight()\n  workqueue: fix possible stall on try_to_grab_pending() of a delayed work item\n  workqueue: use hotcpu_notifier() for workqueue_cpu_down_callback()\n  workqueue: use __cpuinit instead of __devinit for cpu callbacks\n  workqueue: rename manager_mutex to assoc_mutex\n  workqueue: WORKER_REBIND is no longer necessary for idle rebinding\n  workqueue: WORKER_REBIND is no longer necessary for busy rebinding\n  workqueue: reimplement idle worker rebinding\n  workqueue: deprecate __cancel_delayed_work()\n  workqueue: reimplement cancel_delayed_work() using try_to_grab_pending()\n  workqueue: use mod_delayed_work() instead of __cancel + queue\n  workqueue: use irqsafe timer for delayed_work\n  workqueue: clean up delayed_work initializers and add missing one\n  workqueue: make deferrable delayed_work initializer names consistent\n  workqueue: cosmetic whitespace updates for macro definitions\n  workqueue: deprecate system_nrt[_freezable]_wq\n  workqueue: deprecate flush[_delayed]_work_sync()\n  ...\n"
    },
    {
      "commit": "46e8894786327caf52cf686e27ba0795bddfcd63",
      "tree": "3f5ccb1fbad4e29915ed028063eed7ed6bbe30ba",
      "parents": [
        "3d5787c9976889bcf26cbd8f3124b91678a33275"
      ],
      "author": {
        "name": "Stefan Weinhuber",
        "email": "wein@de.ibm.com",
        "time": "Fri Aug 31 10:52:13 2012 +0200"
      },
      "committer": {
        "name": "Martin Schwidefsky",
        "email": "schwidefsky@de.ibm.com",
        "time": "Wed Sep 26 15:45:05 2012 +0200"
      },
      "message": "s390/partitions: make partition detection independent from DASD ioctls\n\nIn some usage scenarios it is desireable to work with disk images or\nvirtualized DASD devices. One problem that prevents such applications\nis the partition detection in ibm.c. Currently it works only for\ndevices that support the BIODASDINFO2 ioctl, in other words, it only\nworks for devices that belong to the DASD device driver.\n\nThe information gained from the BIODASDINFO2 ioctl is only for a small\nset of legacy cases abolutely necessary. All current VOL1, LNX1 and\nCMS1 type of disk labels can be interpreted correctly without this\ninformation, as long as the generic HDIO_GETGEO ioctl works and\nprovides a correct disk geometry.\n\nThis patch makes the ibm.c partition detection as independent as\npossible from the BIODASDINFO2 ioctl. Only the following two cases are\nstill restricted to real DASDs:\n- An FBA DASD, or LDL formatted ECKD DASD without any disk label.\n- An old style LNX1 label (without large volume support) on a disk\n  with inconsistent device geometry.\n\nSigned-off-by: Stefan Weinhuber \u003cwein@de.ibm.com\u003e\nSigned-off-by: Martin Schwidefsky \u003cschwidefsky@de.ibm.com\u003e\n"
    },
    {
      "commit": "60ea8226cbd5c8301f9a39edc574ddabcb8150e0",
      "tree": "db426f88c06a88e9a6e75eb6b3ef9c8b5ff0da85",
      "parents": [
        "749fefe6778e98dfefe3b8bb72a93875196ec554"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Thu Sep 20 14:09:30 2012 -0700"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@kernel.dk",
        "time": "Fri Sep 21 15:33:12 2012 +0200"
      },
      "message": "block: fix request_queue-\u003eflags initialization\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\nCc: stable@vger.kernel.org\nAcked-by: Vivek Goyal \u003cvgoyal@redhat.com\u003e\nSigned-off-by: Jens Axboe \u003caxboe@kernel.dk\u003e\n"
    },
    {
      "commit": "749fefe6778e98dfefe3b8bb72a93875196ec554",
      "tree": "7e3b2f2fb6e7bec5579a58e9f0c33fb614e69d80",
      "parents": [
        "66ba32dc167202c3cf8c86806581a9393ec7f488"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Thu Sep 20 14:08:52 2012 -0700"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@kernel.dk",
        "time": "Fri Sep 21 15:32:57 2012 +0200"
      },
      "message": "block: lift the initial queue bypass mode on blk_register_queue() instead of blk_init_allocated_queue()\n\nb82d4b197c (\"blkcg: make request_queue bypassing on allocation\") made\nrequest_queues bypassed on allocation to avoid switching on and off\nbypass mode on a queue being initialized.  Some drivers allocate and\nthen destroy a lot of queues without fully initializing them and\nincurring bypass latency overhead on each of them could add upto\nsignificant overhead.\n\nUnfortunately, blk_init_allocated_queue() is never used by queues of\nbio-based drivers, which means that all bio-based driver queues are in\nbypass mode even after initialization and registration complete\nsuccessfully.\n\nDue to the limited way request_queues are used by bio drivers, this\nproblem is hidden pretty well but it shows up when blk-throttle is\nused in combination with a bio-based driver.  Trying to configure\n(echoing to cgroupfs file) blk-throttle for a bio-based driver hangs\nindefinitely in blkg_conf_prep() waiting for bypass mode to end.\n\nThis patch moves the initial blk_queue_bypass_end() call from\nblk_init_allocated_queue() to blk_register_queue() which is called for\nany userland-visible queues regardless of its type.\n\nI believe this is correct because I don\u0027t think there is any block\ndriver which needs or wants working elevator and blk-cgroup on a queue\nwhich isn\u0027t visible to userland.  If there are such users, we need a\ndifferent solution.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nReported-by: Joseph Glanville \u003cjoseph.glanville@orionvm.com.au\u003e\nCc: stable@vger.kernel.org\nAcked-by: Vivek Goyal \u003cvgoyal@redhat.com\u003e\nSigned-off-by: Jens Axboe \u003caxboe@kernel.dk\u003e\n"
    },
    {
      "commit": "66ba32dc167202c3cf8c86806581a9393ec7f488",
      "tree": "61bc596fd84f48a47a28a593435b437371607d6f",
      "parents": [
        "579e8f3c7b2ecf7db91398d942d76457a3ddba21"
      ],
      "author": {
        "name": "Martin K. Petersen",
        "email": "martin.petersen@oracle.com",
        "time": "Tue Sep 18 12:19:29 2012 -0400"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@kernel.dk",
        "time": "Thu Sep 20 14:31:53 2012 +0200"
      },
      "message": "block: ioctl to zero block ranges\n\nIntroduce a BLKZEROOUT ioctl which can be used to clear block ranges by\nway of blkdev_issue_zeroout().\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": "579e8f3c7b2ecf7db91398d942d76457a3ddba21",
      "tree": "f41d7d469cb427550656f1d1d2c3b5215a9ea0aa",
      "parents": [
        "4363ac7c13a9a4b763c6e8d9fdbfc2468f3b8ca4"
      ],
      "author": {
        "name": "Martin K. Petersen",
        "email": "martin.petersen@oracle.com",
        "time": "Tue Sep 18 12:19:28 2012 -0400"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@kernel.dk",
        "time": "Thu Sep 20 14:31:49 2012 +0200"
      },
      "message": "block: Make blkdev_issue_zeroout use WRITE SAME\n\nIf the device supports WRITE SAME, use that to optimize zeroing of\nblocks. If the device does not support WRITE SAME or if the operation\nfails, fall back to writing zeroes the old-fashioned way.\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": "4363ac7c13a9a4b763c6e8d9fdbfc2468f3b8ca4",
      "tree": "010b05699eb9544b9cdfe5e1b3affdaea80132e7",
      "parents": [
        "f31dc1cd490539e2b62a126bc4dc2495b165d772"
      ],
      "author": {
        "name": "Martin K. Petersen",
        "email": "martin.petersen@oracle.com",
        "time": "Tue Sep 18 12:19:27 2012 -0400"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@kernel.dk",
        "time": "Thu Sep 20 14:31:45 2012 +0200"
      },
      "message": "block: Implement support for WRITE SAME\n\nThe WRITE SAME command supported on some SCSI devices allows the same\nblock to be efficiently replicated throughout a block range. Only a\nsingle logical block is transferred from the host and the storage device\nwrites the same data to all blocks described by the I/O.\n\nThis patch implements support for WRITE SAME in the block layer. The\nblkdev_issue_write_same() function can be used by filesystems and block\ndrivers to replicate a buffer across a block range. This can be used to\nefficiently initialize software RAID devices, etc.\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": "f31dc1cd490539e2b62a126bc4dc2495b165d772",
      "tree": "e8a917161111266f72a7aea539c9562dc2f2653d",
      "parents": [
        "e2a60da74fc8215c68509a89e9a69c66363153db"
      ],
      "author": {
        "name": "Martin K. Petersen",
        "email": "martin.petersen@oracle.com",
        "time": "Tue Sep 18 12:19:26 2012 -0400"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@kernel.dk",
        "time": "Thu Sep 20 14:31:41 2012 +0200"
      },
      "message": "block: Consolidate command flag and queue limit checks for merges\n\n - blk_check_merge_flags() verifies that cmd_flags / bi_rw are\n   compatible. This function is called for both req-req and req-bio\n   merging.\n\n - blk_rq_get_max_sectors() and blk_queue_get_max_sectors() can be used\n   to query the maximum sector count for a given request or queue. The\n   calls will return the right value from the queue limits given the\n   type of command (RW, discard, write same, etc.)\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": "e2a60da74fc8215c68509a89e9a69c66363153db",
      "tree": "c23dd6540dc211e2b2583c3e950a7f6977e3f1df",
      "parents": [
        "d41570b7469724005eb78448a69289900f911963"
      ],
      "author": {
        "name": "Martin K. Petersen",
        "email": "martin.petersen@oracle.com",
        "time": "Tue Sep 18 12:19:25 2012 -0400"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@kernel.dk",
        "time": "Thu Sep 20 14:31:38 2012 +0200"
      },
      "message": "block: Clean up special command handling logic\n\nRemove special-casing of non-rw fs style requests (discard). The nomerge\nflags are consolidated in blk_types.h, and rq_mergeable() and\nbio_mergeable() have been modified to use them.\n\nbio_is_rw() is used in place of bio_has_data() a few places. This is\ndone to to distinguish true reads and writes from other fs type requests\nthat carry a payload (e.g. write same).\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": "2bd6efad25d7c1950008e2ab4e2d6796001919fc",
      "tree": "408c87e0808e9b4ad4c8f9d95063c89d50350545",
      "parents": [
        "97651ea687d3b6a214c32b49f79523db709fba18"
      ],
      "author": {
        "name": "Alan Cox",
        "email": "alan@linux.intel.com",
        "time": "Mon Sep 17 11:47:13 2012 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@kernel.dk",
        "time": "Tue Sep 18 11:56:29 2012 +0200"
      },
      "message": "blk: add an upper sanity check on partition adding\n\n65536 should be ludicrous anyway but without it we overflow the\nmemory computation doing the allocation and badness occurs.\n\nSigned-off-by: Alan Cox \u003calan@linux.intel.com\u003e\nSigned-off-by: Jens Axboe \u003caxboe@kernel.dk\u003e\n"
    },
    {
      "commit": "8c7f6edbda01f1b1a2e60ad61f14fe38023e433b",
      "tree": "f1db9712b109575cba86e37140e1e4f8a56ca780",
      "parents": [
        "fbcbe2b3c92ee1c930dcfcf8bb764074c100fd63"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Thu Sep 13 12:20:58 2012 -0700"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Fri Sep 14 12:01:16 2012 -0700"
      },
      "message": "cgroup: mark subsystems with broken hierarchy support and whine if cgroups are nested for them\n\nCurrently, cgroup hierarchy support is a mess.  cpu related subsystems\nbehave correctly - configuration, accounting and control on a parent\nproperly cover its children.  blkio and freezer completely ignore\nhierarchy and treat all cgroups as if they\u0027re directly under the root\ncgroup.  Others show yet different behaviors.\n\nThese differing interpretations of cgroup hierarchy make using cgroup\nconfusing and it impossible to co-mount controllers into the same\nhierarchy and obtain sane behavior.\n\nEventually, we want full hierarchy support from all subsystems and\nprobably a unified hierarchy.  Users using separate hierarchies\nexpecting completely different behaviors depending on the mounted\nsubsystem is deterimental to making any progress on this front.\n\nThis patch adds cgroup_subsys.broken_hierarchy and sets it to %true\nfor controllers which are lacking in hierarchy support.  The goal of\nthis patch is two-fold.\n\n* Move users away from using hierarchy on currently non-hierarchical\n  subsystems, so that implementing proper hierarchy support on those\n  doesn\u0027t surprise them.\n\n* Keep track of which controllers are broken how and nudge the\n  subsystems to implement proper hierarchy support.\n\nFor now, start with a single warning message.  We can whine louder\nlater on.\n\nv2: Fixed a typo spotted by Michal. Warning message updated.\n\nv3: Updated memcg part so that it doesn\u0027t generate warning in the\n    cases where .use_hierarchy\u003dfalse doesn\u0027t make the behavior\n    different from root.use_hierarchy\u003dtrue.  Fixed a typo spotted by\n    Glauber.\n\nv4: Check -\u003ebroken_hierarchy after cgroup creation is complete so that\n    -\u003ecreate() can affect the result per Michal.  Dropped unnecessary\n    memcg root handling per Michal.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nAcked-by: Michal Hocko \u003cmhocko@suse.cz\u003e\nAcked-by: Li Zefan \u003clizefan@huawei.com\u003e\nAcked-by: Serge E. Hallyn \u003cserue@us.ibm.com\u003e\nCc: Glauber Costa \u003cglommer@parallels.com\u003e\nCc: Peter Zijlstra \u003cpeterz@infradead.org\u003e\nCc: Paul Turner \u003cpjt@google.com\u003e\nCc: Johannes Weiner \u003channes@cmpxchg.org\u003e\nCc: Thomas Graf \u003ctgraf@suug.ch\u003e\nCc: Vivek Goyal \u003cvgoyal@redhat.com\u003e\nCc: Paul Mackerras \u003cpaulus@samba.org\u003e\nCc: Ingo Molnar \u003cmingo@redhat.com\u003e\nCc: Arnaldo Carvalho de Melo \u003cacme@ghostprotocols.net\u003e\nCc: Neil Horman \u003cnhorman@tuxdriver.com\u003e\nCc: Aneesh Kumar K.V \u003caneesh.kumar@linux.vnet.ibm.com\u003e\n"
    },
    {
      "commit": "d41570b7469724005eb78448a69289900f911963",
      "tree": "c2d92ce5c5c370a4a50770ee84ea4fd50a57e010",
      "parents": [
        "e32463b2f7801d6561887c01db37b34958504635"
      ],
      "author": {
        "name": "Peter Senna Tschudin",
        "email": "peter.senna@gmail.com",
        "time": "Wed Sep 12 17:06:40 2012 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@kernel.dk",
        "time": "Wed Sep 12 22:25:12 2012 +0200"
      },
      "message": "block/blk-tag.c: Remove useless kfree\n\nRemove useless kfree() and clean up code related to the removal.\n\nThe semantic patch that finds this problem is as follows:\n(http://coccinelle.lip6.fr/)\n\n// \u003csmpl\u003e\n@r exists@\nposition p1,p2;\nexpression x;\n@@\n\nif (x@p1 \u003d\u003d NULL) { ... kfree@p2(x); ... return ...; }\n\n@unchanged exists@\nposition r.p1,r.p2;\nexpression e \u003c\u003d r.x,x,e1;\niterator I;\nstatement S;\n@@\n\nif (x@p1 \u003d\u003d NULL) { ... when !\u003d I(x,...) S\n                        when !\u003d e \u003d e1\n                        when !\u003d e +\u003d e1\n                        when !\u003d e -\u003d e1\n                        when !\u003d ++e\n                        when !\u003d --e\n                        when !\u003d e++\n                        when !\u003d e--\n                        when !\u003d \u0026e\n   kfree@p2(x); ... return ...; }\n\n@ok depends on unchanged exists@\nposition any r.p1;\nposition r.p2;\nexpression x;\n@@\n\n... when !\u003d true x@p1 \u003d\u003d NULL\nkfree@p2(x);\n\n@depends on !ok \u0026\u0026 unchanged@\nposition r.p2;\nexpression x;\n@@\n\n*kfree@p2(x);\n// \u003c/smpl\u003e\n\nSigned-off-by: Peter Senna Tschudin \u003cpeter.senna@gmail.com\u003e\nSigned-off-by: Jens Axboe \u003caxboe@kernel.dk\u003e\n"
    },
    {
      "commit": "e32463b2f7801d6561887c01db37b34958504635",
      "tree": "1c54f4bca7ec3f80e01cbc3490240212bd28ffcc",
      "parents": [
        "b1f3b64d76cf88cc250e5cdd1de783ba9737078e"
      ],
      "author": {
        "name": "Jaehoon Chung",
        "email": "jh80.chung@samsung.com",
        "time": "Fri Aug 31 17:24:13 2012 +0900"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@kernel.dk",
        "time": "Sun Sep 09 12:44:10 2012 +0200"
      },
      "message": "block: remove the duplicated setting for congestion_threshold\n\nBefore call the blk_queue_congestion_threshold(),\nthe blk_queue_congestion_threshold() is already called at blk_queue_make_rquest().\nBecause this code is the duplicated, it has removed.\n\nSigned-off-by: Jaehoon Chung \u003cjh80.chung@samsung.com\u003e\nSigned-off-by: Kyungmin Park \u003ckyungmin.park@samsung.com\u003e\nSigned-off-by: Jens Axboe \u003caxboe@kernel.dk\u003e\n"
    },
    {
      "commit": "b1f3b64d76cf88cc250e5cdd1de783ba9737078e",
      "tree": "c7ec8496a2b9a8af239fa78090f65178f30063c7",
      "parents": [
        "bf800ef1816b4283a885e55ad38068aec9711e4d"
      ],
      "author": {
        "name": "Dave Reisner",
        "email": "dreisner@archlinux.org",
        "time": "Sat Sep 08 11:55:45 2012 -0400"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@kernel.dk",
        "time": "Sun Sep 09 10:39:18 2012 +0200"
      },
      "message": "block: reject invalid queue attribute values\n\nInstead of using simple_strtoul which \"converts\" invalid numbers to 0,\nuse strict_strtoul and perform error checking to ensure that userspace\npasses us a valid unsigned long. This addresses problems with functions\nsuch as writev, which might want to write a trailing newline -- the\nnewline should rightfully be rejected, but the value preceeding it\nshould be preserved.\n\nFixes BZ#46981.\n\nSigned-off-by: Dave Reisner \u003cdreisner@archlinux.org\u003e\nSigned-off-by: Jens Axboe \u003caxboe@kernel.dk\u003e\n"
    },
    {
      "commit": "bf800ef1816b4283a885e55ad38068aec9711e4d",
      "tree": "c99cbe70b68ede65b478b3006a7ed7e34b453f3d",
      "parents": [
        "3f86a82aeb03e6100f7ab39f4702e033a5e38166"
      ],
      "author": {
        "name": "Kent Overstreet",
        "email": "koverstreet@google.com",
        "time": "Thu Sep 06 15:35:02 2012 -0700"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@kernel.dk",
        "time": "Sun Sep 09 10:35:39 2012 +0200"
      },
      "message": "block: Add bio_clone_bioset(), bio_clone_kmalloc()\n\nPreviously, there was bio_clone() but it only allocated from the fs bio\nset; as a result various users were open coding it and using\n__bio_clone().\n\nThis changes bio_clone() to become bio_clone_bioset(), and then we add\nbio_clone() and bio_clone_kmalloc() as wrappers around it, making use of\nthe functionality the last patch adedd.\n\nThis will also help in a later patch changing how bio cloning works.\n\nSigned-off-by: Kent Overstreet \u003ckoverstreet@google.com\u003e\nCC: Jens Axboe \u003caxboe@kernel.dk\u003e\nCC: NeilBrown \u003cneilb@suse.de\u003e\nCC: Alasdair Kergon \u003cagk@redhat.com\u003e\nCC: Boaz Harrosh \u003cbharrosh@panasas.com\u003e\nCC: Jeff Garzik \u003cjeff@garzik.org\u003e\nAcked-by: Jeff Garzik \u003cjgarzik@redhat.com\u003e\nSigned-off-by: Jens Axboe \u003caxboe@kernel.dk\u003e\n"
    },
    {
      "commit": "4254bba17d92d53822a56ebc2a0c1eb7e2a71155",
      "tree": "77668d39949a0751c5e9ef8d0fb47b96392e84e5",
      "parents": [
        "ccc5c9ca6aac08218b1ba52afd07a1a9864c8c5d"
      ],
      "author": {
        "name": "Kent Overstreet",
        "email": "koverstreet@google.com",
        "time": "Thu Sep 06 15:35:00 2012 -0700"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@kernel.dk",
        "time": "Sun Sep 09 10:35:39 2012 +0200"
      },
      "message": "block: Kill bi_destructor\n\nNow that we\u0027ve got generic code for freeing bios allocated from bio\npools, this isn\u0027t needed anymore.\n\nThis patch also makes bio_free() static, since without bi_destructor\nthere should be no need for it to be called anywhere else.\n\nbio_free() is now only called from bio_put, so we can refactor those a\nbit - move some code from bio_put() to bio_free() and kill the redundant\nbio-\u003ebi_next \u003d NULL.\n\nv5: Switch to BIO_KMALLOC_POOL ((void *)~0), per Boaz\nv6: BIO_KMALLOC_POOL now NULL, drop bio_free\u0027s EXPORT_SYMBOL\nv7: No #define BIO_KMALLOC_POOL anymore\n\nSigned-off-by: Kent Overstreet \u003ckoverstreet@google.com\u003e\nCC: Jens Axboe \u003caxboe@kernel.dk\u003e\nSigned-off-by: Jens Axboe \u003caxboe@kernel.dk\u003e\n"
    }
  ],
  "next": "1e2a410ff71504a64d1af2e354287ac51aeac1b0"
}
