)]}'
{
  "log": [
    {
      "commit": "5ee540613db504a10e15fafaf4c08cac96aa1823",
      "tree": "dc0b348debbb557866285dbee51e29ff3496ffa4",
      "parents": [
        "29be6345bbaec8502a70c4e2204d5818b48c4e8f",
        "0d11e6aca396e679c07b2dd6af5dc8b7f041fbbd"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Dec 05 15:33:27 2013 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Dec 05 15:33:27 2013 -0800"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.dk/linux-block\n\nPull block layer fixes from Jens Axboe:\n \"A small collection of fixes for the current series. It contains:\n\n   - A fix for a use-after-free of a request in blk-mq.  From Ming Lei\n\n   - A fix for a blk-mq bug that could attempt to dereference a NULL rq\n     if allocation failed\n\n   - Two xen-blkfront small fixes\n\n   - Cleanup of submit_bio_wait() type uses in the kernel, unifying\n     that.  From Kent\n\n   - A fix for 32-bit blkg_rwstat reading.  I apologize for this one\n     looking mangled in the shortlog, it\u0027s entirely my fault for missing\n     an empty line between the description and body of the text\"\n\n* \u0027for-linus\u0027 of git://git.kernel.dk/linux-block:\n  blk-mq: fix use-after-free of request\n  blk-mq: fix dereference of rq-\u003emq_ctx if allocation fails\n  block: xen-blkfront: Fix possible NULL ptr dereference\n  xen-blkfront: Silence pfn maybe-uninitialized warning\n  block: submit_bio_wait() conversions\n  Update of blkg_stat and blkg_rwstat may happen in bh context\n"
    },
    {
      "commit": "0d11e6aca396e679c07b2dd6af5dc8b7f041fbbd",
      "tree": "70c03f4a224b9fe3e7e140881d251a9472dc6149",
      "parents": [
        "959a35f13eb785f982d79b1aaa75872d05c821da"
      ],
      "author": {
        "name": "Ming Lei",
        "email": "tom.leiming@gmail.com",
        "time": "Thu Dec 05 10:50:39 2013 -0700"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@kernel.dk",
        "time": "Thu Dec 05 10:50:39 2013 -0700"
      },
      "message": "blk-mq: fix use-after-free of request\n\nIf accounting is on, we will do the IO completion accounting after\nwe have freed the request. Fix that by moving it sooner instead.\n\nSigned-off-by: Jens Axboe \u003caxboe@kernel.dk\u003e\n"
    },
    {
      "commit": "959a35f13eb785f982d79b1aaa75872d05c821da",
      "tree": "cf6d053aee1a645f5ec9fc8e81d5f153b5a8692d",
      "parents": [
        "e345d767f6530ec9cb0aabab7ea248072a9c6975"
      ],
      "author": {
        "name": "Jeff Moyer",
        "email": "jmoyer@redhat.com",
        "time": "Tue Dec 03 14:23:00 2013 -0700"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@kernel.dk",
        "time": "Tue Dec 03 14:24:28 2013 -0700"
      },
      "message": "blk-mq: fix dereference of rq-\u003emq_ctx if allocation fails\n\nIf __GFP_WAIT isn\u0027t set and we fail allocating, when we go\nto drop the reference on the ctx, we will attempt to dereference\nthe NULL rq. Fix that.\n\nSigned-off-by: Jeff Moyer \u003cjmoyer@redhat.com\u003e\nSigned-off-by: Jens Axboe \u003caxboe@kernel.dk\u003e\n"
    },
    {
      "commit": "c170bbb45febc03ac4d34ba2b8bb55e06104b7e7",
      "tree": "ab1d6878c379b0eb59e58a1999e7c2d8c11ae303",
      "parents": [
        "2c575026fae6e63771bd2a4c1d407214a8096a89"
      ],
      "author": {
        "name": "Kent Overstreet",
        "email": "kmo@daterainc.com",
        "time": "Sun Nov 24 16:32:22 2013 -0700"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@kernel.dk",
        "time": "Sun Nov 24 16:33:41 2013 -0700"
      },
      "message": "block: submit_bio_wait() conversions\n\nIt was being open coded in a few places.\n\nSigned-off-by: Kent Overstreet \u003ckmo@daterainc.com\u003e\nCc: Jens Axboe \u003caxboe@kernel.dk\u003e\nCc: Joern Engel \u003cjoern@logfs.org\u003e\nCc: Prasad Joshi \u003cprasadjoshi.linux@gmail.com\u003e\nCc: Neil Brown \u003cneilb@suse.de\u003e\nCc: Chris Mason \u003cchris.mason@fusionio.com\u003e\nAcked-by: NeilBrown \u003cneilb@suse.de\u003e\nSigned-off-by: Jens Axboe \u003caxboe@kernel.dk\u003e\n"
    },
    {
      "commit": "49204c116a9ee24536d371be02a2f05e6493c949",
      "tree": "f212b1a3d8b8fef05f570658f6acd9efe596ad26",
      "parents": [
        "51a0d036f995585e8c5c30797d5bce28645d9dd7"
      ],
      "author": {
        "name": "Antti P Miettinen",
        "email": "amiettinen@nvidia.com",
        "time": "Thu Nov 21 14:32:05 2013 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Nov 21 16:42:27 2013 -0800"
      },
      "message": "block/partitions/efi.c: fix bound check\n\nUse ARRAY_SIZE instead of sizeof to get proper max for label length.\n\nSince this is just a read out of bounds it\u0027s not that bad, but the\nproblem becomes user-visible eg if one tries to use DEBUG_PAGEALLOC and\nDEBUG_RODATA, at least with some enhancements from Hiroshi.  Of course\nthe destination array can contain garbage when we read beyond the end of\nsource array so that would be another user-visible problem.\n\nSigned-off-by: Antti P Miettinen \u003camiettinen@nvidia.com\u003e\nReviewed-by: Hiroshi Doyu \u003chdoyu@nvidia.com\u003e\nTested-by: Hiroshi Doyu \u003chdoyu@nvidia.com\u003e\nCc: Will Drewry \u003cwad@chromium.org\u003e\nCc: Matt Fleming \u003cmatt.fleming@intel.com\u003e\nAcked-by: Davidlohr Bueso \u003cdavidlohr@hp.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "2c575026fae6e63771bd2a4c1d407214a8096a89",
      "tree": "4ab6ccbdf75b96229f176fc54e01580954e7a633",
      "parents": [
        "82023bb7f75b0052f40d3e74169d191c3e4e6286"
      ],
      "author": {
        "name": "Hong Zhiguo",
        "email": "zhiguohong@tencent.com",
        "time": "Wed Nov 20 10:35:05 2013 -0700"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@kernel.dk",
        "time": "Wed Nov 20 15:33:04 2013 -0700"
      },
      "message": "Update of blkg_stat and blkg_rwstat may happen in bh context.\nWhile u64_stats_fetch_retry is only preempt_disable on 32bit\nUP system. This is not enough to avoid preemption by bh and\nmay read strange 64 bit value.\n\nSigned-off-by: Hong Zhiguo \u003czhiguohong@tencent.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": "01b983c9fcfeea5774ca2df2e167b68c3c299278",
      "tree": "be2bdbbd77472f73ec758f69b5320216c101a90b",
      "parents": [
        "f02b9ac35a47dff745c7637fbc095f01cc03646e"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "axboe@kernel.dk",
        "time": "Tue Nov 19 18:59:10 2013 -0700"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@kernel.dk",
        "time": "Tue Nov 19 19:00:45 2013 -0700"
      },
      "message": "blk-mq: add blktrace insert event trace\n\nWe need it to make \u0027btt\u0027 from blktrace happy, otherwise\nwe are missing one state transition.\n\nSigned-off-by: Jens Axboe \u003caxboe@kernel.dk\u003e\n"
    },
    {
      "commit": "94eddfbeaafa3e8040a2c47d370dea0e58e76941",
      "tree": "52cdf7a26b27d9cab3b1eba9b424a6d1432bdf8d",
      "parents": [
        "34f2fd8dfe6185b0eaaf7d661281713a6170b077"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "axboe@kernel.dk",
        "time": "Tue Nov 19 09:25:07 2013 -0700"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@kernel.dk",
        "time": "Tue Nov 19 09:25:07 2013 -0700"
      },
      "message": "blk-mq: ensure that we set REQ_IO_STAT so diskstats work\n\nIf disk stats are enabled on the queue, a request needs to\nbe marked with REQ_IO_STAT for accounting to be active on\nthat request. This fixes an issue with virtio-blk not\nshowing up in /proc/diskstats after the conversion to\nblk-mq.\n\nAdd QUEUE_FLAG_MQ_DEFAULT, setting stats and same cpu-group\ncompletion on by default.\n\nReported-by: Dave Chinner \u003cdavid@fromorbit.com\u003e\nSigned-off-by: Jens Axboe \u003caxboe@kernel.dk\u003e\n"
    },
    {
      "commit": "f412f2c60b480fa5140a4b4cb321cd48c64e1812",
      "tree": "aafd5a5922b43daca4abdfa9bb723fc1f334108d",
      "parents": [
        "cd1177f25069cb494680eedd718e7c6d8fd85d10",
        "1cf7e9c68fe84248174e998922b39e508375e7c1"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Nov 15 16:33:41 2013 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Nov 15 16:33:41 2013 -0800"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.dk/linux-block\n\nPull second round of block driver updates from Jens Axboe:\n \"As mentioned in the original pull request, the bcache bits were pulled\n  because of their dependency on the immutable bio vecs.  Kent re-did\n  this part and resubmitted it, so here\u0027s the 2nd round of (mostly)\n  driver updates for 3.13.  It contains:\n\n - The bcache work from Kent.\n\n - Conversion of virtio-blk to blk-mq.  This removes the bio and request\n   path, and substitutes with the blk-mq path instead.  The end result\n   almost 200 deleted lines.  Patch is acked by Asias and Christoph, who\n   both did a bunch of testing.\n\n - A removal of bootmem.h include from Grygorii Strashko, part of a\n   larger series of his killing the dependency on that header file.\n\n - Removal of __cpuinit from blk-mq from Paul Gortmaker\"\n\n* \u0027for-linus\u0027 of git://git.kernel.dk/linux-block: (56 commits)\n  virtio_blk: blk-mq support\n  blk-mq: remove newly added instances of __cpuinit\n  bcache: defensively handle format strings\n  bcache: Bypass torture test\n  bcache: Delete some slower inline asm\n  bcache: Use ida for bcache block dev minor\n  bcache: Fix sysfs splat on shutdown with flash only devs\n  bcache: Better full stripe scanning\n  bcache: Have btree_split() insert into parent directly\n  bcache: Move spinlock into struct time_stats\n  bcache: Kill sequential_merge option\n  bcache: Kill bch_next_recurse_key()\n  bcache: Avoid deadlocking in garbage collection\n  bcache: Incremental gc\n  bcache: Add make_btree_freeing_key()\n  bcache: Add btree_node_write_sync()\n  bcache: PRECEDING_KEY()\n  bcache: bch_(btree|extent)_ptr_invalid()\n  bcache: Don\u0027t bother with bucket refcount for btree node allocations\n  bcache: Debug code improvements\n  ...\n"
    },
    {
      "commit": "0a06ff068f1255bcd7965ab07bc0f4adc3eb639a",
      "tree": "419618fc4573c9d0ff17f383e84fc41071d50004",
      "parents": [
        "fc21c0cff2f425891b28ff6fb6b03b325c977428"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@infradead.org",
        "time": "Thu Nov 14 14:32:07 2013 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Nov 15 09:32:22 2013 +0900"
      },
      "message": "kernel: remove CONFIG_USE_GENERIC_SMP_HELPERS\n\nWe\u0027ve switched over every architecture that supports SMP to it, so\nremove the new useless config variable.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nCc: Jan Kara \u003cjack@suse.cz\u003e\nCc: Jens Axboe \u003caxboe@kernel.dk\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "f618ef7c47934d1686a764d0c9f70f23e566683f",
      "tree": "61eb2bdac3d7e9f36ef68fab4c09b04b5730e879",
      "parents": [
        "d17ab4592760973d95961bb29f26969246e9dabc"
      ],
      "author": {
        "name": "Paul Gortmaker",
        "email": "paul.gortmaker@windriver.com",
        "time": "Thu Nov 14 08:26:02 2013 -0700"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@kernel.dk",
        "time": "Thu Nov 14 08:26:02 2013 -0700"
      },
      "message": "blk-mq: remove newly added instances of __cpuinit\n\nThe new blk-mq code added new instances of __cpuinit usage.\nWe removed this a couple versions ago; we now want to remove\nthe compat no-op stubs.  Introducing new users is not what\nwe want to see at this point in time, as it will break once\nthe stubs are gone.\n\nSigned-off-by: Paul Gortmaker \u003cpaul.gortmaker@windriver.com\u003e\nSigned-off-by: Jens Axboe \u003caxboe@kernel.dk\u003e\n"
    },
    {
      "commit": "5e30025a319910695f5010dc0fb53a23299da14d",
      "tree": "4292bcf78de221c7de1774ccf5ad0ac5a9315c26",
      "parents": [
        "7971e23a66c94f1b9bd2d64a3e86dfbfa8c60121",
        "90d3839b90fe379557dae4a44735a6af78f42885"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Nov 14 16:30:30 2013 +0900"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Nov 14 16:30:30 2013 +0900"
      },
      "message": "Merge branch \u0027core-locking-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip\n\nPull core locking changes from Ingo Molnar:\n \"The biggest changes:\n\n   - add lockdep support for seqcount/seqlocks structures, this\n     unearthed both bugs and required extra annotation.\n\n   - move the various kernel locking primitives to the new\n     kernel/locking/ directory\"\n\n* \u0027core-locking-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: (21 commits)\n  block: Use u64_stats_init() to initialize seqcounts\n  locking/lockdep: Mark __lockdep_count_forward_deps() as static\n  lockdep/proc: Fix lock-time avg computation\n  locking/doc: Update references to kernel/mutex.c\n  ipv6: Fix possible ipv6 seqlock deadlock\n  cpuset: Fix potential deadlock w/ set_mems_allowed\n  seqcount: Add lockdep functionality to seqcount/seqlock structures\n  net: Explicitly initialize u64_stats_sync structures for lockdep\n  locking: Move the percpu-rwsem code to kernel/locking/\n  locking: Move the lglocks code to kernel/locking/\n  locking: Move the rwsem code to kernel/locking/\n  locking: Move the rtmutex code to kernel/locking/\n  locking: Move the semaphore core to kernel/locking/\n  locking: Move the spinlock code to kernel/locking/\n  locking: Move the lockdep code to kernel/locking/\n  locking: Move the mutex code to kernel/locking/\n  hung_task debugging: Add tracepoint to report the hang\n  x86/locking/kconfig: Update paravirt spinlock Kconfig description\n  lockstat: Report avg wait and hold times\n  lockdep, x86/alternatives: Drop ancient lockdep fixup message\n  ...\n"
    },
    {
      "commit": "0910c0bdf7c291a41bc21e40a97389c9d4c1960d",
      "tree": "177c4cb22ece78b18f64f548ae82b9a15edbb99c",
      "parents": [
        "2821fe6b00a1e902fd399bb4b7e40bc3041f4d44",
        "e37459b8e2c7db6735e39e019e448b76e5e77647"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Nov 14 12:08:14 2013 +0900"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Nov 14 12:08:14 2013 +0900"
      },
      "message": "Merge branch \u0027for-3.13/core\u0027 of git://git.kernel.dk/linux-block\n\nPull block IO core updates from Jens Axboe:\n \"This is the pull request for the core changes in the block layer for\n  3.13.  It contains:\n\n   - The new blk-mq request interface.\n\n     This is a new and more scalable queueing model that marries the\n     best part of the request based interface we currently have (which\n     is fully featured, but scales poorly) and the bio based \"interface\"\n     which the new drivers for high IOPS devices end up using because\n     it\u0027s much faster than the request based one.\n\n     The bio interface has no block layer support, since it taps into\n     the stack much earlier.  This means that drivers end up having to\n     implement a lot of functionality on their own, like tagging,\n     timeout handling, requeue, etc.  The blk-mq interface provides all\n     these.  Some drivers even provide a switch to select bio or rq and\n     has code to handle both, since things like merging only works in\n     the rq model and hence is faster for some workloads.  This is a\n     huge mess.  Conversion of these drivers nets us a substantial code\n     reduction.  Initial results on converting SCSI to this model even\n     shows an 8x improvement on single queue devices.  So while the\n     model was intended to work on the newer multiqueue devices, it has\n     substantial improvements for \"classic\" hardware as well.  This code\n     has gone through extensive testing and development, it\u0027s now ready\n     to go.  A pull request is coming to convert virtio-blk to this\n     model will be will be coming as well, with more drivers scheduled\n     for 3.14 conversion.\n\n   - Two blktrace fixes from Jan and Chen Gang.\n\n   - A plug merge fix from Alireza Haghdoost.\n\n   - Conversion of __get_cpu_var() from Christoph Lameter.\n\n   - Fix for sector_div() with 64-bit divider from Geert Uytterhoeven.\n\n   - A fix for a race between request completion and the timeout\n     handling from Jeff Moyer.  This is what caused the merge conflict\n     with blk-mq/core, in case you are looking at that.\n\n   - A dm stacking fix from Mike Snitzer.\n\n   - A code consolidation fix and duplicated code removal from Kent\n     Overstreet.\n\n   - A handful of block bug fixes from Mikulas Patocka, fixing a loop\n     crash and memory corruption on blk cg.\n\n   - Elevator switch bug fix from Tomoki Sekiyama.\n\n  A heads-up that I had to rebase this branch.  Initially the immutable\n  bio_vecs had been queued up for inclusion, but a week later, it became\n  clear that it wasn\u0027t fully cooked yet.  So the decision was made to\n  pull this out and postpone it until 3.14.  It was a straight forward\n  rebase, just pruning out the immutable series and the later fixes of\n  problems with it.  The rest of the patches applied directly and no\n  further changes were made\"\n\n* \u0027for-3.13/core\u0027 of git://git.kernel.dk/linux-block: (31 commits)\n  block: replace IS_ERR and PTR_ERR with PTR_ERR_OR_ZERO\n  block: replace IS_ERR and PTR_ERR with PTR_ERR_OR_ZERO\n  block: Do not call sector_div() with a 64-bit divisor\n  kernel: trace: blktrace: remove redundent memcpy() in compat_blk_trace_setup()\n  block: Consolidate duplicated bio_trim() implementations\n  block: Use rw_copy_check_uvector()\n  block: Enable sysfs nomerge control for I/O requests in the plug list\n  block: properly stack underlying max_segment_size to DM device\n  elevator: acquire q-\u003esysfs_lock in elevator_change()\n  elevator: Fix a race in elevator switching and md device initialization\n  block: Replace __get_cpu_var uses\n  bdi: test bdi_init failure\n  block: fix a probe argument to blk_register_region\n  loop: fix crash if blk_alloc_queue fails\n  blk-core: Fix memory corruption if blkcg_init_queue fails\n  block: fix race between request completion and timeout handling\n  blktrace: Send BLK_TN_PROCESS events to all running traces\n  blk-mq: don\u0027t disallow request merges for req-\u003especial being set\n  blk-mq: mq plug list breakage\n  blk-mq: fix for flush deadlock\n  ...\n"
    },
    {
      "commit": "8ceafbfa91ffbdbb2afaea5c24ccb519ffb8b587",
      "tree": "98c9ea93362536f1ddd73175b13b7847583350df",
      "parents": [
        "42a2d923cc349583ebf6fdd52a7d35e1c2f7e6bd",
        "26ba47b18318abe7dadbe9294a611c0e932651d8"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Nov 14 07:55:21 2013 +0900"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Nov 14 07:55:21 2013 +0900"
      },
      "message": "Merge branch \u0027for-linus-dma-masks\u0027 of git://git.linaro.org/people/rmk/linux-arm\n\nPull DMA mask updates from Russell King:\n \"This series cleans up the handling of DMA masks in a lot of drivers,\n  fixing some bugs as we go.\n\n  Some of the more serious errors include:\n   - drivers which only set their coherent DMA mask if the attempt to\n     set the streaming mask fails.\n   - drivers which test for a NULL dma mask pointer, and then set the\n     dma mask pointer to a location in their module .data section -\n     which will cause problems if the module is reloaded.\n\n  To counter these, I have introduced two helper functions:\n   - dma_set_mask_and_coherent() takes care of setting both the\n     streaming and coherent masks at the same time, with the correct\n     error handling as specified by the API.\n   - dma_coerce_mask_and_coherent() which resolves the problem of\n     drivers forcefully setting DMA masks.  This is more a marker for\n     future work to further clean these locations up - the code which\n     creates the devices really should be initialising these, but to fix\n     that in one go along with this change could potentially be very\n     disruptive.\n\n  The last thing this series does is prise away some of Linux\u0027s addition\n  to \"DMA addresses are physical addresses and RAM always starts at\n  zero\".  We have ARM LPAE systems where all system memory is above 4GB\n  physical, hence having DMA masks interpreted by (eg) the block layers\n  as describing physical addresses in the range 0..DMAMASK fails on\n  these platforms.  Santosh Shilimkar addresses this in this series; the\n  patches were copied to the appropriate people multiple times but were\n  ignored.\n\n  Fixing this also gets rid of some ARM weirdness in the setup of the\n  max*pfn variables, and brings ARM into line with every other Linux\n  architecture as far as those go\"\n\n* \u0027for-linus-dma-masks\u0027 of git://git.linaro.org/people/rmk/linux-arm: (52 commits)\n  ARM: 7805/1: mm: change max*pfn to include the physical offset of memory\n  ARM: 7797/1: mmc: Use dma_max_pfn(dev) helper for bounce_limit calculations\n  ARM: 7796/1: scsi: Use dma_max_pfn(dev) helper for bounce_limit calculations\n  ARM: 7795/1: mm: dma-mapping: Add dma_max_pfn(dev) helper function\n  ARM: 7794/1: block: Rename parameter dma_mask to max_addr for blk_queue_bounce_limit()\n  ARM: DMA-API: better handing of DMA masks for coherent allocations\n  ARM: 7857/1: dma: imx-sdma: setup dma mask\n  DMA-API: firmware/google/gsmi.c: avoid direct access to DMA masks\n  DMA-API: dcdbas: update DMA mask handing\n  DMA-API: dma: edma.c: no need to explicitly initialize DMA masks\n  DMA-API: usb: musb: use platform_device_register_full() to avoid directly messing with dma masks\n  DMA-API: crypto: remove last references to \u0027static struct device *dev\u0027\n  DMA-API: crypto: fix ixp4xx crypto platform device support\n  DMA-API: others: use dma_set_coherent_mask()\n  DMA-API: staging: use dma_set_coherent_mask()\n  DMA-API: usb: use new dma_coerce_mask_and_coherent()\n  DMA-API: usb: use dma_set_coherent_mask()\n  DMA-API: parport: parport_pc.c: use dma_coerce_mask_and_coherent()\n  DMA-API: net: octeon: use dma_coerce_mask_and_coherent()\n  DMA-API: net: nxp/lpc_eth: use dma_coerce_mask_and_coherent()\n  ...\n"
    },
    {
      "commit": "90d3839b90fe379557dae4a44735a6af78f42885",
      "tree": "a7c36fe04e8adcc5f1fb4a7917c1c6fcbc73ed96",
      "parents": [
        "5216d530bbd8581c927b250a11533c2a31b57510"
      ],
      "author": {
        "name": "Peter Zijlstra",
        "email": "peterz@infradead.org",
        "time": "Tue Nov 12 19:42:14 2013 -0800"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@kernel.org",
        "time": "Wed Nov 13 13:54:08 2013 +0100"
      },
      "message": "block: Use u64_stats_init() to initialize seqcounts\n\nNow that seqcounts are lockdep enabled objects, we need to explicitly\ninitialize runtime allocated seqcounts so that lockdep can track them.\n\nWithout this patch, Fengguang was seeing:\n\n  [    4.127282] INFO: trying to register non-static key.\n  [    4.128027] the code is fine but needs lockdep annotation.\n  [    4.128027] turning off the locking correctness validator.\n  [    4.128027] CPU: 0 PID: 96 Comm: kworker/u4:1 Not tainted 3.12.0-next-20131108-10601-gbad570d #2\n  [    4.128027] Hardware name: Bochs Bochs, BIOS Bochs 01/01/2011\n  [    ...     ]\n  [    4.128027] Call Trace:\n  [    4.128027]  [\u003c7908e744\u003e] ? console_unlock+0x353/0x380\n  [    4.128027]  [\u003c79dc7cf2\u003e] dump_stack+0x48/0x60\n  [    4.128027]  [\u003c7908953e\u003e] __lock_acquire.isra.26+0x7e3/0xceb\n  [    4.128027]  [\u003c7908a1c5\u003e] lock_acquire+0x71/0x9a\n  [    4.128027]  [\u003c794079aa\u003e] ? blk_throtl_bio+0x1c3/0x485\n  [    4.128027]  [\u003c7940658b\u003e] throtl_update_dispatch_stats+0x7c/0x153\n  [    4.128027]  [\u003c794079aa\u003e] ? blk_throtl_bio+0x1c3/0x485\n  [    4.128027]  [\u003c794079aa\u003e] blk_throtl_bio+0x1c3/0x485\n  ...\n\nUse u64_stats_init() for all affected data structures, which initializes\nthe seqcount.\n\nReported-and-Tested-by: Fengguang Wu \u003cfengguang.wu@intel.com\u003e\nCc: Vivek Goyal \u003cvgoyal@redhat.com\u003e\nCc: Jens Axboe \u003caxboe@kernel.dk\u003e\nSigned-off-by: Peter Zijlstra \u003cpeterz@infradead.org\u003e\n[ Folded in another fix from the mailing list as well as a fix to that fix. Tweaked commit message. ]\nSigned-off-by: John Stultz \u003cjohn.stultz@linaro.org\u003e\nSigned-off-by: Peter Zijlstra \u003cpeterz@infradead.org\u003e\nLink: http://lkml.kernel.org/r/1384314134-6895-1-git-send-email-john.stultz@linaro.org\n[ So I actually think that the two SOBs from PeterZ are the right depiction of the patch route. ]\nSigned-off-by: Ingo Molnar \u003cmingo@kernel.org\u003e\n"
    },
    {
      "commit": "d17ab4592760973d95961bb29f26969246e9dabc",
      "tree": "d0e73922aa27ca8b843324a85d392037af2ed2ad",
      "parents": [
        "e37459b8e2c7db6735e39e019e448b76e5e77647"
      ],
      "author": {
        "name": "Grygorii Strashko",
        "email": "grygorii.strashko@ti.com",
        "time": "Fri Nov 08 19:43:48 2013 -0700"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@kernel.dk",
        "time": "Fri Nov 08 19:43:48 2013 -0700"
      },
      "message": "block: cleanup removing dependency on bootmem headers\n\nCc: Yinghai Lu \u003cyinghai@kernel.org\u003e\nCc: Tejun Heo \u003ctj@kernel.org\u003e\nCc: Andrew Morton \u003cakpm@linux-foundation.org\u003e\n\nSigned-off-by: Grygorii Strashko \u003cgrygorii.strashko@ti.com\u003e\nSigned-off-by: Santosh Shilimkar \u003csantosh.shilimkar@ti.com\u003e\nSigned-off-by: Jens Axboe \u003caxboe@kernel.dk\u003e\n"
    },
    {
      "commit": "e37459b8e2c7db6735e39e019e448b76e5e77647",
      "tree": "a3f0944db87a8ae0d41e5acbbbabc1e7ef534d1b",
      "parents": [
        "c7d1ba417c7cb7297d14dd47a390ec90ce548d5c",
        "e7e245000110a7794de8f925b9edc06a9c852f80"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "axboe@kernel.dk",
        "time": "Fri Nov 08 09:08:12 2013 -0700"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@kernel.dk",
        "time": "Fri Nov 08 09:08:12 2013 -0700"
      },
      "message": "Merge branch \u0027blk-mq/core\u0027 into for-3.13/core\n\nSigned-off-by: Jens Axboe \u003caxboe@kernel.dk\u003e\n\nConflicts:\n\tblock/blk-timeout.c\n"
    },
    {
      "commit": "c7d1ba417c7cb7297d14dd47a390ec90ce548d5c",
      "tree": "72003dcbf182da96c017c453461368998ecd818d",
      "parents": [
        "8616ebb16bcef312024b9d28719f9bf5c5c3aafb"
      ],
      "author": {
        "name": "Duan Jiong",
        "email": "duanj.fnst@cn.fujitsu.com",
        "time": "Wed Nov 06 15:56:39 2013 +0800"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@kernel.dk",
        "time": "Fri Nov 08 09:05:31 2013 -0700"
      },
      "message": "block: replace IS_ERR and PTR_ERR with PTR_ERR_OR_ZERO\n\nThis patch fixes coccinelle error regarding usage of IS_ERR and\nPTR_ERR instead of PTR_ERR_OR_ZERO.\n\nSigned-off-by: Duan Jiong \u003cduanj.fnst@cn.fujitsu.com\u003e\nSigned-off-by: Jens Axboe \u003caxboe@kernel.dk\u003e\n"
    },
    {
      "commit": "8616ebb16bcef312024b9d28719f9bf5c5c3aafb",
      "tree": "1ad143b463816642bbcdd46b3df44fc43709454a",
      "parents": [
        "97597dc08f58e25bc74154b7d1c387a4c0432950"
      ],
      "author": {
        "name": "Duan Jiong",
        "email": "duanj.fnst@cn.fujitsu.com",
        "time": "Wed Nov 06 15:55:44 2013 +0800"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@kernel.dk",
        "time": "Fri Nov 08 09:05:30 2013 -0700"
      },
      "message": "block: replace IS_ERR and PTR_ERR with PTR_ERR_OR_ZERO\n\nThis patch fixes coccinelle error regarding usage of IS_ERR and\nPTR_ERR instead of PTR_ERR_OR_ZERO.\n\nSigned-off-by: Duan Jiong \u003cduanj.fnst@cn.fujitsu.com\u003e\nSigned-off-by: Jens Axboe \u003caxboe@kernel.dk\u003e\n"
    },
    {
      "commit": "97597dc08f58e25bc74154b7d1c387a4c0432950",
      "tree": "0d904cb15553db7ee1c624dfa1ae4706da779bfe",
      "parents": [
        "f8c5e94486671ffcac696886c246baa6ba89b5cf"
      ],
      "author": {
        "name": "Geert Uytterhoeven",
        "email": "geert@linux-m68k.org",
        "time": "Mon Nov 04 14:00:06 2013 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@kernel.dk",
        "time": "Fri Nov 08 09:04:46 2013 -0700"
      },
      "message": "block: Do not call sector_div() with a 64-bit divisor\n\ndo_div() (called by sector_div() if CONFIG_LBDAF\u003dy) is meant for divisions\nof 64-bit number by 32-bit numbers.  Passing 64-bit divisor types caused\nissues in the past on 32-bit platforms, cfr. commit\nea077b1b96e073eac5c3c5590529e964767fc5f7 (\"m68k: Truncate base in\ndo_div()\").\n\nAs queue_limits.max_discard_sectors and .discard_granularity are unsigned\nint, max_discard_sectors and granularity should be unsigned int.\nAs bdev_discard_alignment() returns int, alignment should be int.\nNow 2 calls to sector_div() can be replaced by 32-bit arithmetic:\n  - The 64-bit modulo operation can become a 32-bit modulo operation,\n  - The 64-bit division and multiplication can be replaced by a 32-bit\n    modulo operation and a subtraction.\n\nSigned-off-by: Geert Uytterhoeven \u003cgeert@linux-m68k.org\u003e\nSigned-off-by: Jens Axboe \u003caxboe@kernel.dk\u003e\n"
    },
    {
      "commit": "e0ce0eacb3197ad6e4ae37006c73af9411f97ecc",
      "tree": "132ece8fa1907169c50a54e12322db3d35a2def0",
      "parents": [
        "23779fbc99302dddab7f056ae47c3463169cbb64"
      ],
      "author": {
        "name": "Kent Overstreet",
        "email": "kmo@daterainc.com",
        "time": "Wed Aug 07 14:20:17 2013 -0700"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@kernel.dk",
        "time": "Fri Nov 08 09:02:14 2013 -0700"
      },
      "message": "block: Use rw_copy_check_uvector()\n\nNo need for silly open coding - and struct sg_iovec has exactly the same\nlayout as struct iovec...\n\nSigned-off-by: Kent Overstreet \u003ckmo@daterainc.com\u003e\nCc: Jens Axboe \u003caxboe@kernel.dk\u003e\nSigned-off-by: Jens Axboe \u003caxboe@kernel.dk\u003e\n"
    },
    {
      "commit": "23779fbc99302dddab7f056ae47c3463169cbb64",
      "tree": "41b90cf9974d72a6abe4778b93ddf8fba5fb8e4e",
      "parents": [
        "d82ae52e68892338068e7559a0c0657193341ce4"
      ],
      "author": {
        "name": "Alireza Haghdoost",
        "email": "alireza@cs.umn.edu",
        "time": "Wed Oct 23 17:08:16 2013 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@kernel.dk",
        "time": "Fri Nov 08 09:00:22 2013 -0700"
      },
      "message": "block: Enable sysfs nomerge control for I/O requests in the plug list\n\nThis patch enables the sysfs to control I/O request merge\nfunctionality in the plug list. While this control has been\nimplemented for the request queue, it was dismissed in the plug list.\nTherefore, block layer merges requests together (or attempt to merge)\neven if the merge capability was disable using sysfs nomerge parameter\nvalue 2.\n\nThis limitation is directly affects functionality of io_submit()\nsystem call. The system call enables user to submit a bunch of IO\nrequests from user space using struct iocb **ios input argument.\nHowever, the unconditioned merging functionality in the plug list\npotentially merges these requests together down the road. Therefore,\nthere is no way to distinguish between an application sending bunch of\nsequential IOs and an application sending one big IO. Ultimately, all\nrequests generated by the former app merge within the plug list\ntogether and looks similar to the second app.\n\nWhile the merging functionality is a desirable feature to improve the\nperformance of IO subsystem for some applications, it is not useful\nfor other application like ours at all.\n\nSigned-off-by: Alireza Haghdoost \u003calireza@cs.umn.edu\u003e\nReviewed-by: Jeff Moyer \u003cjmoyer@redhat.com\u003e\n\nCoding style modified.\n\nSigned-off-by: Jens Axboe \u003caxboe@kernel.dk\u003e\n"
    },
    {
      "commit": "d82ae52e68892338068e7559a0c0657193341ce4",
      "tree": "aab870f6e8b0dfdddade4b0f2e738b37e388c94c",
      "parents": [
        "7c8a3679e3d8e9d92d58f282161760a0e247df97"
      ],
      "author": {
        "name": "Mike Snitzer",
        "email": "snitzer@redhat.com",
        "time": "Fri Oct 18 09:44:49 2013 -0600"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@kernel.dk",
        "time": "Fri Nov 08 09:00:17 2013 -0700"
      },
      "message": "block: properly stack underlying max_segment_size to DM device\n\nWithout this patch all DM devices will default to BLK_MAX_SEGMENT_SIZE\n(65536) even if the underlying device(s) have a larger value -- this is\ndue to blk_stack_limits() using min_not_zero() when stacking the\nmax_segment_size limit.\n\n1073741824\n\nbefore patch:\n65536\n\nafter patch:\n1073741824\n\nReported-by: Lukasz Flis \u003cl.flis@cyfronet.pl\u003e\nSigned-off-by: Mike Snitzer \u003csnitzer@redhat.com\u003e\nCc: stable@vger.kernel.org # v3.3+\nSigned-off-by: Jens Axboe \u003caxboe@kernel.dk\u003e\n"
    },
    {
      "commit": "7c8a3679e3d8e9d92d58f282161760a0e247df97",
      "tree": "220802e0b80df5b3191359cf09effcfae84718a5",
      "parents": [
        "eb1c160b22655fd4ec44be732d6594fd1b1e44f4"
      ],
      "author": {
        "name": "Tomoki Sekiyama",
        "email": "tomoki.sekiyama@hds.com",
        "time": "Tue Oct 15 16:42:19 2013 -0600"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@kernel.dk",
        "time": "Fri Nov 08 09:00:13 2013 -0700"
      },
      "message": "elevator: acquire q-\u003esysfs_lock in elevator_change()\n\nAdd locking of q-\u003esysfs_lock into elevator_change() (an exported function)\nto ensure it is held to protect q-\u003eelevator from elevator_init(), even if\nelevator_change() is called from non-sysfs paths.\nsysfs path (elv_iosched_store) uses __elevator_change(), non-locking\nversion, as the lock is already taken by elv_iosched_store().\n\nSigned-off-by: Tomoki Sekiyama \u003ctomoki.sekiyama@hds.com\u003e\nSigned-off-by: Jens Axboe \u003caxboe@kernel.dk\u003e\n"
    },
    {
      "commit": "eb1c160b22655fd4ec44be732d6594fd1b1e44f4",
      "tree": "fcd0b1f6acfea2bf24e498fa4efded802b2336f6",
      "parents": [
        "170d800af83f3ab2b5ced0e370a861e023dee22a"
      ],
      "author": {
        "name": "Tomoki Sekiyama",
        "email": "tomoki.sekiyama@hds.com",
        "time": "Tue Oct 15 16:42:16 2013 -0600"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@kernel.dk",
        "time": "Fri Nov 08 09:00:08 2013 -0700"
      },
      "message": "elevator: Fix a race in elevator switching and md device initialization\n\nThe soft lockup below happens at the boot time of the system using dm\nmultipath and the udev rules to switch scheduler.\n\n[  356.127001] BUG: soft lockup - CPU#3 stuck for 22s! [sh:483]\n[  356.127001] RIP: 0010:[\u003cffffffff81072a7d\u003e]  [\u003cffffffff81072a7d\u003e] lock_timer_base.isra.35+0x1d/0x50\n...\n[  356.127001] Call Trace:\n[  356.127001]  [\u003cffffffff81073810\u003e] try_to_del_timer_sync+0x20/0x70\n[  356.127001]  [\u003cffffffff8118b08a\u003e] ? kmem_cache_alloc_node_trace+0x20a/0x230\n[  356.127001]  [\u003cffffffff810738b2\u003e] del_timer_sync+0x52/0x60\n[  356.127001]  [\u003cffffffff812ece22\u003e] cfq_exit_queue+0x32/0xf0\n[  356.127001]  [\u003cffffffff812c98df\u003e] elevator_exit+0x2f/0x50\n[  356.127001]  [\u003cffffffff812c9f21\u003e] elevator_change+0xf1/0x1c0\n[  356.127001]  [\u003cffffffff812caa50\u003e] elv_iosched_store+0x20/0x50\n[  356.127001]  [\u003cffffffff812d1d09\u003e] queue_attr_store+0x59/0xb0\n[  356.127001]  [\u003cffffffff812143f6\u003e] sysfs_write_file+0xc6/0x140\n[  356.127001]  [\u003cffffffff811a326d\u003e] vfs_write+0xbd/0x1e0\n[  356.127001]  [\u003cffffffff811a3ca9\u003e] SyS_write+0x49/0xa0\n[  356.127001]  [\u003cffffffff8164e899\u003e] system_call_fastpath+0x16/0x1b\n\nThis is caused by a race between md device initialization by multipathd and\nshell script to switch the scheduler using sysfs.\n\n - multipathd:\n   SyS_ioctl -\u003e do_vfs_ioctl -\u003e dm_ctl_ioctl -\u003e ctl_ioctl -\u003e table_load\n   -\u003e dm_setup_md_queue -\u003e blk_init_allocated_queue -\u003e elevator_init\n    q-\u003eelevator \u003d elevator_alloc(q, e); // not yet initialized\n\n - sh -c \u0027echo deadline \u003e /sys/$DEVPATH/queue/scheduler\u0027:\n   elevator_switch (in the call trace above)\n    struct elevator_queue *old \u003d q-\u003eelevator;\n    q-\u003eelevator \u003d elevator_alloc(q, new_e);\n    elevator_exit(old);                 // lockup! (*)\n\n - multipathd: (cont.)\n    err \u003d e-\u003eops.elevator_init_fn(q);   // init fails; q-\u003eelevator is modified\n\n(*) When del_timer_sync() is called, lock_timer_base() will loop infinitely\nwhile timer-\u003ebase \u003d\u003d NULL. In this case, as timer will never initialized,\nit results in lockup.\n\nThis patch introduces acquisition of q-\u003esysfs_lock around elevator_init()\ninto blk_init_allocated_queue(), to provide mutual exclusion between\ninitialization of the q-\u003escheduler and switching of the scheduler.\n\nThis should fix this bugzilla:\nhttps://bugzilla.redhat.com/show_bug.cgi?id\u003d902012\n\nSigned-off-by: Tomoki Sekiyama \u003ctomoki.sekiyama@hds.com\u003e\nSigned-off-by: Jens Axboe \u003caxboe@kernel.dk\u003e\n"
    },
    {
      "commit": "170d800af83f3ab2b5ced0e370a861e023dee22a",
      "tree": "bcb9225dbb73e641f74ef20ec1e7aff03667e18b",
      "parents": [
        "8077c0d983ab276ec5f2700df56a64d671781905"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "cl@linux.com",
        "time": "Tue Oct 15 12:22:29 2013 -0600"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@kernel.dk",
        "time": "Fri Nov 08 08:59:58 2013 -0700"
      },
      "message": "block: Replace __get_cpu_var uses\n\n__get_cpu_var() is used for multiple purposes in the kernel source. One of\nthem is address calculation via the form \u0026__get_cpu_var(x).  This calculates\nthe address for the instance of the percpu variable of the current processor\nbased on an offset.\n\nOther use cases are for storing and retrieving data from the current\nprocessors percpu area.  __get_cpu_var() can be used as an lvalue when\nwriting data or on the right side of an assignment.\n\n__get_cpu_var() is defined as :\n\n#define __get_cpu_var(var) (*this_cpu_ptr(\u0026(var)))\n\n__get_cpu_var() always only does an address determination. However, store\nand retrieve operations could use a segment prefix (or global register on\nother platforms) to avoid the address calculation.\n\nthis_cpu_write() and this_cpu_read() can directly take an offset into a\npercpu area and use optimized assembly code to read and write per cpu\nvariables.\n\nThis patch converts __get_cpu_var into either an explicit address\ncalculation using this_cpu_ptr() or into a use of this_cpu operations that\nuse the offset.  Thereby address calculations are avoided and less registers\nare used when code is generated.\n\nAt the end of the patch set all uses of __get_cpu_var have been removed so\nthe macro is removed too.\n\nThe patch set includes passes over all arches as well. Once these operations\nare used throughout then specialized macros can be defined in non -x86\narches as well in order to optimize per cpu access by f.e.  using a global\nregister that may be set to the per cpu base.\n\nTransformations done to __get_cpu_var()\n\n1. Determine the address of the percpu instance of the current processor.\n\n\tDEFINE_PER_CPU(int, y);\n\tint *x \u003d \u0026__get_cpu_var(y);\n\n    Converts to\n\n\tint *x \u003d this_cpu_ptr(\u0026y);\n\n2. Same as #1 but this time an array structure is involved.\n\n\tDEFINE_PER_CPU(int, y[20]);\n\tint *x \u003d __get_cpu_var(y);\n\n    Converts to\n\n\tint *x \u003d this_cpu_ptr(y);\n\n3. Retrieve the content of the current processors instance of a per cpu\nvariable.\n\n\tDEFINE_PER_CPU(int, y);\n\tint x \u003d __get_cpu_var(y)\n\n   Converts to\n\n\tint x \u003d __this_cpu_read(y);\n\n4. Retrieve the content of a percpu struct\n\n\tDEFINE_PER_CPU(struct mystruct, y);\n\tstruct mystruct x \u003d __get_cpu_var(y);\n\n   Converts to\n\n\tmemcpy(\u0026x, this_cpu_ptr(\u0026y), sizeof(x));\n\n5. Assignment to a per cpu variable\n\n\tDEFINE_PER_CPU(int, y)\n\t__get_cpu_var(y) \u003d x;\n\n   Converts to\n\n\tthis_cpu_write(y, x);\n\n6. Increment/Decrement etc of a per cpu variable\n\n\tDEFINE_PER_CPU(int, y);\n\t__get_cpu_var(y)++\n\n   Converts to\n\n\tthis_cpu_inc(y)\n\nSigned-off-by: Christoph Lameter \u003ccl@linux.com\u003e\nSigned-off-by: Jens Axboe \u003caxboe@kernel.dk\u003e\n"
    },
    {
      "commit": "fff4996b7db7955414ac74386efa5e07fd766b50",
      "tree": "be975473217d6289fac5d691d140e1bf1b366ea0",
      "parents": [
        "4912aa6c11e6a5d910264deedbec2075c6f1bb73"
      ],
      "author": {
        "name": "Mikulas Patocka",
        "email": "mpatocka@redhat.com",
        "time": "Mon Oct 14 12:11:36 2013 -0400"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@kernel.dk",
        "time": "Fri Nov 08 08:59:17 2013 -0700"
      },
      "message": "blk-core: Fix memory corruption if blkcg_init_queue fails\n\nIf blkcg_init_queue fails, blk_alloc_queue_node doesn\u0027t call bdi_destroy\nto clean up structures allocated by the backing dev.\n\n------------[ cut here ]------------\nWARNING: at lib/debugobjects.c:260 debug_print_object+0x85/0xa0()\nODEBUG: free active (active state 0) object type: percpu_counter hint:           (null)\nModules linked in: dm_loop dm_mod ip6table_filter ip6_tables uvesafb cfbcopyarea cfbimgblt cfbfillrect fbcon font bitblit fbcon_rotate fbcon_cw fbcon_ud fbcon_ccw softcursor fb fbdev ipt_MASQUERADE iptable_nat nf_nat_ipv4 msr nf_conntrack_ipv4 nf_defrag_ipv4 xt_state ipt_REJECT xt_tcpudp iptable_filter ip_tables x_tables bridge stp llc tun ipv6 cpufreq_userspace cpufreq_stats cpufreq_powersave cpufreq_ondemand cpufreq_conservative spadfs fuse hid_generic usbhid hid raid0 md_mod dmi_sysfs nf_nat_ftp nf_nat nf_conntrack_ftp nf_conntrack lm85 hwmon_vid snd_usb_audio snd_pcm_oss snd_mixer_oss snd_pcm snd_timer snd_page_alloc snd_hwdep snd_usbmidi_lib snd_rawmidi snd soundcore acpi_cpufreq freq_table mperf sata_svw serverworks kvm_amd ide_core ehci_pci ohci_hcd libata ehci_hcd kvm usbcore tg3 usb_common libphy k10temp pcspkr ptp i2c_piix4 i2c_core evdev microcode hwmon rtc_cmos pps_core e100 skge floppy mii processor button unix\nCPU: 0 PID: 2739 Comm: lvchange Tainted: G        W\n3.10.15-devel #14\nHardware name: empty empty/S3992-E, BIOS \u0027V1.06   \u0027 06/09/2009\n 0000000000000009 ffff88023c3c1ae8 ffffffff813c8fd4 ffff88023c3c1b20\n ffffffff810399eb ffff88043d35cd58 ffffffff81651940 ffff88023c3c1bf8\n ffffffff82479d90 0000000000000005 ffff88023c3c1b80 ffffffff81039a67\nCall Trace:\n [\u003cffffffff813c8fd4\u003e] dump_stack+0x19/0x1b\n [\u003cffffffff810399eb\u003e] warn_slowpath_common+0x6b/0xa0\n [\u003cffffffff81039a67\u003e] warn_slowpath_fmt+0x47/0x50\n [\u003cffffffff8122aaaf\u003e] ? debug_check_no_obj_freed+0xcf/0x250\n [\u003cffffffff81229a15\u003e] debug_print_object+0x85/0xa0\n [\u003cffffffff8122abe3\u003e] debug_check_no_obj_freed+0x203/0x250\n [\u003cffffffff8113c4ac\u003e] kmem_cache_free+0x20c/0x3a0\n [\u003cffffffff811f6709\u003e] blk_alloc_queue_node+0x2a9/0x2c0\n [\u003cffffffff811f672e\u003e] blk_alloc_queue+0xe/0x10\n [\u003cffffffffa04c0093\u003e] dm_create+0x1a3/0x530 [dm_mod]\n [\u003cffffffffa04c6bb0\u003e] ? list_version_get_info+0xe0/0xe0 [dm_mod]\n [\u003cffffffffa04c6c07\u003e] dev_create+0x57/0x2b0 [dm_mod]\n [\u003cffffffffa04c6bb0\u003e] ? list_version_get_info+0xe0/0xe0 [dm_mod]\n [\u003cffffffffa04c6bb0\u003e] ? list_version_get_info+0xe0/0xe0 [dm_mod]\n [\u003cffffffffa04c6528\u003e] ctl_ioctl+0x268/0x500 [dm_mod]\n [\u003cffffffff81097662\u003e] ? get_lock_stats+0x22/0x70\n [\u003cffffffffa04c67ce\u003e] dm_ctl_ioctl+0xe/0x20 [dm_mod]\n [\u003cffffffff81161aad\u003e] do_vfs_ioctl+0x2ed/0x520\n [\u003cffffffff8116cfc7\u003e] ? fget_light+0x377/0x4e0\n [\u003cffffffff81161d2b\u003e] SyS_ioctl+0x4b/0x90\n [\u003cffffffff813cff16\u003e] system_call_fastpath+0x1a/0x1f\n---[ end trace 4b5ff0d55673d986 ]---\n------------[ cut here ]------------\n\nThis fix should be backported to stable kernels starting with 2.6.37. Note\nthat in the kernels prior to 3.5 the affected code is different, but the\nbug is still there - bdi_init is called and bdi_destroy isn\u0027t.\n\nSigned-off-by: Mikulas Patocka \u003cmpatocka@redhat.com\u003e\nAcked-by: Tejun Heo \u003ctj@kernel.org\u003e\nCc: stable@kernel.org\t# 2.6.37+\nSigned-off-by: Jens Axboe \u003caxboe@kernel.dk\u003e\n"
    },
    {
      "commit": "4912aa6c11e6a5d910264deedbec2075c6f1bb73",
      "tree": "8f0e3088828f773403f6b83c6f27d95d18e87640",
      "parents": [
        "a404d5576bbe586a1097a8bc2f32c5f22651b0aa"
      ],
      "author": {
        "name": "Jeff Moyer",
        "email": "jmoyer@redhat.com",
        "time": "Tue Oct 08 14:36:41 2013 -0400"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@kernel.dk",
        "time": "Fri Nov 08 08:59:04 2013 -0700"
      },
      "message": "block: fix race between request completion and timeout handling\n\ncrocode i2c_i801 i2c_core iTCO_wdt iTCO_vendor_support shpchp ioatdma dca be2net sg ses enclosure ext4 mbcache jbd2 sd_mod crc_t10dif ahci megaraid_sas(U) dm_mirror dm_region_hash dm_log dm_mod [last unloaded: scsi_wait_scan]\n\nPid: 491, comm: scsi_eh_0 Tainted: G        W  ----------------   2.6.32-220.13.1.el6.x86_64 #1 IBM  -[8722PAX]-/00D1461\nRIP: 0010:[\u003cffffffff8124e424\u003e]  [\u003cffffffff8124e424\u003e] blk_requeue_request+0x94/0xa0\nRSP: 0018:ffff881057eefd60  EFLAGS: 00010012\nRAX: ffff881d99e3e8a8 RBX: ffff881d99e3e780 RCX: ffff881d99e3e8a8\nRDX: ffff881d99e3e8a8 RSI: ffff881d99e3e780 RDI: ffff881d99e3e780\nRBP: ffff881057eefd80 R08: ffff881057eefe90 R09: 0000000000000000\nR10: 0000000000000000 R11: 0000000000000000 R12: ffff881057f92338\nR13: 0000000000000000 R14: ffff881057f92338 R15: ffff883058188000\nFS:  0000000000000000(0000) GS:ffff880040200000(0000) knlGS:0000000000000000\nCS:  0010 DS: 0018 ES: 0018 CR0: 000000008005003b\nCR2: 00000000006d3ec0 CR3: 000000302cd7d000 CR4: 00000000000406b0\nDR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000\nDR3: 0000000000000000 DR6: 00000000ffff0ff0 DR7: 0000000000000400\nProcess scsi_eh_0 (pid: 491, threadinfo ffff881057eee000, task ffff881057e29540)\nStack:\n 0000000000001057 0000000000000286 ffff8810275efdc0 ffff881057f16000\n\u003c0\u003e ffff881057eefdd0 ffffffff81362323 ffff881057eefe20 ffffffff8135f393\n\u003c0\u003e ffff881057e29af8 ffff8810275efdc0 ffff881057eefe78 ffff881057eefe90\nCall Trace:\n [\u003cffffffff81362323\u003e] __scsi_queue_insert+0xa3/0x150\n [\u003cffffffff8135f393\u003e] ? scsi_eh_ready_devs+0x5e3/0x850\n [\u003cffffffff81362a23\u003e] scsi_queue_insert+0x13/0x20\n [\u003cffffffff8135e4d4\u003e] scsi_eh_flush_done_q+0x104/0x160\n [\u003cffffffff8135fb6b\u003e] scsi_error_handler+0x35b/0x660\n [\u003cffffffff8135f810\u003e] ? scsi_error_handler+0x0/0x660\n [\u003cffffffff810908c6\u003e] kthread+0x96/0xa0\n [\u003cffffffff8100c14a\u003e] child_rip+0xa/0x20\n [\u003cffffffff81090830\u003e] ? kthread+0x0/0xa0\n [\u003cffffffff8100c140\u003e] ? child_rip+0x0/0x20\nCode: 00 00 eb d1 4c 8b 2d 3c 8f 97 00 4d 85 ed 74 bf 49 8b 45 00 49 83 c5 08 48 89 de 4c 89 e7 ff d0 49 8b 45 00 48 85 c0 75 eb eb a4 \u003c0f\u003e 0b eb fe 0f 1f 84 00 00 00 00 00 55 48 89 e5 0f 1f 44 00 00\nRIP  [\u003cffffffff8124e424\u003e] blk_requeue_request+0x94/0xa0\n RSP \u003cffff881057eefd60\u003e\n\nThe RIP is this line:\n        BUG_ON(blk_queued_rq(rq));\n\nAfter digging through the code, I think there may be a race between the\nrequest completion and the timer handler running.\n\nA timer is started for each request put on the device\u0027s queue (see\nblk_start_request-\u003eblk_add_timer).  If the request does not complete\nbefore the timer expires, the timer handler (blk_rq_timed_out_timer)\nwill mark the request complete atomically:\n\nstatic inline int blk_mark_rq_complete(struct request *rq)\n{\n        return test_and_set_bit(REQ_ATOM_COMPLETE, \u0026rq-\u003eatomic_flags);\n}\n\nand then call blk_rq_timed_out.  The latter function will call\nscsi_times_out, which will return one of BLK_EH_HANDLED,\nBLK_EH_RESET_TIMER or BLK_EH_NOT_HANDLED.  If BLK_EH_RESET_TIMER is\nreturned, blk_clear_rq_complete is called, and blk_add_timer is again\ncalled to simply wait longer for the request to complete.\n\nNow, if the request happens to complete while this is going on, what\nhappens?  Given that we know the completion handler will bail if it\nfinds the REQ_ATOM_COMPLETE bit set, we need to focus on the completion\nhandler running after that bit is cleared.  So, from the above\nparagraph, after the call to blk_clear_rq_complete.  If the completion\nsets REQ_ATOM_COMPLETE before the BUG_ON in blk_add_timer, we go boom\nthere (I haven\u0027t seen this in the cores).  Next, if we get the\ncompletion before the call to list_add_tail, then the timer will\neventually fire for an old req, which may either be freed or reallocated\n(there is evidence that this might be the case).  Finally, if the\ncompletion comes in *after* the addition to the timeout list, I think\nit\u0027s harmless.  The request will be removed from the timeout list,\nreq_atom_complete will be set, and all will be well.\n\nThis will only actually explain the coredumps *IF* the request\nstructure was freed, reallocated *and* queued before the error handler\nthread had a chance to process it.  That is possible, but it may make\nsense to keep digging for another race.  I think that if this is what\nwas happening, we would see other instances of this problem showing up\nas null pointer or garbage pointer dereferences, for example when the\nrequest structure was not re-used.  It looks like we actually do run\ninto that situation in other reports.\n\nThis patch moves the BUG_ON(test_bit(REQ_ATOM_COMPLETE,\n\u0026req-\u003eatomic_flags)); from blk_add_timer to the only caller that could\ntrip over it (blk_start_request).  It then inverts the calls to\nblk_clear_rq_complete and blk_add_timer in blk_rq_timed_out to address\nthe race.  I\u0027ve boot tested this patch, but nothing more.\n\nSigned-off-by: Jeff Moyer \u003cjmoyer@redhat.com\u003e\nAcked-by: Hannes Reinecke \u003chare@suse.de\u003e\nCc: stable@kernel.org\nSigned-off-by: Jens Axboe \u003caxboe@kernel.dk\u003e\n"
    },
    {
      "commit": "9f7e45d83ef09a481cbc4172849bd1fcf88a39ed",
      "tree": "a08e2c3f5dacfe2dfc53d416a4ecb001378a38e5",
      "parents": [
        "4dcfa60071b3d23f0181f27d8519f12e37cefbb9"
      ],
      "author": {
        "name": "Santosh Shilimkar",
        "email": "santosh.shilimkar@ti.com",
        "time": "Mon Jul 29 14:17:54 2013 +0100"
      },
      "committer": {
        "name": "Russell King",
        "email": "rmk+kernel@arm.linux.org.uk",
        "time": "Thu Oct 31 14:49:22 2013 +0000"
      },
      "message": "ARM: 7794/1: block: Rename parameter dma_mask to max_addr for blk_queue_bounce_limit()\n\nThe blk_queue_bounce_limit() API parameter \u0027dma_mask\u0027 is actually the\nmaximum address the device can handle rather than a dma_mask. Rename\nit accordingly to avoid it being interpreted as dma_mask.\n\nNo functional change.\n\nThe idea is to fix the bad assumptions about dma_mask wherever it could\nbe miss-interpreted.\n\nCc: Jens Axboe \u003caxboe@kernel.dk\u003e\nSigned-off-by: Santosh Shilimkar \u003csantosh.shilimkar@ti.com\u003e\nSigned-off-by: Russell King \u003crmk+kernel@arm.linux.org.uk\u003e\n"
    },
    {
      "commit": "e7e245000110a7794de8f925b9edc06a9c852f80",
      "tree": "c774b4b9e7d7cdb59f3b4a237fd12c4e5eb8bc60",
      "parents": [
        "92f399c72af2d8cbb9d4f60e11d0d67ca738147f"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "axboe@kernel.dk",
        "time": "Tue Oct 29 12:11:47 2013 -0600"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@kernel.dk",
        "time": "Tue Oct 29 12:11:47 2013 -0600"
      },
      "message": "blk-mq: don\u0027t disallow request merges for req-\u003especial being set\n\nFor blk-mq, if a driver has requested per-request payload data\nto carry command structures, they are stuffed into req-\u003especial.\nFor an old style request based driver, req-\u003especial is used\nfor the same purpose but indicates that a per-driver request\nstructure has been prepared for the request already. So for the\nold style driver, we do not merge such requests.\n\nAs most/all blk-mq drivers will use the payload feature, and\nsince we have no problem merging on these, make this check\ndependent on whether it\u0027s a blk-mq enabled driver or not.\n\nReported-by: Shaohua Li \u003cshli@fusionio.com\u003e\nSigned-off-by: Jens Axboe \u003caxboe@kernel.dk\u003e\n"
    },
    {
      "commit": "92f399c72af2d8cbb9d4f60e11d0d67ca738147f",
      "tree": "808309a8706de6bda501441b78127f6b1233ce0a",
      "parents": [
        "3228f48be2d19b2dd90db96ec16a40187a2946f3"
      ],
      "author": {
        "name": "Shaohua Li",
        "email": "shli@fusionio.com",
        "time": "Tue Oct 29 12:01:03 2013 -0600"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@kernel.dk",
        "time": "Tue Oct 29 12:01:03 2013 -0600"
      },
      "message": "blk-mq: mq plug list breakage\n\nWe switched to plug mq_list for mq, but some code are still using old list.\n\nSigned-off-by: Shaohua Li \u003cshli@fusionio.com\u003e\nSigned-off-by: Jens Axboe \u003caxboe@kernel.dk\u003e\n"
    },
    {
      "commit": "3228f48be2d19b2dd90db96ec16a40187a2946f3",
      "tree": "2f148dd8e82b287fc7b682cabc5614e3046d8949",
      "parents": [
        "280d45f6c35d8d7a0fe20c36caf426e3ac139cf9"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@lst.de",
        "time": "Mon Oct 28 13:33:58 2013 -0600"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@kernel.dk",
        "time": "Mon Oct 28 13:33:58 2013 -0600"
      },
      "message": "blk-mq: fix for flush deadlock\n\nThe flush state machine takes in a struct request, which then is\nsubmitted multiple times to the underling driver.  The old block code\nrequeses the same request for each of those, so it does not have an\nissue with tapping into the request pool.  The new one on the other hand\nallocates a new request for each of the actualy steps of the flush\nsequence. If have already allocated all of the tags for IO, we will\nfail allocating the flush request.\n\nSet aside a reserved request just for flushes.\n\nSigned-off-by: Jens Axboe \u003caxboe@kernel.dk\u003e\n"
    },
    {
      "commit": "280d45f6c35d8d7a0fe20c36caf426e3ac139cf9",
      "tree": "b3b059cfc6c43ce301fd7fc309f65ea888a9311a",
      "parents": [
        "f2298c0403b0dfcaef637eba0c02c4a06d7a25ab"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@lst.de",
        "time": "Fri Oct 25 14:45:58 2013 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@kernel.dk",
        "time": "Fri Oct 25 14:45:58 2013 +0100"
      },
      "message": "blk-mq: add blk_mq_stop_hw_queues\n\nAdd a helper to iterate over all hw queues and stop them.  This is useful\nfor driver that implement PM suspend functionality.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\n\nModified to just call blk_mq_stop_hw_queue() by Jens.\n\nSigned-off-by: Jens Axboe \u003caxboe@kernel.dk\u003e\n"
    },
    {
      "commit": "320ae51feed5c2f13664aa05a76bec198967e04d",
      "tree": "ad37ccbcc5ddb1c9c19e48965bf8fec1b05217dc",
      "parents": [
        "1dddc01af0d42b21058e0cb9c1ca9e8d5204d9b0"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "axboe@kernel.dk",
        "time": "Thu Oct 24 09:20:05 2013 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@kernel.dk",
        "time": "Fri Oct 25 11:56:00 2013 +0100"
      },
      "message": "blk-mq: new multi-queue block IO queueing mechanism\n\nLinux currently has two models for block devices:\n\n- The classic request_fn based approach, where drivers use struct\n  request units for IO. The block layer provides various helper\n  functionalities to let drivers share code, things like tag\n  management, timeout handling, queueing, etc.\n\n- The \"stacked\" approach, where a driver squeezes in between the\n  block layer and IO submitter. Since this bypasses the IO stack,\n  driver generally have to manage everything themselves.\n\nWith drivers being written for new high IOPS devices, the classic\nrequest_fn based driver doesn\u0027t work well enough. The design dates\nback to when both SMP and high IOPS was rare. It has problems with\nscaling to bigger machines, and runs into scaling issues even on\nsmaller machines when you have IOPS in the hundreds of thousands\nper device.\n\nThe stacked approach is then most often selected as the model\nfor the driver. But this means that everybody has to re-invent\neverything, and along with that we get all the problems again\nthat the shared approach solved.\n\nThis commit introduces blk-mq, block multi queue support. The\ndesign is centered around per-cpu queues for queueing IO, which\nthen funnel down into x number of hardware submission queues.\nWe might have a 1:1 mapping between the two, or it might be\nan N:M mapping. That all depends on what the hardware supports.\n\nblk-mq provides various helper functions, which include:\n\n- Scalable support for request tagging. Most devices need to\n  be able to uniquely identify a request both in the driver and\n  to the hardware. The tagging uses per-cpu caches for freed\n  tags, to enable cache hot reuse.\n\n- Timeout handling without tracking request on a per-device\n  basis. Basically the driver should be able to get a notification,\n  if a request happens to fail.\n\n- Optional support for non 1:1 mappings between issue and\n  submission queues. blk-mq can redirect IO completions to the\n  desired location.\n\n- Support for per-request payloads. Drivers almost always need\n  to associate a request structure with some driver private\n  command structure. Drivers can tell blk-mq this at init time,\n  and then any request handed to the driver will have the\n  required size of memory associated with it.\n\n- Support for merging of IO, and plugging. The stacked model\n  gets neither of these. Even for high IOPS devices, merging\n  sequential IO reduces per-command overhead and thus\n  increases bandwidth.\n\nFor now, this is provided as a potential 3rd queueing model, with\nthe hope being that, as it matures, it can replace both the classic\nand stacked model. That would get us back to having just 1 real\nmodel for block devices, leaving the stacked approach to dm/md\ndevices (as it was originally intended).\n\nContributions in this patch from the following people:\n\nShaohua Li \u003cshli@fusionio.com\u003e\nAlexander Gordeev \u003cagordeev@redhat.com\u003e\nChristoph Hellwig \u003chch@infradead.org\u003e\nMike Christie \u003cmichaelc@cs.wisc.edu\u003e\nMatias Bjorling \u003cm@bjorling.me\u003e\nJeff Moyer \u003cjmoyer@redhat.com\u003e\n\nAcked-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Jens Axboe \u003caxboe@kernel.dk\u003e\n"
    },
    {
      "commit": "71fe07d040626de7b72244bf6de889c2e0f5aea3",
      "tree": "6c4d6bed7e8510fb2c9a105dba62d2342e6fc897",
      "parents": [
        "5953316dbf90067ebdeca626c34488bc166b73a8"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@infradead.org",
        "time": "Fri Oct 04 06:49:11 2013 -0700"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@kernel.dk",
        "time": "Fri Oct 25 11:55:59 2013 +0100"
      },
      "message": "block: remove request ref_count\n\nThis reference count has been around since before git history, but the only\nplace where it\u0027s used is in blk_execute_rq, and ther it is entirely useless\nas it is incremented before submitting the request and decremented in the\nend_io handler before waking up the submitter thread.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Jens Axboe \u003caxboe@kernel.dk\u003e\n"
    },
    {
      "commit": "5953316dbf90067ebdeca626c34488bc166b73a8",
      "tree": "730871975e089bf4a53e8625ac8a5198fd678c8d",
      "parents": [
        "c84a83e2aaab02a5ca64a982aa55342784934479"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "axboe@kernel.dk",
        "time": "Thu May 23 12:25:08 2013 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@kernel.dk",
        "time": "Fri Oct 25 11:55:59 2013 +0100"
      },
      "message": "block: make rq-\u003ecmd_flags be 64-bit\n\nWe have officially run out of flags in a 32-bit space. Extend it\nto 64-bit even on 32-bit archs.\n\nReviewed-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Jens Axboe \u003caxboe@kernel.dk\u003e\n"
    },
    {
      "commit": "87fc0ad2ad8a15de653f4cef7760fa35e689077f",
      "tree": "3c1428036452d8b7a18b9f2cac8f1caefa23cf47",
      "parents": [
        "ef5a22be2c525293b777ccd879a8017c41c7ed5a"
      ],
      "author": {
        "name": "Doug Anderson",
        "email": "dianders@chromium.org",
        "time": "Wed Oct 16 13:46:57 2013 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Oct 16 21:35:53 2013 -0700"
      },
      "message": "block/partitions/efi.c: treat size mismatch as a warning, not an error\n\nIn commit 27a7c642174e (\"partitions/efi: account for pmbr size in lba\")\nwe started treating bad sizes in lba field of the partition that has the\n0xEE (GPT protective) as errors.\n\nHowever, we may run into these \"bad sizes\" in the real world if someone\nuses dd to copy an image from a smaller disk to a bigger disk.  Since\nthis case used to work (even without using force_gpt), keep it working\nand treat the size mismatch as a warning instead of an error.\n\nReported-by: Josh Triplett \u003cjosh@joshtriplett.org\u003e\nReported-by: Sean Paul \u003cseanpaul@chromium.org\u003e\nSigned-off-by: Doug Anderson \u003cdianders@chromium.org\u003e\nReviewed-by: Josh Triplett \u003cjosh@joshtriplett.org\u003e\nAcked-by: Davidlohr Bueso \u003cdavidlohr@hp.com\u003e\nTested-by: Artem Bityutskiy \u003cdedekind1@gmail.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "080506ad0aa9c9fbc7879cdd290d55624da08c60",
      "tree": "8a696742dcaaee55f1a9524b87be7dfa960eb3d6",
      "parents": [
        "eadb41ae82f802105c0601aa8a0a0e7595826497"
      ],
      "author": {
        "name": "Paul Gortmaker",
        "email": "paul.gortmaker@windriver.com",
        "time": "Mon Sep 30 13:45:19 2013 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Sep 30 14:31:02 2013 -0700"
      },
      "message": "block: change config option name for cmdline partition parsing\n\nRecently commit bab55417b10c (\"block: support embedded device command\nline partition\") introduced CONFIG_CMDLINE_PARSER.  However, that name\nis too generic and sounds like it enables/disables generic kernel boot\narg processing, when it really is block specific.\n\nBefore this option becomes a part of a full/final release, add the BLK_\nprefix to it so that it is clear in absence of any other context that it\nis block specific.\n\nIn addition, fix up the following less critical items:\n - help text was not really at all helpful.\n - index file for Documentation was not updated\n - add the new arg to Documentation/kernel-parameters.txt\n - clarify wording in source comments\n\nSigned-off-by: Paul Gortmaker \u003cpaul.gortmaker@windriver.com\u003e\nCc: Jens Axboe \u003caxboe@kernel.dk\u003e\nCc: Cai Zhiyong \u003ccaizhiyong@huawei.com\u003e\nCc: Wei Yongjun \u003cyongjun_wei@trendmicro.com.cn\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "68cf8d0c720cdb76dc912c983d8dae9de6d6e5cf",
      "tree": "41779dfce5cae3dc495f27f76ed8e66dd046ac4c",
      "parents": [
        "0fbf2cc983ca15208545010863c6536d36a25f3a",
        "f3cff25f05f2ac29b2ee355e611b0657482f6f1d"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Sep 22 15:00:11 2013 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Sep 22 15:00:11 2013 -0700"
      },
      "message": "Merge branch \u0027for-3.12/core\u0027 of git://git.kernel.dk/linux-block\n\nPull block IO fixes from Jens Axboe:\n \"After merge window, no new stuff this time only a collection of neatly\n  confined and simple fixes\"\n\n* \u0027for-3.12/core\u0027 of git://git.kernel.dk/linux-block:\n  cfq: explicitly use 64bit divide operation for 64bit arguments\n  block: Add nr_bios to block_rq_remap tracepoint\n  If the queue is dying then we only call the rq-\u003eend_io callout. This leaves bios setup on the request, because the caller assumes when the blk_execute_rq_nowait/blk_execute_rq call has completed that the rq-\u003ebios have been cleaned up.\n  bio-integrity: Fix use of bs-\u003ebio_integrity_pool after free\n  blkcg: relocate root_blkg setting and clearing\n  block: Convert kmalloc_node(...GFP_ZERO...) to kzalloc_node(...)\n  block: trace all devices plug operation\n"
    },
    {
      "commit": "f3cff25f05f2ac29b2ee355e611b0657482f6f1d",
      "tree": "8a06c59f0970a8bd4be2939792fc88ffddc39e62",
      "parents": [
        "75afb352991ff1cd3cf5955bfe611de6d83a0c87"
      ],
      "author": {
        "name": "Anatol Pomozov",
        "email": "anatol.pomozov@gmail.com",
        "time": "Sun Sep 22 12:43:47 2013 -0600"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@kernel.dk",
        "time": "Sun Sep 22 12:43:47 2013 -0600"
      },
      "message": "cfq: explicitly use 64bit divide operation for 64bit arguments\n\n\u0027samples\u0027 is 64bit operant, but do_div() second parameter is 32.\ndo_div silently truncates high 32 bits and calculated result\nis invalid.\n\nIn case if low 32bit of \u0027samples\u0027 are zeros then do_div() produces\nkernel crash.\n\nSigned-off-by: Anatol Pomozov \u003canatol.pomozov@gmail.com\u003e\nAcked-by: Tejun Heo \u003ctj@kernel.org\u003e\nSigned-off-by: Jens Axboe \u003caxboe@kernel.dk\u003e\n"
    },
    {
      "commit": "7652113c2f508b1c8176640dcd034730fe79bc48",
      "tree": "826a32d8341f9747f997db6715f6cb4a802d618a",
      "parents": [
        "adbe6991efd36104ac9eaf751993d35eaa7f493a"
      ],
      "author": {
        "name": "Mike Christie",
        "email": "michaelc@cs.wisc.edu",
        "time": "Wed Sep 18 08:33:55 2013 -0600"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@kernel.dk",
        "time": "Wed Sep 18 08:33:55 2013 -0600"
      },
      "message": "If the queue is dying then we only call the rq-\u003eend_io callout.\nThis leaves bios setup on the request, because the caller assumes when\nthe blk_execute_rq_nowait/blk_execute_rq call has completed that\nthe rq-\u003ebios have been cleaned up.\n\nThis patch has blk_execute_rq_nowait use __blk_end_request_all\nto free bios and also call rq-\u003eend_io.\n\nSigned-off-by: Mike Christie \u003cmichaelc@cs.wisc.edu\u003e\nSigned-off-by: Jens Axboe \u003caxboe@kernel.dk\u003e\n"
    },
    {
      "commit": "6b02fa59a7cf34c548eedee657b07ea6c54d3894",
      "tree": "01279f3f74cbf1e1a2feadceb9ee37d4023fe82e",
      "parents": [
        "3711d86a2de17e967b576af8b8a1e9351a7d1466"
      ],
      "author": {
        "name": "Davidlohr Bueso",
        "email": "davidlohr@hp.com",
        "time": "Fri Sep 13 15:02:22 2013 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Sep 15 07:10:16 2013 -0400"
      },
      "message": "partitions/efi: loosen check fot pmbr size in lba\n\nMatt found that commit 27a7c642174e (\"partitions/efi: account for pmbr\nsize in lba\") caused his GPT formatted eMMC device not to boot.  The\nreason is that this commit enforced Linux to always check the lesser of\nthe whole disk or 2Tib for the pMBR size in LBA.  While most disk\npartitioning tools out there create a pMBR with these characteristics,\nMicrosoft does not, as it always sets the entry to the maximum 32-bit\nlimitation - even though a drive may be smaller than that[1].\n\nLoosen this check and only verify that the size is either the whole disk\nor 0xFFFFFFFF.  No tool in its right mind would set it to any value\nother than these.\n\n[1] http://thestarman.pcministry.com/asm/mbr/GPT.htm#GPTPT\n\nReported-and-tested-by: Matt Porter \u003cmatt.porter@linaro.org\u003e\nSigned-off-by: Davidlohr Bueso \u003cdavidlohr@hp.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "5e4c0d974139a98741b829b27cf38dc8f9284490",
      "tree": "fddd959828300c1de1ade15eeb33606c317b79db",
      "parents": [
        "4b39248365e09fb8268b6fecd1704907ffc3d980"
      ],
      "author": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Wed Sep 11 14:26:05 2013 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Sep 11 15:59:36 2013 -0700"
      },
      "message": "lib/radix-tree.c: make radix_tree_node_alloc() work correctly within interrupt\n\nWith users of radix_tree_preload() run from interrupt (block/blk-ioc.c is\none such possible user), the following race can happen:\n\nradix_tree_preload()\n...\nradix_tree_insert()\n  radix_tree_node_alloc()\n    if (rtp-\u003enr) {\n      ret \u003d rtp-\u003enodes[rtp-\u003enr - 1];\n\u003cinterrupt\u003e\n...\nradix_tree_preload()\n...\nradix_tree_insert()\n  radix_tree_node_alloc()\n    if (rtp-\u003enr) {\n      ret \u003d rtp-\u003enodes[rtp-\u003enr - 1];\n\nAnd we give out one radix tree node twice.  That clearly results in radix\ntree corruption with different results (usually OOPS) depending on which\ntwo users of radix tree race.\n\nWe fix the problem by making radix_tree_node_alloc() always allocate fresh\nradix tree nodes when in interrupt.  Using preloading when in interrupt\ndoesn\u0027t make sense since all the allocations have to be atomic anyway and\nwe cannot steal nodes from process-context users because some users rely\non radix_tree_insert() succeeding after radix_tree_preload().\nin_interrupt() check is somewhat ugly but we cannot simply key off passed\ngfp_mask as that is acquired from root_gfp_mask() and thus the same for\nall preload users.\n\nAnother part of the fix is to avoid node preallocation in\nradix_tree_preload() when passed gfp_mask doesn\u0027t allow waiting.  Again,\npreallocation in such case doesn\u0027t make sense and when preallocation would\nhappen in interrupt we could possibly leak some allocated nodes.  However,\nsome users of radix_tree_preload() require following radix_tree_insert()\nto succeed.  To avoid unexpected effects for these users,\nradix_tree_preload() only warns if passed gfp mask doesn\u0027t allow waiting\nand we provide a new function radix_tree_maybe_preload() for those users\nwhich get different gfp mask from different call sites and which are\nprepared to handle radix_tree_insert() failure.\n\nSigned-off-by: Jan Kara \u003cjack@suse.cz\u003e\nCc: Jens Axboe \u003cjaxboe@fusionio.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "b4bc4a18a226f46fec4ef47f2df28ea209db8b5d",
      "tree": "7b810ab39e135b573572582d2dca6bd365347c26",
      "parents": [
        "70f637e90ea96187530365eb1ddff8d483ba460e"
      ],
      "author": {
        "name": "Andrew Morton",
        "email": "akpm@linux-foundation.org",
        "time": "Wed Sep 11 14:25:04 2013 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Sep 11 15:59:19 2013 -0700"
      },
      "message": "block/partitions/efi.c: consistently use pr_foo()\n\nCc: Davidlohr Bueso \u003cdavidlohr@hp.com\u003e\nCc: Karel Zak \u003ckzak@redhat.com\u003e\nCc: Matt Fleming \u003cmatt.fleming@intel.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "70f637e90ea96187530365eb1ddff8d483ba460e",
      "tree": "1261227fa1fe952b69d5d86bbe44f9862b529715",
      "parents": [
        "08009b30a71d9a7c252c4bd677dbd496af9dd1a2"
      ],
      "author": {
        "name": "Davidlohr Bueso",
        "email": "davidlohr@hp.com",
        "time": "Wed Sep 11 14:25:03 2013 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Sep 11 15:59:19 2013 -0700"
      },
      "message": "partitions/efi: some style cleanups\n\nTrivial coding style cleanups - still plenty left.\n\n[akpm@linux-foundation.org: coding-style fixes]\nSigned-off-by: Davidlohr Bueso \u003cdavidlohr@hp.com\u003e\nReviewed-by: Karel Zak \u003ckzak@redhat.com\u003e\nAcked-by: Matt Fleming \u003cmatt.fleming@intel.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "08009b30a71d9a7c252c4bd677dbd496af9dd1a2",
      "tree": "9906deaf2686ebb2d45fa260d497f5aa593352d6",
      "parents": [
        "aa054bc93743ecce3a27f1655d59674dabc71a54"
      ],
      "author": {
        "name": "Davidlohr Bueso",
        "email": "davidlohr@hp.com",
        "time": "Wed Sep 11 14:25:02 2013 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Sep 11 15:59:18 2013 -0700"
      },
      "message": "partitions/efi: delete annoying emacs style comments\n\nI love emacs, but these settings for coding style are annoying when trying\nto open the efi.h file.  More important, we already have checkpatch for\nthat.\n\nSigned-off-by: Davidlohr Bueso \u003cdavidlohr@hp.com\u003e\nReviewed-by: Karel Zak \u003ckzak@redhat.com\u003e\nAcked-by: Matt Fleming \u003cmatt.fleming@intel.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "aa054bc93743ecce3a27f1655d59674dabc71a54",
      "tree": "ef4a3d6042ce1ae5554cea6c29e2aca6c230f5dd",
      "parents": [
        "27a7c642174eaec627f6a3a254035bf8abd02c5e"
      ],
      "author": {
        "name": "Davidlohr Bueso",
        "email": "davidlohr@hp.com",
        "time": "Wed Sep 11 14:25:01 2013 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Sep 11 15:59:18 2013 -0700"
      },
      "message": "partitions/efi: compare first and last usable LBAs\n\nWhen verifying GPT header integrity, make sure that first usable LBA is\nsmaller than last usable LBA.\n\nSigned-off-by: Davidlohr Bueso \u003cdavidlohr@hp.com\u003e\nReviewed-by: Karel Zak \u003ckzak@redhat.com\u003e\nAcked-by: Matt Fleming \u003cmatt.fleming@intel.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "27a7c642174eaec627f6a3a254035bf8abd02c5e",
      "tree": "19311875531607830f626c6ff7498969bccdc669",
      "parents": [
        "b05ebbbbeb67a420d06567c6b9618a9e644d6104"
      ],
      "author": {
        "name": "Davidlohr Bueso",
        "email": "davidlohr@hp.com",
        "time": "Wed Sep 11 14:25:00 2013 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Sep 11 15:59:17 2013 -0700"
      },
      "message": "partitions/efi: account for pmbr size in lba\n\nThe partition that has the 0xEE (GPT protective), must have the size in\nlba field set to the lesser of the size of the disk minus one or\n0xFFFFFFFF for larger disks.\n\nSigned-off-by: Davidlohr Bueso \u003cdavidlohr@hp.com\u003e\nReviewed-by: Karel Zak \u003ckzak@redhat.com\u003e\nAcked-by: Matt Fleming \u003cmatt.fleming@intel.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "b05ebbbbeb67a420d06567c6b9618a9e644d6104",
      "tree": "c8191dab1a7a18752afbb4158e1ad988fbfc0779",
      "parents": [
        "3e69ac344007bec5e3987ac86619e140fbc79b72"
      ],
      "author": {
        "name": "Davidlohr Bueso",
        "email": "davidlohr@hp.com",
        "time": "Wed Sep 11 14:24:58 2013 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Sep 11 15:59:16 2013 -0700"
      },
      "message": "partitions/efi: detect hybrid MBRs\n\nOne of the biggest problems with GPT is compatibility with older, non-GPT\nsystems.  The problem is addressed by creating hybrid mbrs, an extension,\nor variant, of the traditional protective mbr.  This contains, apart from\nthe 0xEE partition, up three additional primary partitions that point to\nthe same space marked by up to three GPT partitions.  The result is that\nlegacy OSs can see the three required MBR partitions and at the same time\nignore the GPT-aware partitions that protect the GPT structures.\n\nWhile hybrid MBRs are hacks, workarounds and simply not part of the GPT\nstandard, they do exist and we have no way around them.  For instance, by\ndefault, OSX creates a hybrid scheme when using multi-OS booting.\n\nIn order for Linux to properly discover protective MBRs, it must be made\naware of devices that have hybrid MBRs.  No functionality is changed by\nthis patch, just a debug message informing the user of the MBR scheme that\nis being used.\n\n[akpm@linux-foundation.org: coding-style fixes]\nSigned-off-by: Davidlohr Bueso \u003cdavidlohr@hp.com\u003e\nReviewed-by: Karel Zak \u003ckzak@redhat.com\u003e\nAcked-by: Matt Fleming \u003cmatt.fleming@intel.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "3e69ac344007bec5e3987ac86619e140fbc79b72",
      "tree": "bbaf03e104edb90d68c45453abbc4e7f48a7b899",
      "parents": [
        "33afd7a7df1a1f82675857a75572cdf4a8599e9f"
      ],
      "author": {
        "name": "Davidlohr Bueso",
        "email": "davidlohr@hp.com",
        "time": "Wed Sep 11 14:24:57 2013 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Sep 11 15:59:16 2013 -0700"
      },
      "message": "partitions/efi: do not require gpt partition to begin at sector 1\n\nWhen detecting a valid protective MBR, the Linux kernel isn\u0027t picky about\nthe partition (1-4) the 0xEE is at, but, unlike other operating systems,\nit does require it to begin at the second sector (sector 1).  This check,\napart from it not being enforced by UEFI, and causing Linux to potentially\nfail to detect any *valid* partitions on the disk, can present problems\nwhen dealing with hybrid MBRs[1].\n\nFor compatibility reasons, if the first partition is hybridized, the 0xEE\npartition must be small enough to ensure that it only protects the GPT\ndata structures - as opposed to the the whole disk in a protective MBR.\nThis problem is very well described by Rod Smith[1]: where MBR-only\npartitioning programs (such as older versions of fdisk) can see some of\nthe disk space as unallocated, thus loosing the purpose of the 0xEE\npartition\u0027s protection of GPT data structures.\n\nBy dropping this check, this patch enables Linux to be more flexible when\nprobing for GPT disklabels.\n\n[1] http://www.rodsbooks.com/gdisk/hybrid.html#reactions\n\nSigned-off-by: Davidlohr Bueso \u003cdavidlohr@hp.com\u003e\nReviewed-by: Karel Zak \u003ckzak@redhat.com\u003e\nAcked-by: Matt Fleming \u003cmatt.fleming@intel.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "33afd7a7df1a1f82675857a75572cdf4a8599e9f",
      "tree": "468b6d88bba5f2e517215f0da6f84d87a6f6814d",
      "parents": [
        "c2ebdc2439f50c049fd362bb225aaf78fe8e4cb8"
      ],
      "author": {
        "name": "Davidlohr Bueso",
        "email": "davidlohr@hp.com",
        "time": "Wed Sep 11 14:24:56 2013 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Sep 11 15:59:15 2013 -0700"
      },
      "message": "partitions/efi: check pmbr record\u0027s starting lba\n\nPer the UEFI Specs 2.4, June 2013, the starting lba of the partition that\nhas the EFI GPT (0xEE) must be set to 0x00000001 - this is obviously the\nLBA of the GPT Partition Header.\n\n[akpm@linux-foundation.org: coding-style fixes]\nSigned-off-by: Davidlohr Bueso \u003cdavidlohr@hp.com\u003e\nReviewed-by: Karel Zak \u003ckzak@redhat.com\u003e\nAcked-by: Matt Fleming \u003cmatt.fleming@intel.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "c2ebdc2439f50c049fd362bb225aaf78fe8e4cb8",
      "tree": "84e531378486eacbce73be8426c657b73457908f",
      "parents": [
        "6f79d33228fa7cf900826738a39f287cae96cd91"
      ],
      "author": {
        "name": "Davidlohr Bueso",
        "email": "davidlohr@hp.com",
        "time": "Wed Sep 11 14:24:55 2013 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Sep 11 15:59:15 2013 -0700"
      },
      "message": "partitions/efi: use lba-aware partition records\n\nThe kernel\u0027s GPT implementation currently uses the generic \u0027struct\npartition\u0027 type for dealing with legacy MBR partition records.  While this\nis is useful for disklabels that we designed for CHS addressing, such as\nmsdos, it doesn\u0027t adapt well to newer standards that use LBA instead, such\nas GUID partition tables.  Furthermore, these generic partition structures\ndo not have all the required fields to properly follow the UEFI specs.\n\nWhile a CHS address can be translated to LBA, it\u0027s much simpler and\ncleaner to just replace the partition type.  This patch adds a new\n\u0027gpt_record\u0027 type that is fully compliant with EFI and will allow, in the\nnext patches, to add more checks to properly verify a protective MBR,\nwhich is paramount to probing a device that makes use of GPT.\n\n[akpm@linux-foundation.org: coding-style fixes]\nSigned-off-by: Davidlohr Bueso \u003cdavidlohr@hp.com\u003e\nReviewed-by: Karel Zak \u003ckzak@redhat.com\u003e\nAcked-by: Matt Fleming \u003cmatt.fleming@intel.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "3ddc5b46a8e90f3c9251338b60191d0a804b0d92",
      "tree": "5c76cd730cb94e75f30953d6cd1aed9386fcee37",
      "parents": [
        "20d0e57017b69e7e4ae7166c43f3a3f023ab9702"
      ],
      "author": {
        "name": "Mathieu Desnoyers",
        "email": "mathieu.desnoyers@efficios.com",
        "time": "Wed Sep 11 14:23:18 2013 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Sep 11 15:58:18 2013 -0700"
      },
      "message": "kernel-wide: fix missing validations on __get/__put/__copy_to/__copy_from_user()\n\nI found the following pattern that leads in to interesting findings:\n\n  grep -r \"ret.*|\u003d.*__put_user\" *\n  grep -r \"ret.*|\u003d.*__get_user\" *\n  grep -r \"ret.*|\u003d.*__copy\" *\n\nThe __put_user() calls in compat_ioctl.c, ptrace compat, signal compat,\nsince those appear in compat code, we could probably expect the kernel\naddresses not to be reachable in the lower 32-bit range, so I think they\nmight not be exploitable.\n\nFor the \"__get_user\" cases, I don\u0027t think those are exploitable: the worse\nthat can happen is that the kernel will copy kernel memory into in-kernel\nbuffers, and will fail immediately afterward.\n\nThe alpha csum_partial_copy_from_user() seems to be missing the\naccess_ok() check entirely.  The fix is inspired from x86.  This could\nlead to information leak on alpha.  I also noticed that many architectures\nmap csum_partial_copy_from_user() to csum_partial_copy_generic(), but I\nwonder if the latter is performing the access checks on every\narchitectures.\n\nSigned-off-by: Mathieu Desnoyers \u003cmathieu.desnoyers@efficios.com\u003e\nCc: Richard Henderson \u003crth@twiddle.net\u003e\nCc: Ivan Kokshaysky \u003cink@jurassic.park.msu.ru\u003e\nCc: Matt Turner \u003cmattst88@gmail.com\u003e\nCc: Jens Axboe \u003caxboe@kernel.dk\u003e\nCc: Oleg Nesterov \u003coleg@redhat.com\u003e\nCc: David Miller \u003cdavem@davemloft.net\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "bab55417b10c95e6bff8cea315c315adfa009487",
      "tree": "56bfc578d47c7ea786bf6a35bf946f37e9b458b1",
      "parents": [
        "ed751e683c563be64322b9bfa0f0f7e5da9bd37c"
      ],
      "author": {
        "name": "Cai Zhiyong",
        "email": "caizhiyong@huawei.com",
        "time": "Wed Sep 11 14:20:09 2013 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Sep 11 15:56:57 2013 -0700"
      },
      "message": "block: support embedded device command line partition\n\nRead block device partition table from command line.  The partition used\nfor fixed block device (eMMC) embedded device.  It is no MBR, save\nstorage space.  Bootloader can be easily accessed by absolute address of\ndata on the block device.  Users can easily change the partition.\n\nThis code reference MTD partition, source \"drivers/mtd/cmdlinepart.c\"\nAbout the partition verbose reference\n\"Documentation/block/cmdline-partition.txt\"\n\n[akpm@linux-foundation.org: fix printk text]\n[yongjun_wei@trendmicro.com.cn: fix error return code in parse_parts()]\nSigned-off-by: Cai Zhiyong \u003ccaizhiyong@huawei.com\u003e\nCc: Karel Zak \u003ckzak@redhat.com\u003e\nCc: \"Wanglin (Albert)\" \u003calbert.wanglin@huawei.com\u003e\nCc: Marius Groeger \u003cmag@sysgo.de\u003e\nCc: David Woodhouse \u003cdwmw2@infradead.org\u003e\nCc: Jens Axboe \u003caxboe@kernel.dk\u003e\nCc: Brian Norris \u003ccomputersforpeace@gmail.com\u003e\nCc: Artem Bityutskiy \u003cdedekind@infradead.org\u003e\nSigned-off-by: Wei Yongjun \u003cyongjun_wei@trendmicro.com.cn\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "ed751e683c563be64322b9bfa0f0f7e5da9bd37c",
      "tree": "26924e471815468d5cb49c5f989c5f2058e100e8",
      "parents": [
        "bb8e0e84b30afc9827931c9773d75d5c99fcddff"
      ],
      "author": {
        "name": "Jingoo Han",
        "email": "jg1.han@samsung.com",
        "time": "Wed Sep 11 14:20:08 2013 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Sep 11 15:56:56 2013 -0700"
      },
      "message": "block/blk-sysfs.c: replace strict_strtoul() with kstrtoul()\n\nThe usage of strict_strtoul() is not preferred, because strict_strtoul()\nis obsolete.  Thus, kstrtoul() should be used.\n\nSigned-off-by: Jingoo Han \u003cjg1.han@samsung.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "577cee1e8db6b98b51506e956264b84553426e65",
      "tree": "ff53a99ba941bfbdb9c3844165162e11ba714708",
      "parents": [
        "c1b511eb211a6c72d66f7755d2b30a9a91ef9423"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Wed Aug 28 14:26:50 2013 -0400"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@kernel.dk",
        "time": "Wed Sep 11 13:23:09 2013 -0600"
      },
      "message": "blkcg: relocate root_blkg setting and clearing\n\nHello, Jens.\n\nThe original thread can be read from\n\n http://thread.gmane.org/gmane.linux.kernel.cgroups/8937\n\nWhile it leads to oops, given that it only triggers under specific\nconfigurations which aren\u0027t common.  I don\u0027t think it\u0027s necessary to\nbackport it through -stable and merging it during the coming merge\nwindow should be enough.\n\nThanks!\n\n----- 8\u003c -----\nCurrently, q-\u003eroot_blkg and q-\u003eroot_rl.blkg are set from\nblkcg_activate_policy() and cleared from blkg_destroy_all().  This\ndoesn\u0027t necessarily coincide with the lifetime of the root blkcg_gq\nleading to the following oops when blkcg is enabled but no policy is\nactivated because __blk_queue_next_rl() malfunctions expecting the\nroot_blkg pointers to be set.\n\n  BUG: unable to handle kernel NULL pointer dereference at           (null)\n  IP: [\u003cffffffff810c58cb\u003e] __wake_up_common+0x2b/0x90\n  PGD 60f7a9067 PUD 60f4c9067 PMD 0\n  Oops: 0000 [#1] SMP DEBUG_PAGEALLOC\n  gsmi: Log Shutdown Reason 0x03\n  Modules linked in: act_mirred cls_tcindex cls_prioshift sch_dsmark xt_multiport iptable_mangle sata_mv elephant elephant_dev_num cdc_acm uhci_hcd ehci_hcd i2c_d\n  CPU: 9 PID: 41382 Comm: iSCSI-write- Not tainted 3.11.0-dbg-DEV #19\n  Hardware name: Intel XXX\n  task: ffff88060d16eec0 ti: ffff88060d170000 task.ti: ffff88060d170000\n  RIP: 0010:[\u003cffffffff810c58cb\u003e] [\u003cffffffff810c58cb\u003e] __wake_up_common+0x2b/0x90\n  RSP: 0000:ffff88060d171818  EFLAGS: 00010096\n  RAX: 0000000000000082 RBX: ffff880baa3dee60 RCX: 0000000000000000\n  RDX: 0000000000000000 RSI: 0000000000000003 RDI: ffff880baa3dee60\n  RBP: ffff88060d171858 R08: 0000000000000000 R09: 0000000000000000\n  R10: 0000000000000000 R11: 0000000000000002 R12: ffff880baa3dee98\n  R13: 0000000000000003 R14: 0000000000000000 R15: 0000000000000003\n  FS:  00007f977cba6700(0000) GS:ffff880c79c60000(0000) knlGS:0000000000000000\n  CS:  0010 DS: 0000 ES: 0000 CR0: 000000008005003b\n  CR2: 0000000000000000 CR3: 000000060f7a5000 CR4: 00000000000007e0\n  Stack:\n   0000000000000082 0000000000000000 ffff88060d171858 ffff880baa3dee60\n   0000000000000082 0000000000000003 0000000000000000 0000000000000000\n   ffff88060d171898 ffffffff810c7848 ffff88060d171888 ffff880bde4bc4b8\n  Call Trace:\n   [\u003cffffffff810c7848\u003e] __wake_up+0x48/0x70\n   [\u003cffffffff8131da53\u003e] __blk_drain_queue+0x123/0x190\n   [\u003cffffffff8131dbb5\u003e] blk_cleanup_queue+0xf5/0x210\n   [\u003cffffffff8141877a\u003e] __scsi_remove_device+0x5a/0xd0\n   [\u003cffffffff81418824\u003e] scsi_remove_device+0x34/0x50\n   [\u003cffffffff814189cb\u003e] scsi_remove_target+0x16b/0x220\n   [\u003cffffffff814210f1\u003e] __iscsi_unbind_session+0xd1/0x1b0\n   [\u003cffffffff814212b2\u003e] iscsi_remove_session+0xe2/0x1c0\n   [\u003cffffffff814213a6\u003e] iscsi_destroy_session+0x16/0x60\n   [\u003cffffffff81423a59\u003e] iscsi_session_teardown+0xd9/0x100\n   [\u003cffffffff8142b75a\u003e] iscsi_sw_tcp_session_destroy+0x5a/0xb0\n   [\u003cffffffff81420948\u003e] iscsi_if_rx+0x10e8/0x1560\n   [\u003cffffffff81573335\u003e] netlink_unicast+0x145/0x200\n   [\u003cffffffff815736f3\u003e] netlink_sendmsg+0x303/0x410\n   [\u003cffffffff81528196\u003e] sock_sendmsg+0xa6/0xd0\n   [\u003cffffffff815294bc\u003e] ___sys_sendmsg+0x38c/0x3a0\n   [\u003cffffffff811ea840\u003e] ? fget_light+0x40/0x160\n   [\u003cffffffff811ea899\u003e] ? fget_light+0x99/0x160\n   [\u003cffffffff811ea840\u003e] ? fget_light+0x40/0x160\n   [\u003cffffffff8152bc79\u003e] __sys_sendmsg+0x49/0x90\n   [\u003cffffffff8152bcd2\u003e] SyS_sendmsg+0x12/0x20\n   [\u003cffffffff815fb642\u003e] system_call_fastpath+0x16/0x1b\n  Code: 66 66 66 66 90 55 48 89 e5 41 57 41 89 f7 41 56 41 89 ce 41 55 41 54 4c 8d 67 38 53 48 83 ec 18 89 55 c4 48 8b 57 38 4c 89 45 c8 \u003c4c\u003e 8b 2a 48 8d 42 e8 49\n\nFix it by moving r-\u003eroot_blkg and q-\u003eroot_rl.blkg setting to\nblkg_create() and clearing to blkg_destroy() so that they area\ninitialized when a root blkg is created and cleared when destroyed.\n\nReported-and-tested-by: Anatol Pomozov \u003canatol.pomozov@gmail.com\u003e\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nSigned-off-by: Jens Axboe \u003caxboe@kernel.dk\u003e\n"
    },
    {
      "commit": "c1b511eb211a6c72d66f7755d2b30a9a91ef9423",
      "tree": "9f86174885153c8669c06db0475457360eb2f65b",
      "parents": [
        "7aef2e780b13973ea60aed8c556107dabde6a495"
      ],
      "author": {
        "name": "Joe Perches",
        "email": "joe@perches.com",
        "time": "Thu Aug 29 15:21:42 2013 -0700"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@kernel.dk",
        "time": "Wed Sep 11 13:22:03 2013 -0600"
      },
      "message": "block: Convert kmalloc_node(...GFP_ZERO...) to kzalloc_node(...)\n\nUse the helper function instead of __GFP_ZERO.\n\nSigned-off-by: Joe Perches \u003cjoe@perches.com\u003e\nSigned-off-by: Jens Axboe \u003caxboe@kernel.dk\u003e\n"
    },
    {
      "commit": "7aef2e780b13973ea60aed8c556107dabde6a495",
      "tree": "5265a24ffeaea32e2cefacf83962764d6d661a36",
      "parents": [
        "6e4664525b1db28f8c4e1130957f70a94c19213e"
      ],
      "author": {
        "name": "Jianpeng Ma",
        "email": "majianpeng@gmail.com",
        "time": "Wed Sep 11 13:21:07 2013 -0600"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@kernel.dk",
        "time": "Wed Sep 11 13:21:07 2013 -0600"
      },
      "message": "block: trace all devices plug operation\n\nIn func blk_queue_bio, if list of plug is empty,it will call\nblk_trace_plug.\nIf process deal with a single device,it\u0027t ok.But if process deal with\nmulti devices,it only trace the first device.\nUsing request_count to judge, it can soleve this problem.\n\nIn addition, i modify the comment.\n\nSigned-off-by: Jianpeng Ma \u003cmajianpeng@gmail.com\u003e\nSigned-off-by: Jens Axboe \u003caxboe@kernel.dk\u003e\n"
    },
    {
      "commit": "32dad03d164206ea886885d0740284ba215b0970",
      "tree": "5fd89fe27295bfbe47dce5f274aa645099741a71",
      "parents": [
        "357397a14117f0c2eeafcac06a1f8412a02aa6af",
        "d1625964da51bda61306ad3ec45307a799c21f08"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Sep 03 18:25:03 2013 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Sep 03 18:25:03 2013 -0700"
      },
      "message": "Merge branch \u0027for-3.12\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tj/cgroup\n\nPull cgroup updates from Tejun Heo:\n \"A lot of activities on the cgroup front.  Most changes aren\u0027t visible\n  to userland at all at this point and are laying foundation for the\n  planned unified hierarchy.\n\n   - The biggest change is decoupling the lifetime management of css\n     (cgroup_subsys_state) from that of cgroup\u0027s.  Because controllers\n     (cpu, memory, block and so on) will need to be dynamically enabled\n     and disabled, css which is the association point between a cgroup\n     and a controller may come and go dynamically across the lifetime of\n     a cgroup.  Till now, css\u0027s were created when the associated cgroup\n     was created and stayed till the cgroup got destroyed.\n\n     Assumptions around this tight coupling permeated through cgroup\n     core and controllers.  These assumptions are gradually removed,\n     which consists bulk of patches, and css destruction path is\n     completely decoupled from cgroup destruction path.  Note that\n     decoupling of creation path is relatively easy on top of these\n     changes and the patchset is pending for the next window.\n\n   - cgroup has its own event mechanism cgroup.event_control, which is\n     only used by memcg.  It is overly complex trying to achieve high\n     flexibility whose benefits seem dubious at best.  Going forward,\n     new events will simply generate file modified event and the\n     existing mechanism is being made specific to memcg.  This pull\n     request contains prepatory patches for such change.\n\n   - Various fixes and cleanups\"\n\nFixed up conflict in kernel/cgroup.c as per Tejun.\n\n* \u0027for-3.12\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tj/cgroup: (69 commits)\n  cgroup: fix cgroup_css() invocation in css_from_id()\n  cgroup: make cgroup_write_event_control() use css_from_dir() instead of __d_cgrp()\n  cgroup: make cgroup_event hold onto cgroup_subsys_state instead of cgroup\n  cgroup: implement CFTYPE_NO_PREFIX\n  cgroup: make cgroup_css() take cgroup_subsys * instead and allow NULL subsys\n  cgroup: rename cgroup_css_from_dir() to css_from_dir() and update its syntax\n  cgroup: fix cgroup_write_event_control()\n  cgroup: fix subsystem file accesses on the root cgroup\n  cgroup: change cgroup_from_id() to css_from_id()\n  cgroup: use css_get() in cgroup_create() to check CSS_ROOT\n  cpuset: remove an unncessary forward declaration\n  cgroup: RCU protect each cgroup_subsys_state release\n  cgroup: move subsys file removal to kill_css()\n  cgroup: factor out kill_css()\n  cgroup: decouple cgroup_subsys_state destruction from cgroup destruction\n  cgroup: replace cgroup-\u003ecss_kill_cnt with -\u003enr_css\n  cgroup: bounce cgroup_subsys_state ref kill confirmation to a work item\n  cgroup: move cgroup-\u003esubsys[] assignment to online_css()\n  cgroup: reorganize css init / exit paths\n  cgroup: add __rcu modifier to cgroup-\u003esubsys[]\n  ...\n"
    },
    {
      "commit": "7e782af57649f8a8e943d80104c946a5cd7af7cc",
      "tree": "3ad0cfe04ce16a2a07c50cdfa55a60149de50fc7",
      "parents": [
        "a9d6ceb838755c24dde8a0ca02c3378926fc63db"
      ],
      "author": {
        "name": "Hannes Reinecke",
        "email": "hare@suse.de",
        "time": "Mon Jul 01 15:16:26 2013 +0200"
      },
      "committer": {
        "name": "James Bottomley",
        "email": "JBottomley@Parallels.com",
        "time": "Fri Aug 23 12:54:53 2013 -0400"
      },
      "message": "[SCSI] Return ENODATA on medium error\n\nWhen a medium error is detected the SCSI stack should return\nENODATA to the upper layers.\n\n[jejb: fix whitespace error]\nSigned-off-by: Hannes Reinecke \u003chare@suse.de\u003e\nSigned-off-by: James Bottomley \u003cJBottomley@Parallels.com\u003e\n"
    },
    {
      "commit": "a9d6ceb838755c24dde8a0ca02c3378926fc63db",
      "tree": "8239e44e9bee3029e31ee1ac04b14b73f5f500d1",
      "parents": [
        "87f14e658f664a17dcdb38d3f6ae70642fcdc263"
      ],
      "author": {
        "name": "Hannes Reinecke",
        "email": "hare@suse.de",
        "time": "Mon Jul 01 15:16:25 2013 +0200"
      },
      "committer": {
        "name": "James Bottomley",
        "email": "JBottomley@Parallels.com",
        "time": "Fri Aug 23 12:43:54 2013 -0400"
      },
      "message": "[SCSI] return ENOSPC on thin provisioning failure\n\nWhen the thin provisioning hard threshold is reached we\nshould return ENOSPC to inform upper layers about this fact.\n\nSigned-off-by: Hannes Reinecke \u003chare@suse.de\u003e\nSigned-off-by: James Bottomley \u003cJBottomley@Parallels.com\u003e\n"
    },
    {
      "commit": "bd8815a6d802fc16a7a106e170593aa05dc17e72",
      "tree": "6be9383cac4c468fe77b3a598cdd1664dba4afb4",
      "parents": [
        "95109b627ba6a043c181fa5fa45d1c754dd44fbc"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Thu Aug 08 20:11:27 2013 -0400"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Thu Aug 08 20:11:27 2013 -0400"
      },
      "message": "cgroup: make css_for_each_descendant() and friends include the origin css in the iteration\n\nPreviously, all css descendant iterators didn\u0027t include the origin\n(root of subtree) css in the iteration.  The reasons were maintaining\nconsistency with css_for_each_child() and that at the time of\nintroduction more use cases needed skipping the origin anyway;\nhowever, given that css_is_descendant() considers self to be a\ndescendant, omitting the origin css has become more confusing and\nlooking at the accumulated use cases rather clearly indicates that\nincluding origin would result in simpler code overall.\n\nWhile this is a change which can easily lead to subtle bugs, cgroup\nAPI including the iterators has recently gone through major\nrestructuring and no out-of-tree changes will be applicable without\nadjustments making this a relatively acceptable opportunity for this\ntype of change.\n\nThe conversions are mostly straight-forward.  If the iteration block\nhad explicit origin handling before or after, it\u0027s moved inside the\niteration.  If not, if (pos \u003d\u003d origin) continue; is added.  Some\nconversions add extra reference get/put around origin handling by\nconsolidating origin handling and the rest.  While the extra ref\noperations aren\u0027t strictly necessary, this shouldn\u0027t cause any\nnoticeable difference.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nAcked-by: Li Zefan \u003clizefan@huawei.com\u003e\nAcked-by: Vivek Goyal \u003cvgoyal@redhat.com\u003e\nAcked-by: Aristeu Rozanski \u003caris@redhat.com\u003e\nAcked-by: Michal Hocko \u003cmhocko@suse.cz\u003e\nCc: Jens Axboe \u003caxboe@kernel.dk\u003e\nCc: Matt Helsley \u003cmatthltc@us.ibm.com\u003e\nCc: Johannes Weiner \u003channes@cmpxchg.org\u003e\nCc: Balbir Singh \u003cbsingharora@gmail.com\u003e\n"
    },
    {
      "commit": "d99c8727e7bbc01b70e2c57e6127bfab26b868fd",
      "tree": "9479ba1329ac1184cf82755ade7dfe94e9d7a4be",
      "parents": [
        "81eeaf0411204f52af8ef78ff107cfca2fcfec1d"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Thu Aug 08 20:11:27 2013 -0400"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Thu Aug 08 20:11:27 2013 -0400"
      },
      "message": "cgroup: make cgroup_taskset deal with cgroup_subsys_state instead of cgroup\n\ncgroup is in the process of converting to css (cgroup_subsys_state)\nfrom cgroup as the principal subsystem interface handle.  This is\nmostly to prepare for the unified hierarchy support where css\u0027s will\nbe created and destroyed dynamically but also helps cleaning up\nsubsystem implementations as css is usually what they are interested\nin anyway.\n\ncgroup_taskset which is used by the subsystem attach methods is the\nlast cgroup subsystem API which isn\u0027t using css as the handle.  Update\ncgroup_taskset_cur_cgroup() to cgroup_taskset_cur_css() and\ncgroup_taskset_for_each() to take @skip_css instead of @skip_cgrp.\n\nThe conversions are pretty mechanical.  One exception is\ncpuset::cgroup_cs(), which lost its last user and got removed.\n\nThis patch shouldn\u0027t introduce any functional changes.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nAcked-by: Li Zefan \u003clizefan@huawei.com\u003e\nAcked-by: Daniel Wagner \u003cdaniel.wagner@bmw-carit.de\u003e\nCc: Ingo Molnar \u003cmingo@redhat.com\u003e\nCc: Matt Helsley \u003cmatthltc@us.ibm.com\u003e\nCc: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "492eb21b98f88e411a8bb43d6edcd7d7022add10",
      "tree": "da06df9485fd607762fdec06169f7d9f601e3cf6",
      "parents": [
        "f48e3924dca268c677c4e338e5d91ad9e6fe6b9e"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Thu Aug 08 20:11:25 2013 -0400"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Thu Aug 08 20:11:25 2013 -0400"
      },
      "message": "cgroup: make hierarchy iterators deal with cgroup_subsys_state instead of cgroup\n\ncgroup is currently in the process of transitioning to using css\n(cgroup_subsys_state) as the primary handle instead of cgroup in\nsubsystem API.  For hierarchy iterators, this is beneficial because\n\n* In most cases, css is the only thing subsystems care about anyway.\n\n* On the planned unified hierarchy, iterations for different\n  subsystems will need to skip over different subtrees of the\n  hierarchy depending on which subsystems are enabled on each cgroup.\n  Passing around css makes it unnecessary to explicitly specify the\n  subsystem in question as css is intersection between cgroup and\n  subsystem\n\n* For the planned unified hierarchy, css\u0027s would need to be created\n  and destroyed dynamically independent from cgroup hierarchy.  Having\n  cgroup core manage css iteration makes enforcing deref rules a lot\n  easier.\n\nMost subsystem conversions are straight-forward.  Noteworthy changes\nare\n\n* blkio: cgroup_to_blkcg() is no longer used.  Removed.\n\n* freezer: cgroup_freezer() is no longer used.  Removed.\n\n* devices: cgroup_to_devcgroup() is no longer used.  Removed.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nAcked-by: Li Zefan \u003clizefan@huawei.com\u003e\nAcked-by: Michal Hocko \u003cmhocko@suse.cz\u003e\nAcked-by: Vivek Goyal \u003cvgoyal@redhat.com\u003e\nAcked-by: Aristeu Rozanski \u003caris@redhat.com\u003e\nCc: Johannes Weiner \u003channes@cmpxchg.org\u003e\nCc: Balbir Singh \u003cbsingharora@gmail.com\u003e\nCc: Matt Helsley \u003cmatthltc@us.ibm.com\u003e\nCc: Jens Axboe \u003caxboe@kernel.dk\u003e\n"
    },
    {
      "commit": "182446d087906de40e514573a92a97b203695f71",
      "tree": "6aee96219c82d0a64b9d389c50666c1ce0ec27ee",
      "parents": [
        "67f4c36f83455b253445b2cb28ac9a2c4f85d99a"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Thu Aug 08 20:11:24 2013 -0400"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Thu Aug 08 20:11:24 2013 -0400"
      },
      "message": "cgroup: pass around cgroup_subsys_state instead of cgroup in file methods\n\ncgroup is currently in the process of transitioning to using struct\ncgroup_subsys_state * as the primary handle instead of struct cgroup.\nPlease see the previous commit which converts the subsystem methods\nfor rationale.\n\nThis patch converts all cftype file operations to take @css instead of\n@cgroup.  cftypes for the cgroup core files don\u0027t have their subsytem\npointer set.  These will automatically use the dummy_css added by the\nprevious patch and can be converted the same way.\n\nMost subsystem conversions are straight forwards but there are some\ninteresting ones.\n\n* freezer: update_if_frozen() is also converted to take @css instead\n  of @cgroup for consistency.  This will make the code look simpler\n  too once iterators are converted to use css.\n\n* memory/vmpressure: mem_cgroup_from_css() needs to be exported to\n  vmpressure while mem_cgroup_from_cont() can be made static.\n  Updated accordingly.\n\n* cpu: cgroup_tg() doesn\u0027t have any user left.  Removed.\n\n* cpuacct: cgroup_ca() doesn\u0027t have any user left.  Removed.\n\n* hugetlb: hugetlb_cgroup_form_cgroup() doesn\u0027t have any user left.\n  Removed.\n\n* net_cls: cgrp_cls_state() doesn\u0027t have any user left.  Removed.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nAcked-by: Li Zefan \u003clizefan@huawei.com\u003e\nAcked-by: Michal Hocko \u003cmhocko@suse.cz\u003e\nAcked-by: Vivek Goyal \u003cvgoyal@redhat.com\u003e\nAcked-by: Aristeu Rozanski \u003caris@redhat.com\u003e\nAcked-by: Daniel Wagner \u003cdaniel.wagner@bmw-carit.de\u003e\nCc: Peter Zijlstra \u003cpeterz@infradead.org\u003e\nCc: Ingo Molnar \u003cmingo@redhat.com\u003e\nCc: Johannes Weiner \u003channes@cmpxchg.org\u003e\nCc: Balbir Singh \u003cbsingharora@gmail.com\u003e\nCc: Matt Helsley \u003cmatthltc@us.ibm.com\u003e\nCc: Jens Axboe \u003caxboe@kernel.dk\u003e\nCc: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "2bb566cb68dfafad328af666ebadf0e49accd6ca",
      "tree": "700bd0b0f325e9eebf4b0c91ae31d1872f471e39",
      "parents": [
        "eb95419b023abacb415e2a18fea899023ce7624d"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Thu Aug 08 20:11:23 2013 -0400"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Thu Aug 08 20:11:23 2013 -0400"
      },
      "message": "cgroup: add subsys backlink pointer to cftype\n\ncgroup is transitioning to using css (cgroup_subsys_state) instead of\ncgroup as the primary subsystem handle.  The cgroupfs file interface\nwill be converted to use css\u0027s which requires finding out the\nsubsystem from cftype so that the matching css can be determined from\nthe cgroup.\n\nThis patch adds cftype-\u003ess which points to the subsystem the file\nbelongs to.  The field is initialized while a cftype is being\nregistered.  This makes it unnecessary to explicitly specify the\nsubsystem for other cftype handling functions.  @ss argument dropped\nfrom various cftype handling functions.\n\nThis patch shouldn\u0027t introduce any behavior differences.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nAcked-by: Li Zefan \u003clizefan@huawei.com\u003e\nAcked-by: Vivek Goyal \u003cvgoyal@redhat.com\u003e\nCc: Jens Axboe \u003caxboe@kernel.dk\u003e\n"
    },
    {
      "commit": "eb95419b023abacb415e2a18fea899023ce7624d",
      "tree": "705284469b67cbe440b86c6cb81e1cf27648eba9",
      "parents": [
        "6387698699afd72d6304566fb6ccf84bffe07c56"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Thu Aug 08 20:11:23 2013 -0400"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Thu Aug 08 20:11:23 2013 -0400"
      },
      "message": "cgroup: pass around cgroup_subsys_state instead of cgroup in subsystem methods\n\ncgroup is currently in the process of transitioning to using struct\ncgroup_subsys_state * as the primary handle instead of struct cgroup *\nin subsystem implementations for the following reasons.\n\n* With unified hierarchy, subsystems will be dynamically bound and\n  unbound from cgroups and thus css\u0027s (cgroup_subsys_state) may be\n  created and destroyed dynamically over the lifetime of a cgroup,\n  which is different from the current state where all css\u0027s are\n  allocated and destroyed together with the associated cgroup.  This\n  in turn means that cgroup_css() should be synchronized and may\n  return NULL, making it more cumbersome to use.\n\n* Differing levels of per-subsystem granularity in the unified\n  hierarchy means that the task and descendant iterators should behave\n  differently depending on the specific subsystem the iteration is\n  being performed for.\n\n* In majority of the cases, subsystems only care about its part in the\n  cgroup hierarchy - ie. the hierarchy of css\u0027s.  Subsystem methods\n  often obtain the matching css pointer from the cgroup and don\u0027t\n  bother with the cgroup pointer itself.  Passing around css fits\n  much better.\n\nThis patch converts all cgroup_subsys methods to take @css instead of\n@cgroup.  The conversions are mostly straight-forward.  A few\nnoteworthy changes are\n\n* -\u003ecss_alloc() now takes css of the parent cgroup rather than the\n  pointer to the new cgroup as the css for the new cgroup doesn\u0027t\n  exist yet.  Knowing the parent css is enough for all the existing\n  subsystems.\n\n* In kernel/cgroup.c::offline_css(), unnecessary open coded css\n  dereference is replaced with local variable access.\n\nThis patch shouldn\u0027t cause any behavior differences.\n\nv2: Unnecessary explicit cgrp-\u003esubsys[] deref in css_online() replaced\n    with local variable @css as suggested by Li Zefan.\n\n    Rebased on top of new for-3.12 which includes for-3.11-fixes so\n    that -\u003ecss_free() invocation added by da0a12caff (\"cgroup: fix a\n    leak when percpu_ref_init() fails\") is converted too.  Suggested\n    by Li Zefan.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nAcked-by: Li Zefan \u003clizefan@huawei.com\u003e\nAcked-by: Michal Hocko \u003cmhocko@suse.cz\u003e\nAcked-by: Vivek Goyal \u003cvgoyal@redhat.com\u003e\nAcked-by: Aristeu Rozanski \u003caris@redhat.com\u003e\nAcked-by: Daniel Wagner \u003cdaniel.wagner@bmw-carit.de\u003e\nCc: Peter Zijlstra \u003cpeterz@infradead.org\u003e\nCc: Ingo Molnar \u003cmingo@redhat.com\u003e\nCc: Johannes Weiner \u003channes@cmpxchg.org\u003e\nCc: Balbir Singh \u003cbsingharora@gmail.com\u003e\nCc: Matt Helsley \u003cmatthltc@us.ibm.com\u003e\nCc: Jens Axboe \u003caxboe@kernel.dk\u003e\nCc: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "6387698699afd72d6304566fb6ccf84bffe07c56",
      "tree": "9440e96fa8e5adce62409a5b0e40984dfedaada3",
      "parents": [
        "a7c6d554aa01236ac2a9f851ab0f75704f76dfa2"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Thu Aug 08 20:11:23 2013 -0400"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Thu Aug 08 20:11:23 2013 -0400"
      },
      "message": "cgroup: add css_parent()\n\nCurrently, controllers have to explicitly follow the cgroup hierarchy\nto find the parent of a given css.  cgroup is moving towards using\ncgroup_subsys_state as the main controller interface construct, so\nlet\u0027s provide a way to climb the hierarchy using just csses.\n\nThis patch implements css_parent() which, given a css, returns its\nparent.  The function is guarnateed to valid non-NULL parent css as\nlong as the target css is not at the top of the hierarchy.\n\nfreezer, cpuset, cpu, cpuacct, hugetlb, memory, net_cls and devices\nare converted to use css_parent() instead of accessing cgroup-\u003eparent\ndirectly.\n\n* __parent_ca() is dropped from cpuacct and its usage is replaced with\n  parent_ca().  The only difference between the two was NULL test on\n  cgroup-\u003eparent which is now embedded in css_parent() making the\n  distinction moot.  Note that eventually a css-\u003eparent field will be\n  added to css and the NULL check in css_parent() will go away.\n\nThis patch shouldn\u0027t cause any behavior differences.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nAcked-by: Li Zefan \u003clizefan@huawei.com\u003e\n"
    },
    {
      "commit": "a7c6d554aa01236ac2a9f851ab0f75704f76dfa2",
      "tree": "fe62d07283a589daa39f843deaefafd11c572b84",
      "parents": [
        "72c97e54e0f043d33b246d7460ae0a36c4b8c643"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Thu Aug 08 20:11:23 2013 -0400"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Thu Aug 08 20:11:23 2013 -0400"
      },
      "message": "cgroup: add/update accessors which obtain subsys specific data from css\n\ncss (cgroup_subsys_state) is usually embedded in a subsys specific\ndata structure.  Subsystems either use container_of() directly to cast\nfrom css to such data structure or has an accessor function wrapping\nsuch cast.  As cgroup as whole is moving towards using css as the main\ninterface handle, add and update such accessors to ease dealing with\ncss\u0027s.\n\nAll accessors explicitly handle NULL input and return NULL in those\ncases.  While this looks like an extra branch in the code, as all\ncontrollers specific data structures have css as the first field, the\ncasting doesn\u0027t involve any offsetting and the compiler can trivially\noptimize out the branch.\n\n* blkio, freezer, cpuset, cpu, cpuacct and net_cls didn\u0027t have such\n  accessor.  Added.\n\n* memory, hugetlb and devices already had one but didn\u0027t explicitly\n  handle NULL input.  Updated.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nAcked-by: Li Zefan \u003clizefan@huawei.com\u003e\n"
    },
    {
      "commit": "8af01f56a03e9cbd91a55d688fce1315021efba8",
      "tree": "05c051bd8b188073bb4bf695c3a46c6592e86794",
      "parents": [
        "61584e3f4964995e575618f76ff7197123796e75"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Thu Aug 08 20:11:22 2013 -0400"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Thu Aug 08 20:11:22 2013 -0400"
      },
      "message": "cgroup: s/cgroup_subsys_state/cgroup_css/ s/task_subsys_state/task_css/\n\nThe names of the two struct cgroup_subsys_state accessors -\ncgroup_subsys_state() and task_subsys_state() - are somewhat awkward.\nThe former clashes with the type name and the latter doesn\u0027t even\nindicate it\u0027s somehow related to cgroup.\n\nWe\u0027re about to revamp large portion of cgroup API, so, let\u0027s rename\nthem so that they\u0027re less awkward.  Most per-controller usages of the\naccessors are localized in accessor wrappers and given the amount of\nscheduled changes, this isn\u0027t gonna add any noticeable headache.\n\nRename cgroup_subsys_state() to cgroup_css() and task_subsys_state()\nto task_css().  This patch is pure rename.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nAcked-by: Li Zefan \u003clizefan@huawei.com\u003e\n"
    },
    {
      "commit": "0b776b062843b63cb4c9acdfc092b2581be3c2f6",
      "tree": "18fd65bcac736087793329fda9211cfa3fd78501",
      "parents": [
        "a83048ebd449a441fdbd3fa854e6b1a71552cc99"
      ],
      "author": {
        "name": "Paul Gortmaker",
        "email": "paul.gortmaker@windriver.com",
        "time": "Wed Jun 19 15:26:23 2013 -0400"
      },
      "committer": {
        "name": "Paul Gortmaker",
        "email": "paul.gortmaker@windriver.com",
        "time": "Sun Jul 14 19:36:59 2013 -0400"
      },
      "message": "block: delete __cpuinit usage from all block files\n\nThe __cpuinit type of throwaway sections might have made sense\nsome time ago when RAM was more constrained, but now the savings\ndo not offset the cost and complications.  For example, the fix in\ncommit 5e427ec2d0 (\"x86: Fix bit corruption at CPU resume time\")\nis a good example of the nasty type of bugs that can be created\nwith improper use of the various __init prefixes.\n\nAfter a discussion on LKML[1] it was decided that cpuinit should go\nthe way of devinit and be phased out.  Once all the users are gone,\nwe can then finally remove the macros themselves from linux/init.h.\n\nThis removes all the drivers/block uses of the __cpuinit macros\nfrom all C files.\n\n[1] https://lkml.org/lkml/2013/5/20/589\n\nCc: Jens Axboe \u003caxboe@kernel.dk\u003e\nSigned-off-by: Paul Gortmaker \u003cpaul.gortmaker@windriver.com\u003e\n"
    },
    {
      "commit": "36805aaea5ae3cf1bb32f1643e0a800bb69f0d5b",
      "tree": "5565132549a0733772b3a2ac6b5cda516ea8cdce",
      "parents": [
        "6d2fa9e141ea56a571ec842fd4f3a86bea44a203",
        "d50235b7bc3ee0a0427984d763ea7534149531b4"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jul 11 13:03:24 2013 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jul 11 13:03:24 2013 -0700"
      },
      "message": "Merge branch \u0027for-3.11/core\u0027 of git://git.kernel.dk/linux-block\n\nPull core block IO updates from Jens Axboe:\n \"Here are the core IO block bits for 3.11. It contains:\n\n   - A tweak to the reserved tag logic from Jan, for weirdo devices with\n     just 3 free tags.  But for those it improves things substantially\n     for random writes.\n\n   - Periodic writeback fix from Jan.  Marked for stable as well.\n\n   - Fix for a race condition in IO scheduler switching from Jianpeng.\n\n   - The hierarchical blk-cgroup support from Tejun.  This is the grunt\n     of the series.\n\n   - blk-throttle fix from Vivek.\n\n  Just a note that I\u0027m in the middle of a relocation, whole family is\n  flying out tomorrow.  Hence I will be awal the remainder of this week,\n  but back at work again on Monday the 15th.  CC\u0027ing Tejun, since any\n  potential \"surprises\" will most likely be from the blk-cgroup work.\n  But it\u0027s been brewing for a while and sitting in my tree and\n  linux-next for a long time, so should be solid.\"\n\n* \u0027for-3.11/core\u0027 of git://git.kernel.dk/linux-block: (36 commits)\n  elevator: Fix a race in elevator switching\n  block: Reserve only one queue tag for sync IO if only 3 tags are available\n  writeback: Fix periodic writeback after fs mount\n  blk-throttle: implement proper hierarchy support\n  blk-throttle: implement throtl_grp-\u003ehas_rules[]\n  blk-throttle: Account for child group\u0027s start time in parent while bio climbs up\n  blk-throttle: add throtl_qnode for dispatch fairness\n  blk-throttle: make throtl_pending_timer_fn() ready for hierarchy\n  blk-throttle: make tg_dispatch_one_bio() ready for hierarchy\n  blk-throttle: make blk_throtl_bio() ready for hierarchy\n  blk-throttle: make blk_throtl_drain() ready for hierarchy\n  blk-throttle: dispatch from throtl_pending_timer_fn()\n  blk-throttle: implement dispatch looping\n  blk-throttle: separate out throtl_service_queue-\u003epending_timer from throtl_data-\u003edispatch_work\n  blk-throttle: set REQ_THROTTLED from throtl_charge_bio() and gate stats update with it\n  blk-throttle: implement sq_to_tg(), sq_to_td() and throtl_log()\n  blk-throttle: add throtl_service_queue-\u003eparent_sq\n  blk-throttle: generalize update_disptime optimization in blk_throtl_bio()\n  blk-throttle: dispatch to throtl_data-\u003eservice_queue.bio_lists[]\n  blk-throttle: move bio_lists[] and friends to throtl_service_queue\n  ...\n"
    },
    {
      "commit": "f8f066033b015a744065f6c7ed83741b4760376b",
      "tree": "ea2172921280dfd1a8fff3b5bc41141bb5e3b6df",
      "parents": [
        "6ceea22bbbc84fcf6bf0913bb3db8a657e9002f6"
      ],
      "author": {
        "name": "Philippe De Muyter",
        "email": "phdm@macqel.be",
        "time": "Mon Jul 08 16:01:30 2013 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jul 09 10:33:28 2013 -0700"
      },
      "message": "partitions/msdos: enumerate also AIX LVM partitions\n\nGraft AIX partitions enumeration into partitions/msdos.c\n\nThere is already a AIX disks detection logic in msdos.c.  When an AIX disk\nhas been found, and if configured to, call the aix partitions recognizer.\nThis avoids removal of AIX disks protection from msdos.c, avoids code\nduplication, and ensures that AIX partitions enumeration is called before\nplain msdos partitions enumeration.\n\nSigned-off-by: Philippe De Muyter \u003cphdm@macqel.be\u003e\nCc: Karel Zak \u003ckzak@redhat.com\u003e\nCc: Jens Axboe \u003caxboe@kernel.dk\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "6ceea22bbbc84fcf6bf0913bb3db8a657e9002f6",
      "tree": "e1ed4bb79429f1191931091dd8311a5067acdfcb",
      "parents": [
        "1d04f3c6ab6bbdc6187ba44b8a667a785b63c4f2"
      ],
      "author": {
        "name": "Philippe De Muyter",
        "email": "phdm@macqel.be",
        "time": "Mon Jul 08 16:01:29 2013 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jul 09 10:33:28 2013 -0700"
      },
      "message": "partitions: add aix lvm partition support files\n\nAdd partitions/aix.h and partitions/aix.c.\n\nAIX LVM permits to make \"logical volumes\" which are made of multiple\nslices of multiple disks.  The new code allows only access to the\n\"logical volumes\" which are made of one slice on the probed disk, a\nslice being a contiguous disk area.  The code also detects \"logical\nvolumes\" made of multiple slices on the probed disk, but can not\ndescribe them to the partition layer, because the partition layer\ngeneric code does not support that.  When such non-contiguous \"logical\nvolumes\" are detected, a diagnostic message is printed.\n\n[akpm@linux-foundation.org: coding-style fixes]\nSigned-off-by: Philippe De Muyter \u003cphdm@macqel.be\u003e\nCc: Karel Zak \u003ckzak@redhat.com\u003e\nCc: Jens Axboe \u003caxboe@kernel.dk\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "1d04f3c6ab6bbdc6187ba44b8a667a785b63c4f2",
      "tree": "f0d3d3c9ba93de058d06001aeded38d8e3d25706",
      "parents": [
        "026dadad6b44f0469a475efb4cae48269d8848bd"
      ],
      "author": {
        "name": "Philippe De Muyter",
        "email": "phdm@macqel.be",
        "time": "Mon Jul 08 16:01:28 2013 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jul 09 10:33:28 2013 -0700"
      },
      "message": "partitions/msdos.c: end-of-line whitespace and semicolon cleanup\n\nSigned-off-by: Philippe De Muyter \u003cphdm@macqel.be\u003e\nCc: Karel Zak \u003ckzak@redhat.com\u003e\nCc: Jens Axboe \u003caxboe@kernel.dk\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "7f0ef0267e20d62d45d527911a993b1e998f4968",
      "tree": "de51abc7da5903f59d83e23937f22420164c9477",
      "parents": [
        "862f0012549110d6f2586bf54b52ed4540cbff3a",
        "9307c29524502c21f0e8a6d96d850b2f5bc0bd9a"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Jul 03 17:12:13 2013 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Jul 03 17:12:13 2013 -0700"
      },
      "message": "Merge branch \u0027akpm\u0027 (updates from Andrew Morton)\n\nMerge first patch-bomb from Andrew Morton:\n - various misc bits\n - I\u0027m been patchmonkeying ocfs2 for a while, as Joel and Mark have been\n   distracted.  There has been quite a bit of activity.\n - About half the MM queue\n - Some backlight bits\n - Various lib/ updates\n - checkpatch updates\n - zillions more little rtc patches\n - ptrace\n - signals\n - exec\n - procfs\n - rapidio\n - nbd\n - aoe\n - pps\n - memstick\n - tools/testing/selftests updates\n\n* emailed patches from Andrew Morton \u003cakpm@linux-foundation.org\u003e: (445 commits)\n  tools/testing/selftests: don\u0027t assume the x bit is set on scripts\n  selftests: add .gitignore for kcmp\n  selftests: fix clean target in kcmp Makefile\n  selftests: add .gitignore for vm\n  selftests: add hugetlbfstest\n  self-test: fix make clean\n  selftests: exit 1 on failure\n  kernel/resource.c: remove the unneeded assignment in function __find_resource\n  aio: fix wrong comment in aio_complete()\n  drivers/w1/slaves/w1_ds2408.c: add magic sequence to disable P0 test mode\n  drivers/memstick/host/r592.c: convert to module_pci_driver\n  drivers/memstick/host/jmb38x_ms: convert to module_pci_driver\n  pps-gpio: add device-tree binding and support\n  drivers/pps/clients/pps-gpio.c: convert to module_platform_driver\n  drivers/pps/clients/pps-gpio.c: convert to devm_* helpers\n  drivers/parport/share.c: use kzalloc\n  Documentation/accounting/getdelays.c: avoid strncpy in accounting tool\n  aoe: update internal version number to v83\n  aoe: update copyright date\n  aoe: perform I/O completions in parallel\n  ...\n"
    },
    {
      "commit": "ffc8b30866879ed9ba62bd0a86fecdbd51cd3d19",
      "tree": "21fdc09c7011ed9a1b85e98f7718a58a2c903d32",
      "parents": [
        "542db01579fbb7ea7d1f7bb9ddcef1559df660b2"
      ],
      "author": {
        "name": "Kees Cook",
        "email": "keescook@chromium.org",
        "time": "Wed Jul 03 15:01:14 2013 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Jul 03 16:07:25 2013 -0700"
      },
      "message": "block: do not pass disk names as format strings\n\nDisk names may contain arbitrary strings, so they must not be\ninterpreted as format strings.  It seems that only md allows arbitrary\nstrings to be used for disk names, but this could allow for a local\nmemory corruption from uid 0 into ring 0.\n\nCVE-2013-2851\n\nSigned-off-by: Kees Cook \u003ckeescook@chromium.org\u003e\nCc: Jens Axboe \u003caxboe@kernel.dk\u003e\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": "8b0d77f13192678019f07cbc6b3338d6d91f1cf4",
      "tree": "3b5aaa1ac59486d6a507be5618d23815f7890ee8",
      "parents": [
        "31bd8fbb41b1fdf61f80e3e506574b43fad5e478"
      ],
      "author": {
        "name": "Cong Wang",
        "email": "amwang@redhat.com",
        "time": "Wed Jul 03 15:01:12 2013 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Jul 03 16:07:25 2013 -0700"
      },
      "message": "block/compat_ioctl.c: do not leak info to user-space\n\nThere is a hole in struct hd_geometry, so we have to zero the struct on\nstack before copying it to user-space.\n\nSigned-off-by: Cong Wang \u003camwang@redhat.com\u003e\nCc: Jens Axboe \u003caxboe@kernel.dk\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "c1101cbc7db316dcdc94d344727fd372622d0ce7",
      "tree": "f1d8946a404bbf7508408a8a76f9c1b7fe672498",
      "parents": [
        "1873e50028ce87dd9014049c86d71a898fa02166",
        "5ea34a01423a27d4526f3551e8542f2f991bd4a0"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Jul 03 11:08:24 2013 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Jul 03 11:08:24 2013 -0700"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/s390/linux\n\nPull s390 updates from Martin Schwidefsky:\n \"This is the bulk of the s390 patches for the 3.11 merge window.\n\n  Notable enhancements are: the block timeout patches for dasd from\n  Hannes, and more work on the PCI support front.  In addition some\n  cleanup and the usual bug fixing.\"\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/s390/linux: (42 commits)\n  s390/dasd: Fail all requests when DASD_FLAG_ABORTIO is set\n  s390/dasd: Add \u0027timeout\u0027 attribute\n  block: check for timeout function in blk_rq_timed_out()\n  block/dasd: detailed I/O errors\n  s390/dasd: Reduce amount of messages for specific errors\n  s390/dasd: Implement block timeout handling\n  s390/dasd: process all requests in the device tasklet\n  s390/dasd: make number of retries configurable\n  s390/dasd: Clarify comment\n  s390/hwsampler: Updated misleading member names in hws_data_entry\n  s390/appldata_net_sum: do not use static data\n  s390/appldata_mem: do not use static data\n  s390/vmwatchdog: do not use static data\n  s390/airq: simplify adapter interrupt code\n  s390/pci: remove per device debug attribute\n  s390/dma: remove gratuitous brackets\n  s390/facility: decompose test_facility()\n  s390/sclp: remove duplicated include from sclp_ctl.c\n  s390/irq: store interrupt information in pt_regs\n  s390/drivers: Cocci spatch \"ptr_ret.spatch\"\n  ...\n"
    },
    {
      "commit": "d50235b7bc3ee0a0427984d763ea7534149531b4",
      "tree": "acf1916e7926c1a0dddbe08db11ca2426a3816cc",
      "parents": [
        "a6b3f7614ca690e49e934c291f707b0c19312194"
      ],
      "author": {
        "name": "Jianpeng Ma",
        "email": "majianpeng@gmail.com",
        "time": "Wed Jul 03 13:25:24 2013 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@kernel.dk",
        "time": "Wed Jul 03 13:25:24 2013 +0200"
      },
      "message": "elevator: Fix a race in elevator switching\n\nThere\u0027s a race between elevator switching and normal io operation.\n    Because the allocation of struct elevator_queue and struct elevator_data\n    don\u0027t in a atomic operation.So there are have chance to use NULL\n    -\u003eelevator_data.\n    For example:\n        Thread A:                               Thread B\n        blk_queu_bio                            elevator_switch\n        spin_lock_irq(q-\u003equeue_block)           elevator_alloc\n        elv_merge                               elevator_init_fn\n\n    Because call elevator_alloc, it can\u0027t hold queue_lock and the\n    -\u003eelevator_data is NULL.So at the same time, threadA call elv_merge and\n    nedd some info of elevator_data.So the crash happened.\n\n    Move the elevator_alloc into func elevator_init_fn, it make the\n    operations in a atomic operation.\n\n    Using the follow method can easy reproduce this bug\n    1:dd if\u003d/dev/sdb of\u003d/dev/null\n    2:while true;do echo noop \u003e scheduler;echo deadline \u003e scheduler;done\n\n    The test method also use this method.\n\nSigned-off-by: Jianpeng Ma \u003cmajianpeng@gmail.com\u003e\nSigned-off-by: Jens Axboe \u003caxboe@kernel.dk\u003e\n"
    },
    {
      "commit": "f317ff9eed763e99bd226a447f93d42509434f43",
      "tree": "d77edfcdb1e7c32c30327f50dce04bcff8ec1531",
      "parents": [
        "13cc56013842a847a0f6ff805d9ed9181e753ef8",
        "a85f1a41f020bc2c97611060bcfae6f48a1db28d"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jul 02 19:53:30 2013 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jul 02 19:53:30 2013 -0700"
      },
      "message": "Merge branch \u0027for-3.11\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tj/wq\n\nPull workqueue changes from Tejun Heo:\n \"Surprisingly, Lai and I didn\u0027t break too many things implementing\n  custom pools and stuff last time around and there aren\u0027t any follow-up\n  changes necessary at this point.\n\n  The only change in this pull request is Viresh\u0027s patches to make some\n  per-cpu workqueues to behave as unbound workqueues dependent on a boot\n  param whose default can be configured via a config option.  This leads\n  to higher processing overhead / lower bandwidth as more work items are\n  bounced across CPUs; however, it can lead to noticeable powersave in\n  certain configurations - ~10% w/ idlish constant workload on a\n  big.LITTLE configuration according to Viresh.\n\n  This is because per-cpu workqueues interfere with how the scheduler\n  perceives whether or not each CPU is idle by forcing pinned tasks on\n  them, which makes the scheduler\u0027s power-aware scheduling decisions\n  less effective.\n\n  Its effectiveness is likely less pronounced on homogenous\n  configurations and this type of optimization can probably be made\n  automatic; however, the changes are pretty minimal and the affected\n  workqueues are clearly marked, so it\u0027s an easy gain for some\n  configurations for the time being with pretty unintrusive changes.\"\n\n* \u0027for-3.11\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tj/wq:\n  fbcon: queue work on power efficient wq\n  block: queue work on power efficient wq\n  PHYLIB: queue work on system_power_efficient_wq\n  workqueue: Add system wide power_efficient workqueues\n  workqueues: Introduce new flag WQ_POWER_EFFICIENT for power oriented workqueues\n"
    },
    {
      "commit": "80bd7181b036c7b4118eb19cfff3b555889596e6",
      "tree": "455e4df7bef9ebc9cfbddb1a5936fa1f1cfeeee5",
      "parents": [
        "d1ffc1f8660e749a2683f19ee7cfdd837568b37a"
      ],
      "author": {
        "name": "Hannes Reinecke",
        "email": "hare@suse.de",
        "time": "Wed Jan 30 09:26:17 2013 +0000"
      },
      "committer": {
        "name": "Martin Schwidefsky",
        "email": "schwidefsky@de.ibm.com",
        "time": "Mon Jul 01 17:31:23 2013 +0200"
      },
      "message": "block: check for timeout function in blk_rq_timed_out()\n\nrq_timed_out_fn might have been unset while the request\nwas in flight, so we need to check for it in blk_rq_timed_out().\n\nAcked-by: Jens Axboe \u003caxboe@kernel.dk\u003e\nSigned-off-by: Hannes Reinecke \u003chare@suse.de\u003e\nSigned-off-by: Stefan Weinhuber \u003cwein@de.ibm.com\u003e\nSigned-off-by: Martin Schwidefsky \u003cschwidefsky@de.ibm.com\u003e\n"
    },
    {
      "commit": "d1ffc1f8660e749a2683f19ee7cfdd837568b37a",
      "tree": "d4a054ae9e2b19072ed32599e36feb52f7fc67e0",
      "parents": [
        "f6f80340308cdcb84db45d3abf95f23d5b66051d"
      ],
      "author": {
        "name": "Hannes Reinecke",
        "email": "hare@suse.de",
        "time": "Wed Jan 30 09:26:16 2013 +0000"
      },
      "committer": {
        "name": "Martin Schwidefsky",
        "email": "schwidefsky@de.ibm.com",
        "time": "Mon Jul 01 17:31:22 2013 +0200"
      },
      "message": "block/dasd: detailed I/O errors\n\nThe DASD driver is using FASTFAIL as an equivalent to the\ntransport errors in SCSI. And the \u0027steal lock\u0027 function maps\nroughly to a reservation error. So we should be returning the\nappropriate error codes when completing a request.\n\nAcked-by: Jens Axboe \u003caxboe@kernel.dk\u003e\nSigned-off-by: Hannes Reinecke \u003chare@suse.de\u003e\nSigned-off-by: Stefan Weinhuber \u003cwein@de.ibm.com\u003e\nSigned-off-by: Martin Schwidefsky \u003cschwidefsky@de.ibm.com\u003e\n"
    },
    {
      "commit": "a6b3f7614ca690e49e934c291f707b0c19312194",
      "tree": "1b22a33b78bafcfca8eb7509b7104eaff3b0ab99",
      "parents": [
        "a5faeaf9109578e65e1a32e2a3e76c8b47e7dcb6"
      ],
      "author": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Fri Jun 28 21:32:27 2013 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@kernel.dk",
        "time": "Fri Jun 28 21:32:27 2013 +0200"
      },
      "message": "block: Reserve only one queue tag for sync IO if only 3 tags are available\n\nIn case a device has three tags available we still reserve two of them\nfor sync IO. That leaves only a single tag for async IO such as\nwriteback from flusher thread which results in poor performance.\n\nAllow async IO to consume two tags in case queue has three tag availabe\nto get a decent async write performance.\n\nThis patch improves streaming write performance on a machine with such disk\nfrom ~21 MB/s to ~52 MB/s. Also postmark throughput in presence of\nstreaming writer improves from 8 to 12 transactions per second so sync\nIO doesn\u0027t seem to be harmed in presence of heavy async writer.\n\nSigned-off-by: Jan Kara \u003cjack@suse.cz\u003e\nSigned-off-by: Jens Axboe \u003caxboe@kernel.dk\u003e\n"
    },
    {
      "commit": "c60855cdb976c632b3bf8922eeab8a0e78edfc04",
      "tree": "5f261de9a65462c17e0ca756ebff059127b96803",
      "parents": [
        "c0a363f5cf21f79d72ab630524c3aa06fc6d066c"
      ],
      "author": {
        "name": "Aaron Lu",
        "email": "aaron.lu@intel.com",
        "time": "Fri May 17 15:47:20 2013 +0800"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@kernel.dk",
        "time": "Fri May 17 10:00:43 2013 +0200"
      },
      "message": "blkpm: avoid sleep when holding queue lock\n\nIn blk_post_runtime_resume, an autosuspend request will be initiated for\nthe device. Since we are holding the queue lock, we can\u0027t sleep and thus\nwe should use the async version to initiate an autosuspend, i.e.\npm_request_suspend instead of pm_runtime_suspend, which might sleep.\n\nSigned-off-by: Aaron Lu \u003caaron.lu@intel.com\u003e\nSigned-off-by: Jens Axboe \u003caxboe@kernel.dk\u003e\n"
    },
    {
      "commit": "9138125beabbb76b4a373d4a619870f6f5d86fc5",
      "tree": "61ccabf042ff21b81c6dcd074ea8edeb77fedfa8",
      "parents": [
        "693e751e70843c29884cde326016e746fa16073a"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Tue May 14 13:52:38 2013 -0700"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Tue May 14 13:52:38 2013 -0700"
      },
      "message": "blk-throttle: implement proper hierarchy support\n\nWith the recent updates, blk-throttle is finally ready for proper\nhierarchy support.  Dispatching now honors service_queue-\u003eparent_sq\nand propagates correctly.  The only thing missing is setting\n-\u003eparent_sq correctly so that throtl_grp hierarchy matches the cgroup\nhierarchy.\n\nThis patch updates throtl_pd_init() such that service_queues form the\nsame hierarchy as the cgroup hierarchy if sane_behavior is enabled.\nAs this concludes proper hierarchy support for blkcg, the shameful\n.broken_hierarchy tag is removed from blkio_subsys.\n\nv2: Updated blkio-controller.txt as suggested by Vivek.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nAcked-by: Vivek Goyal \u003cvgoyal@redhat.com\u003e\nCc: Li Zefan \u003clizefan@huawei.com\u003e\n"
    },
    {
      "commit": "693e751e70843c29884cde326016e746fa16073a",
      "tree": "d12aa8b02858788ff37bffb0336996ad79b0d84a",
      "parents": [
        "32ee5bc4787dfbdb280b4d81a338dcdd55918c1e"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Tue May 14 13:52:38 2013 -0700"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Tue May 14 13:52:38 2013 -0700"
      },
      "message": "blk-throttle: implement throtl_grp-\u003ehas_rules[]\n\nblk_throtl_bio() has a quick exit path for throtl_grps without limits\nconfigured.  It looks at the bps and iops limits and if both are not\nconfigured, the bio is issued immediately.  While this is correct in\nthe current flat hierarchy as each throtl_grp behaves completely\nindependently, it would become wrong in proper hierarchy mode.  A\ngroup without any limits could still be limited by one of its\nancestors and bio\u0027s queued for such group should not bypass\nblk-throtl.\n\nAs having a quick bypass mechanism is beneficial, this patch\nreimplements the mechanism such that it\u0027s correct even with proper\nhierarchy.  throtl_grp-\u003ehas_rules[] is added.  These booleans are\nupdated for the whole subtree whenever a config is updated so that\nhas_rules[] of the whole subtree stays synchronized.  They\u0027re also\nupdated when a new throtl_grp comes online so that it can\u0027t escape the\nlimits of its ancestors.\n\nAs no throtl_grp has another throtl_grp as parent now, this patch\ndoesn\u0027t yet make any behavior differences.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nAcked-by: Vivek Goyal \u003cvgoyal@redhat.com\u003e\n"
    },
    {
      "commit": "32ee5bc4787dfbdb280b4d81a338dcdd55918c1e",
      "tree": "adb0b9bc436db10588035cfb2cc8071d588b6f01",
      "parents": [
        "c5cc2070b45333f40a3f99319b83c8caeb62ec05"
      ],
      "author": {
        "name": "Vivek Goyal",
        "email": "vgoyal@redhat.com",
        "time": "Tue May 14 13:52:38 2013 -0700"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Tue May 14 13:52:38 2013 -0700"
      },
      "message": "blk-throttle: Account for child group\u0027s start time in parent while bio climbs up\n\nWith the planned proper hierarchy support, a bio will climb up the\ntree before actually being dispatched. This makes sure bio is also\nsubjected to parent\u0027s throttling limits, if any.\n\nIt might happen that parent is idle and when bio is transferred to\nparent, a new slice starts fresh. But that is incorrect as parents\nwait time should have started when bio was queued in child group and\ncauses IOs to be throttled more than configured as they climb the\nhierarchy.\n\nGiven the fact that we have not written hierarchical algorithm in a\nway where child\u0027s and parents time slices are synchronized, we\ntransfer the child\u0027s start time to parent if parent was idling.  If\nparent was busy doing dispatch of other bios all this while, this is\nnot an issue.\n\nChild\u0027s slice start time is passed to parent. Parent looks at its\nlast expired slice start time. If child\u0027s start time is after parents\nold start time, that means parent had been idle and after parent\nwent idle, child had an IO queued. So use child\u0027s start time as\nparent start time.\n\nIf parent\u0027s start time is after child\u0027s start time, that means,\nwhen IO got queued in child group, parent was not idle. But later\nit dispatched some IO, its slice got trimmed and then it went idle.\nAfter a while child\u0027s request got shifted in parent group. In this\ncase use parent\u0027s old start time as new start time as that\u0027s the\nduration of slice we did not use.\n\nThis logic is far from perfect as if there are multiple childs\nthen first child transferring the bio decides the start time while\na bio might have queued up even earlier in other child, which is\nyet to be transferred up to parent. In that case we will lose\ntime and bandwidth in parent. This patch is just an approximation\nto make situation somewhat better.\n \nSigned-off-by: Vivek Goyal \u003cvgoyal@redhat.com\u003e\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\n"
    },
    {
      "commit": "c5cc2070b45333f40a3f99319b83c8caeb62ec05",
      "tree": "170f75af6b7cef304840e495c66f58c0bda5930e",
      "parents": [
        "2e48a530a3a7daebd0cc17866304a36d39b611de"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Tue May 14 13:52:38 2013 -0700"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Tue May 14 13:52:38 2013 -0700"
      },
      "message": "blk-throttle: add throtl_qnode for dispatch fairness\n\nWith flat hierarchy, there\u0027s only single level of dispatching\nhappening and fairness beyond that point is the responsibility of the\nrest of the block layer and driver, which usually works out okay;\nhowever, with the planned hierarchy support,\nservice_queue-\u003ebio_lists[] can be filled up by bios from a single\nsource.  While the limits would still be honored, it\u0027d be very easy to\nstarve IOs from siblings or children.\n\nTo avoid such starvation, this patch implements throtl_qnode and\nconverts service_queue-\u003ebio_lists[] to lists of per-source qnodes\nwhich in turn contains the bio\u0027s.  For example, when a bio is\ndispatched from a child group, the bio doesn\u0027t get queued on\n-\u003ebio_lists[] directly but it first gets queued on the group\u0027s qnode\nwhich in turn gets queued on service_queue-\u003equeued[].  When\ndispatching for the upper level, the -\u003equeued[] list is consumed in\nround-robing order so that the dispatch windows is consumed fairly by\nall IO sources.\n\nThere are two ways a bio can come to a throtl_grp - directly queued to\nthe group or dispatched from a child.  For the former\nthrotl_grp-\u003eqnode_on_self[rw] is used.  For the latter, the child\u0027s\n-\u003eqnode_on_parent[rw].\n\nNote that this means that the child which is contributing a bio to its\nparent should stay pinned until all its bios are dispatched to its\ngrand-parent.  This patch moves blkg refcnting from bio add/remove\nspots to qnode activation/deactivation so that the blkg containing an\nactive qnode is always pinned.  As child pins the parent, this is\nsufficient for keeping the relevant sub-tree pinned while bios are in\nflight.\n\nThe starvation issue was spotted by Vivek Goyal.\n\nv2: The original patch used the same throtl_grp-\u003eqnode_on_self/parent\n    for reads and writes causing RWs to be queued incorrectly if there\n    already are outstanding IOs in the other direction.  They should\n    be throtl_grp-\u003eqnode_on_self/parent[2] so that READs and WRITEs\n    can use different qnodes.  Spotted by Vivek Goyal.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nAcked-by: Vivek Goyal \u003cvgoyal@redhat.com\u003e\n"
    },
    {
      "commit": "2e48a530a3a7daebd0cc17866304a36d39b611de",
      "tree": "6fc47a1a5b74966ff19f5287dc58fbcf3a541ee6",
      "parents": [
        "6bc9c2b464fb89eab705da87aa4284171d942369"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Tue May 14 13:52:38 2013 -0700"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Tue May 14 13:52:38 2013 -0700"
      },
      "message": "blk-throttle: make throtl_pending_timer_fn() ready for hierarchy\n\nthrotl_pending_timer_fn() currently assumes that the parent_sq is the\ntop level one and the bio\u0027s dispatched are ready to be issued;\nhowever, this assumption will be wrong with proper hierarchy support.\nThis patch makes the following changes to make\nthrotl_pending_timer_fn() ready for hiearchy.\n\n* If the parent_sq isn\u0027t the top-level one, update the parent\n  throtl_grp\u0027s dispatch time and schedule the next dispatch as\n  necessary.  If the parent\u0027s dispatch time is now, repeat the\n  function for the parent throtl_grp.\n\n* If the parent_sq is the top-level one, kick issue work_item as\n  before.\n\n* The debug message printed by throtl_log() now prints out the\n  service_queue\u0027s nr_queued[] instead of the total nr_queued as the\n  latter becomes uninteresting and misleading with hierarchical\n  dispatch.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nAcked-by: Vivek Goyal \u003cvgoyal@redhat.com\u003e\n"
    },
    {
      "commit": "6bc9c2b464fb89eab705da87aa4284171d942369",
      "tree": "9b302b4d3f036f28ee2c0198148a3bf7d8bceadf",
      "parents": [
        "9e660acffcd1b5adc4ec1ffba0cbb584f86b8907"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Tue May 14 13:52:38 2013 -0700"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Tue May 14 13:52:38 2013 -0700"
      },
      "message": "blk-throttle: make tg_dispatch_one_bio() ready for hierarchy\n\ntg_dispatch_one_bio() currently assumes that the parent_sq is the top\nlevel one and the bio being dispatched is ready to be issued; however,\nthis assumption will be wrong with proper hierarchy support.  This\npatch makes the following changes to make tg_dispatch_on_bio() ready\nfor hiearchy.\n\n* throtl_data-\u003enr_queued[] is incremented in blk_throtl_bio() instead\n  of throtl_add_bio_tg() so that throtl_add_bio_tg() can be used to\n  transfer a bio from a child tg to its parent.\n\n* tg_dispatch_one_bio() is updated to distinguish whether its parent\n  is another throtl_grp or the throtl_data.  If former, the bio is\n  transferred to the parent throtl_grp using throtl_add_bio_tg().  If\n  latter, the bio is ready to be issued and put on the top-level\n  service_queue\u0027s bio_lists[] and throtl_data-\u003enr_queued is\n  decremented.\n\nAs all throtl_grps currently have the top level service_queue as their\n-\u003eparent_sq, this patch in itself doesn\u0027t make any behavior\ndifference.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nAcked-by: Vivek Goyal \u003cvgoyal@redhat.com\u003e\n"
    },
    {
      "commit": "9e660acffcd1b5adc4ec1ffba0cbb584f86b8907",
      "tree": "96ac75e374c9a7069e07093a1c636aebf76d8a3d",
      "parents": [
        "2a12f0dcdad1ba7c0e53bbff8e5f6d0ee7a29882"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Tue May 14 13:52:38 2013 -0700"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Tue May 14 13:52:38 2013 -0700"
      },
      "message": "blk-throttle: make blk_throtl_bio() ready for hierarchy\n\nCurrently, blk_throtl_bio() issues the passed in bio directly if it\u0027s\nwithin limits of its associated tg (throtl_grp).  This behavior\nbecomes incorrect with hierarchy support as the bio should be\naccounted to and throttled by the ancestor throtl_grps too.\n\nThis patch makes the direct issue path of blk_throtl_bio() to loop\nuntil it reaches the top-level service_queue or gets throttled.  If\nthe former, the bio can be issued directly; otherwise, it gets queued\nat the first layer it was above limits.\n\nAs tg-\u003eparent_sq is always the top-level service queue currently, this\npatch in itself doesn\u0027t make any behavior differences.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nAcked-by: Vivek Goyal \u003cvgoyal@redhat.com\u003e\n"
    },
    {
      "commit": "2a12f0dcdad1ba7c0e53bbff8e5f6d0ee7a29882",
      "tree": "fd0cee6d116653a4619c941d3dc1a759edd45064",
      "parents": [
        "6e1a5704cbbd244a8db2d7d59215cf9a4c9a0d31"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Tue May 14 13:52:37 2013 -0700"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Tue May 14 13:52:37 2013 -0700"
      },
      "message": "blk-throttle: make blk_throtl_drain() ready for hierarchy\n\nThe current blk_throtl_drain() assumes that all active throtl_grps are\nqueued on throtl_data-\u003eservice_queue, which won\u0027t be true once\nhierarchy support is implemented.\n\nThis patch makes blk_throtl_drain() perform post-order walk of the\nblkg hierarchy draining each associated throtl_grp, which guarantees\nthat all bios will eventually be pushed to the top-level service_queue\nin throtl_data.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nAcked-by: Vivek Goyal \u003cvgoyal@redhat.com\u003e\n"
    },
    {
      "commit": "6e1a5704cbbd244a8db2d7d59215cf9a4c9a0d31",
      "tree": "1d81963b53b4753eb5a492e5a15f8b68f81ed58c",
      "parents": [
        "7f52f98c2a83339b89a27d01296354e5dbb90ad0"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Tue May 14 13:52:37 2013 -0700"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Tue May 14 13:52:37 2013 -0700"
      },
      "message": "blk-throttle: dispatch from throtl_pending_timer_fn()\n\nCurrently, blk_throtl_dispatch_work_fn() is responsible for both\ndispatching bio\u0027s from throtl_grp\u0027s according to their limits and then\nissuing the dispatched bios.\n\nThis patch moves the dispatch part to throtl_pending_timer_fn() so\nthat the work item is kicked iff there are bio\u0027s to issue.  This is to\navoid work item execution at each step when hierarchy support is\nenabled.  bio\u0027s will be dispatched towards the top-level service_queue\nfrom the timers at each layer and the work item will only be used to\nissue the bio\u0027s which reached the top-level service_queue.\n\nWhile fetching bio\u0027s to issue from bio_lists[],\nblk_throtl_dispatch_work_fn() fetches all READs before WRITEs.  While\nthe original code also dispatched READs first, if multiple throtl_grps\nare dispatched on the same run, WRITEs from throtl_grp which is\ndispatched first would precede READs from throtl_grps which are\ndispatched later.  While this is a behavior change, given that the\nprevious code already prioritized READs and block layer generally\nprioritizes and segregates READs from WRITEs, this isn\u0027t likely to\nmake any noticeable differences.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nAcked-by: Vivek Goyal \u003cvgoyal@redhat.com\u003e\n"
    },
    {
      "commit": "7f52f98c2a83339b89a27d01296354e5dbb90ad0",
      "tree": "90306fe5385ad770db8be8b1242ee5a3f114ca84",
      "parents": [
        "69df0ab030c94e851b77991c2f5e00bcf5294edc"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Tue May 14 13:52:37 2013 -0700"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Tue May 14 13:52:37 2013 -0700"
      },
      "message": "blk-throttle: implement dispatch looping\n\nthrotl_select_dispatch() only dispatches throtl_quantum bios on each\ninvocation.  blk_throtl_dispatch_work_fn() in turn depends on\nthrotl_schedule_next_dispatch() scheduling the next dispatch window\nimmediately so that undue delays aren\u0027t incurred.  This effectively\nchains multiple dispatch work item executions back-to-back when there\nare more than throtl_quantum bios to dispatch on a given tick.\n\nThere is no reason to finish the current work item just to repeat it\nimmediately.  This patch makes throtl_schedule_next_dispatch() return\n%false without doing anything if the current dispatch window is still\nopen and updates blk_throtl_dispatch_work_fn() repeat dispatching\nafter cpu_relax() on %false return.\n\nThis change will help implementing hierarchy support as dispatching\nwill be done from pending_timer and immediate reschedule of timer\nfunction isn\u0027t supported and doesn\u0027t make much sense.\n\nWhile this patch changes how dispatch behaves when there are more than\nthrotl_quantum bios to dispatch on a single tick, the behavior change\nis immaterial.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nAcked-by: Vivek Goyal \u003cvgoyal@redhat.com\u003e\n"
    },
    {
      "commit": "69df0ab030c94e851b77991c2f5e00bcf5294edc",
      "tree": "7518c771046787207e92fee1952ec1d4d8cc13f0",
      "parents": [
        "2a0f61e6ecd08d260054bde4b096ff207ce5350f"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Tue May 14 13:52:36 2013 -0700"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Tue May 14 13:52:36 2013 -0700"
      },
      "message": "blk-throttle: separate out throtl_service_queue-\u003epending_timer from throtl_data-\u003edispatch_work\n\nCurrently, throtl_data-\u003edispatch_work is a delayed_work item which\nhandles both delayed dispatch and issuing bios.  The two tasks will be\nseparated to support proper hierarchy.  To prepare for that, this\npatch separates out the timer into throtl_service_queue-\u003epending_timer\nfrom throtl_data-\u003edispatch_work and make the latter a work_struct.\n\n* As the timer is now per-service_queue, it\u0027s initialized and\n  del_sync\u0027d as its corresponding service_queue is created and\n  destroyed.  The timer, when triggered, simply schedules\n  throtl_data-\u003edispathc_work for execution.\n\n* throtl_schedule_delayed_work() is renamed to\n  throtl_schedule_pending_timer() and takes @sq and @expires now.\n\n* Simiarly, throtl_schedule_next_dispatch() now takes @sq, which\n  should be the parent_sq of the service_queue which just got a new\n  bio or updated.  As the parent_sq is always the top-level\n  service_queue now, this doesn\u0027t change anything at this point.\n\nThis patch doesn\u0027t introduce any behavior differences.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nAcked-by: Vivek Goyal \u003cvgoyal@redhat.com\u003e\n"
    },
    {
      "commit": "2a0f61e6ecd08d260054bde4b096ff207ce5350f",
      "tree": "7ff768d67f66aa79c806a56ff8a9d5a0ff59e6e4",
      "parents": [
        "fda6f272c77a7acd798bb247fadc4791574e698b"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Tue May 14 13:52:36 2013 -0700"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Tue May 14 13:52:36 2013 -0700"
      },
      "message": "blk-throttle: set REQ_THROTTLED from throtl_charge_bio() and gate stats update with it\n\nWith proper hierarchy support, a bio can be dispatched multiple times\nuntil it reaches the top-level service_queue and we don\u0027t want to\nupdate dispatch stats at each step.  They are local stats and will be\nkept local.  If recursive stats are necessary, they should be\nimplemented separately and definitely not by updating counters\nrecursively on each dispatch.\n\nThis patch moves REQ_THROTTLED setting to throtl_charge_bio() and gate\nstats update with it so that dispatch stats are updated only on the\nfirst time the bio is charged to a throtl_grp, which will always be\nthe throtl_grp the bio was originally queued to.\n\nThis means that REQ_THROTTLED would be set even for bios which don\u0027t\nget throttled.  As we don\u0027t want bios to leave blk-throtl with the\nflag set, move REQ_THROTLLED clearing to the end of blk_throtl_bio()\nand clear if the bio is being issued directly.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nAcked-by: Vivek Goyal \u003cvgoyal@redhat.com\u003e\n"
    },
    {
      "commit": "fda6f272c77a7acd798bb247fadc4791574e698b",
      "tree": "6814838dcd260197342db0c411cf0ad9173a0daa",
      "parents": [
        "77216b0484817817a18aaa6b089dffe49070f7c1"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Tue May 14 13:52:36 2013 -0700"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Tue May 14 13:52:36 2013 -0700"
      },
      "message": "blk-throttle: implement sq_to_tg(), sq_to_td() and throtl_log()\n\nNow that both throtl_data and throtl_grp embed throtl_service_queue,\nwe can unify throtl_log() and throtl_log_tg().\n\n* sq_to_tg() is added.  This returns the throtl_grp a service_queue is\n  embedded in.  If the service_queue is the top-level one embedded in\n  throtl_data, NULL is returned.\n\n* sq_to_td() is added.  A service_queue is always associated with a\n  throtl_data.  This function finds the associated td and returns it.\n\n* throtl_log() is updated to take throtl_service_queue instead of\n  throtl_data.  If the service_queue is one embedded in throtl_grp, it\n  prints the same header as throtl_log_tg() did.  If it\u0027s one embedded\n  in throtl_data, it behaves the same as before.  This renders\n  throtl_log_tg() unnecessary.  Removed.\n\nThis change is necessary for hierarchy support as we\u0027re gonna be using\nthe same code paths to dispatch bios to intermediate service_queues\nembedded in throtl_grps and the top-level service_queue embedded in\nthrotl_data.\n\nThis patch doesn\u0027t make any behavior changes.\n\nv2: throtl_log() didn\u0027t print a space after blkg path.  Updated so\n    that it prints a space after throtl_grp path.  Spotted by Vivek.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nAcked-by: Vivek Goyal \u003cvgoyal@redhat.com\u003e\n"
    },
    {
      "commit": "77216b0484817817a18aaa6b089dffe49070f7c1",
      "tree": "58228fd8ca266bf0437a8bf9ad052645a1c6ac88",
      "parents": [
        "0e9f4164ba915052918a77ecb2a59822dbfd661c"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Tue May 14 13:52:36 2013 -0700"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Tue May 14 13:52:36 2013 -0700"
      },
      "message": "blk-throttle: add throtl_service_queue-\u003eparent_sq\n\nTo prepare for hierarchy support, this patch adds\nthrotl_service_queue-\u003eservice_sq which points to the arent\nservice_queue.  Currently, for all service_queues embedded in\nthrotl_grps, it points to throtl_data-\u003eservice_queue.  As\nthrotl_data-\u003eservice_queue doesn\u0027t have a parent its parent_sq is set\nto NULL.\n\nThere are a number of functions which take both throtl_grp *tg and\nthrotl_service_queue *parent_sq.  With this patch, the parent\nservice_queue can be determined from @tg and the @parent_sq arguments\nare removed.\n\nThis patch doesn\u0027t make any behavior differences.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nAcked-by: Vivek Goyal \u003cvgoyal@redhat.com\u003e\n"
    },
    {
      "commit": "0e9f4164ba915052918a77ecb2a59822dbfd661c",
      "tree": "3b9756ee1b216b9f8a9ed5e53623e4036971912b",
      "parents": [
        "651930bc1c2a2550fde93a8cfa1a201c363a0ca1"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Tue May 14 13:52:35 2013 -0700"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Tue May 14 13:52:35 2013 -0700"
      },
      "message": "blk-throttle: generalize update_disptime optimization in blk_throtl_bio()\n\nWhen blk_throtl_bio() wants to queue a bio to a tg (throtl_grp), it\navoids invoking tg_update_disptime() and\nthrotl_schedule_next_dispatch() if the tg already has bios queued in\nthat direction.  As a new bio is appeneded after the existing ones, it\ncan\u0027t change the tg\u0027s next dispatch time or the parent\u0027s dispatch\nschedule.\n\nThis optimization is currently open coded in blk_throtl_bio().\nWhether the target biolist was occupied was recorded in a local\nvariable and later used to skip disptime update.  This patch moves\ngeneralizes it so that throtl_add_bio_tg() sets a new flag\nTHROTL_TG_WAS_EMPTY if the biolist was empty before the new bio was\nadded.  tg_update_disptime() clears the flag automatically.\nblk_throtl_bio() is updated to simply test the flag before updating\ndisptime.\n\nThis patch doesn\u0027t make any functional differences now but will enable\nusing the same optimization for recursive dispatch.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nAcked-by: Vivek Goyal \u003cvgoyal@redhat.com\u003e\n"
    }
  ],
  "next": "651930bc1c2a2550fde93a8cfa1a201c363a0ca1"
}
