)]}'
{
  "log": [
    {
      "commit": "c553f8e335c00a7cff3ab3f13e793b13d3f2207f",
      "tree": "f9371c9e1191711dd2e774e04d99f3fa90d697fa",
      "parents": [
        "f8ae6e3eb8251be32c6e913393d9f8d9e0609489"
      ],
      "author": {
        "name": "Shaohua Li",
        "email": "shaohua.li@intel.com",
        "time": "Fri Jan 14 08:41:03 2011 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Fri Jan 14 08:41:03 2011 +0100"
      },
      "message": "block cfq: compensate preempted queue even if it has no slice assigned\n\nIf a queue is preempted before it gets slice assigned, the queue doesn\u0027t get\ncompensation, which looks unfair. For such queue, we compensate it for a whole\nslice.\n\nSigned-off-by: Shaohua Li \u003cshaohua.li@intel.com\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "f8ae6e3eb8251be32c6e913393d9f8d9e0609489",
      "tree": "50b096572a4f8e7992e7e7e2e599e77d334c2b5b",
      "parents": [
        "52cfd503ad7176d23a5dd7af3981744feb60622f"
      ],
      "author": {
        "name": "Shaohua Li",
        "email": "shaohua.li@intel.com",
        "time": "Fri Jan 14 08:41:02 2011 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Fri Jan 14 08:41:02 2011 +0100"
      },
      "message": "block cfq: make queue preempt work for queues from different workload\n\nI got this:\n             fio-874   [007]  2157.724514:   8,32   m   N cfq874 preempt\n             fio-874   [007]  2157.724519:   8,32   m   N cfq830 slice expired t\u003d1\n             fio-874   [007]  2157.724520:   8,32   m   N cfq830 sl_used\u003d1 disp\u003d0 charge\u003d1 iops\u003d0 sect\u003d0\n             fio-874   [007]  2157.724521:   8,32   m   N cfq830 set_active wl_prio:0 wl_type:0\n             fio-874   [007]  2157.724522:   8,32   m   N cfq830 Not idling. st-\u003ecount:1\n\ncfq830 is an async queue, and preempted by a sync queue cfq874. But since we\nhave cfqg-\u003esaved_workload_slice mechanism, the preempt is a nop.\nLooks currently our preempt is totally broken if the two queues are not from\nthe same workload type.\nBelow patch fixes it. This will might make async queue starvation, but it\u0027s\nwhat our old code does before cgroup is added.\n\nSigned-off-by: Shaohua Li \u003cshaohua.li@intel.com\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "275220f0fcff1adf28a717076e00f575edf05fda",
      "tree": "d249bccc80c64443dab211639050c4fb14332648",
      "parents": [
        "fe3c560b8a22cb28e54fe8950abef38e88d75831",
        "81c5e2ae33c4b19e53966b427e33646bf6811830"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 13 10:45:01 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 13 10:45:01 2011 -0800"
      },
      "message": "Merge branch \u0027for-2.6.38/core\u0027 of git://git.kernel.dk/linux-2.6-block\n\n* \u0027for-2.6.38/core\u0027 of git://git.kernel.dk/linux-2.6-block: (43 commits)\n  block: ensure that completion error gets properly traced\n  blktrace: add missing probe argument to block_bio_complete\n  block cfq: don\u0027t use atomic_t for cfq_group\n  block cfq: don\u0027t use atomic_t for cfq_queue\n  block: trace event block fix unassigned field\n  block: add internal hd part table references\n  block: fix accounting bug on cross partition merges\n  kref: add kref_test_and_get\n  bio-integrity: mark kintegrityd_wq highpri and CPU intensive\n  block: make kblockd_workqueue smarter\n  Revert \"sd: implement sd_check_events()\"\n  block: Clean up exit_io_context() source code.\n  Fix compile warnings due to missing removal of a \u0027ret\u0027 variable\n  fs/block: type signature of major_to_index(int) to major_to_index(unsigned)\n  block: convert !IS_ERR(p) \u0026\u0026 p to !IS_ERR_NOR_NULL(p)\n  cfq-iosched: don\u0027t check cfqg in choose_service_tree()\n  fs/splice: Pull buf-\u003eops-\u003econfirm() from splice_from_pipe actors\n  cdrom: export cdrom_check_events()\n  sd: implement sd_check_events()\n  sr: implement sr_check_events()\n  ...\n"
    },
    {
      "commit": "81c5e2ae33c4b19e53966b427e33646bf6811830",
      "tree": "a602a6dd100165c8948bfa713e6f0b422dcba5d8",
      "parents": [
        "797a455d2c682476c3797dbfecf5bf84c1e3b9d3",
        "fcc57045d53edc35bcce456e60ac4aa802712934"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Thu Jan 13 14:47:54 2011 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Thu Jan 13 14:47:54 2011 +0100"
      },
      "message": "Merge branch \u0027for-2.6.38/event-handling\u0027 into for-2.6.38/core\n"
    },
    {
      "commit": "329a67815b596d23daf0caa588ae0800e925320f",
      "tree": "5fcf8a7c4a4d43b2cc7dc220d6bb25bdf27d153f",
      "parents": [
        "30d7b9448f03f2c82d0fd44738674cc156a8ce0a"
      ],
      "author": {
        "name": "Shaohua Li",
        "email": "shaohua.li@intel.com",
        "time": "Fri Jan 07 08:48:28 2011 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Fri Jan 07 08:48:28 2011 +0100"
      },
      "message": "block cfq: don\u0027t use atomic_t for cfq_group\n\ncfq_group-\u003eref is used with queue_lock hold, the only exception is\ncfq_set_request, which looks like a bug to me, so ref doesn\u0027t need\nto be an atomic and atomic operation is slower.\n\nSigned-off-by: Shaohua Li \u003cshaohua.li@intel.com\u003e\nReviewed-by: Jeff Moyer \u003cjmoyer@redhat.com\u003e\nAcked-by: Vivek Goyal \u003cvgoyal@redhat.com\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "30d7b9448f03f2c82d0fd44738674cc156a8ce0a",
      "tree": "f925a59dfe6a7b2da5240e9d43d873de7b1de273",
      "parents": [
        "b7908c1035af7652cd613991b54dbff9c8b6bd3a"
      ],
      "author": {
        "name": "Shaohua Li",
        "email": "shaohua.li@intel.com",
        "time": "Fri Jan 07 08:46:59 2011 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Fri Jan 07 08:46:59 2011 +0100"
      },
      "message": "block cfq: don\u0027t use atomic_t for cfq_queue\n\ncfq_queue-\u003eref is used with queue_lock hold, so ref doesn\u0027t need to be an atomic\nand atomic operation is slower.\n\nSigned-off-by: Shaohua Li \u003cshaohua.li@intel.com\u003e\nReviewed-by: Jeff Moyer \u003cjmoyer@redhat.com\u003e\nAcked-by: Vivek Goyal \u003cvgoyal@redhat.com\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "6c23a9681c0fe7fb7dd331b39dda11926f43746e",
      "tree": "bf113a475a17faa866e7e59806378107dcb3aa40",
      "parents": [
        "09e099d4bafea3b15be003d548bdf94b4b6e0e17"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Fri Jan 07 08:43:37 2011 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Fri Jan 07 08:43:37 2011 +0100"
      },
      "message": "block: add internal hd part table references\n\nWe can\u0027t use krefs since it\u0027s apparently restricted to very basic\nreference counting.\n\nThis reverts commit e4a683c8.\n\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "09e099d4bafea3b15be003d548bdf94b4b6e0e17",
      "tree": "a4199338ad73e88c0863bbfc6604c4972055f16d",
      "parents": [
        "e4a683c899cd5a49f8d684a054c95bd115a0c005"
      ],
      "author": {
        "name": "Jerome Marchand",
        "email": "jmarchan@redhat.com",
        "time": "Wed Jan 05 16:57:38 2011 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Wed Jan 05 16:57:38 2011 +0100"
      },
      "message": "block: fix accounting bug on cross partition merges\n\n/proc/diskstats would display a strange output as follows.\n\n$ cat /proc/diskstats |grep sda\n   8       0 sda 90524 7579 102154 20464 0 0 0 0 0 14096 20089\n   8       1 sda1 19085 1352 21841 4209 0 0 0 0 4294967064 15689 4293424691\n                                                ~~~~~~~~~~\n   8       2 sda2 71252 3624 74891 15950 0 0 0 0 232 23995 1562390\n   8       3 sda3 54 487 2188 92 0 0 0 0 0 88 92\n   8       4 sda4 4 0 8 0 0 0 0 0 0 0 0\n   8       5 sda5 81 2027 2130 138 0 0 0 0 0 87 137\n\nIts reason is the wrong way of accounting hd_struct-\u003ein_flight. When a bio is\nmerged into a request belongs to different partition by ELEVATOR_FRONT_MERGE.\n\nThe detailed root cause is as follows.\n\nAssuming that there are two partition, sda1 and sda2.\n\n1. A request for sda2 is in request_queue. Hence sda1\u0027s hd_struct-\u003ein_flight\n   is 0 and sda2\u0027s one is 1.\n\n        | hd_struct-\u003ein_flight\n   ---------------------------\n   sda1 |          0\n   sda2 |          1\n   ---------------------------\n\n2. A bio belongs to sda1 is issued and is merged into the request mentioned on\n   step1 by ELEVATOR_BACK_MERGE. The first sector of the request is changed\n   from sda2 region to sda1 region. However the two partition\u0027s\n   hd_struct-\u003ein_flight are not changed.\n\n        | hd_struct-\u003ein_flight\n   ---------------------------\n   sda1 |          0\n   sda2 |          1\n   ---------------------------\n\n3. The request is finished and blk_account_io_done() is called. In this case,\n   sda2\u0027s hd_struct-\u003ein_flight, not a sda1\u0027s one, is decremented.\n\n        | hd_struct-\u003ein_flight\n   ---------------------------\n   sda1 |         -1\n   sda2 |          1\n   ---------------------------\n\nThe patch fixes the problem by caching the partition lookup\ninside the request structure, hence making sure that the increment\nand decrement will always happen on the same partition struct. This\nalso speeds up IO with accounting enabled, since it cuts down on\nthe number of lookups we have to do.\n\nAlso add a refcount to struct hd_struct to keep the partition in\nmemory as long as users exist. We use kref_test_and_get() to ensure\nwe don\u0027t add a reference to a partition which is going away.\n\nSigned-off-by: Jerome Marchand \u003cjmarchan@redhat.com\u003e\nSigned-off-by: Yasuaki Ishimatsu \u003cisimatu.yasuaki@jp.fujitsu.com\u003e\nCc: stable@kernel.org\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "89b90be2d877a904b1704e4029db65655bfc6282",
      "tree": "0dbeda7f0efa17373bdd3c59793a36c417fa9d1c",
      "parents": [
        "27667c996f6a0bed4ad1e10ac0a0dbb6037968db"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Mon Jan 03 15:01:47 2011 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Mon Jan 03 15:01:47 2011 +0100"
      },
      "message": "block: make kblockd_workqueue smarter\n\nkblockd is used for unplugging and may affect IO latency and\nthroughput and the max number of concurrent work items are bound by\nthe number of block devices.  Make it HIGHPRI workqueue w/ default max\nconcurrency.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "4b7bd364700d9ac8372eff48832062b936d0793b",
      "tree": "0dbf78c95456a0b02d07fcd473281f04a87e266d",
      "parents": [
        "c0d8768af260e2cbb4bf659ae6094a262c86b085",
        "90a8a73c06cc32b609a880d48449d7083327e11a"
      ],
      "author": {
        "name": "Jiri Kosina",
        "email": "jkosina@suse.cz",
        "time": "Wed Dec 22 18:57:02 2010 +0100"
      },
      "committer": {
        "name": "Jiri Kosina",
        "email": "jkosina@suse.cz",
        "time": "Wed Dec 22 18:57:02 2010 +0100"
      },
      "message": "Merge branch \u0027master\u0027 into for-next\n\nConflicts:\n\tMAINTAINERS\n\tarch/arm/mach-omap2/pm24xx.c\n\tdrivers/scsi/bfa/bfa_fcpim.c\n\nNeeded to update to apply fixes for which the old branch was too\noutdated.\n"
    },
    {
      "commit": "27667c996f6a0bed4ad1e10ac0a0dbb6037968db",
      "tree": "dcbcd7354f6ccaa3fe88fdf0a0a5f1e168ff8c40",
      "parents": [
        "3603b8eaccc8e41d3f355b3cadd662a3dd6699fd"
      ],
      "author": {
        "name": "Bart Van Assche",
        "email": "bvanassche@acm.org",
        "time": "Tue Dec 21 15:07:45 2010 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Tue Dec 21 15:07:45 2010 +0100"
      },
      "message": "block: Clean up exit_io_context() source code.\n\nThis patch fixes a spelling error in a source code comment and removes\nsuperfluous braces in the function exit_io_context().\n\nSigned-off-by: Bart Van Assche \u003cbvanassche@acm.org\u003e\nCc: Jens Axboe \u003cjaxboe@fusionio.com\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "7f8635cc9e66a26d7280ba680b044fa2f65104af",
      "tree": "0d8506e86d07e15c473aca1a09af7ad6ff7d8b49",
      "parents": [
        "3cb50ddf97a0a1ca4c68bc12fa1e727a6b45fbf2",
        "0fc13c8995cd96f4123de400c71c223d80400ed9"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Dec 20 09:19:46 2010 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Dec 20 09:19:46 2010 -0800"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.dk/linux-2.6-block\n\n* \u0027for-linus\u0027 of git://git.kernel.dk/linux-2.6-block:\n  cciss: fix cciss_revalidate panic\n  block: max hardware sectors limit wrapper\n  block: Deprecate QUEUE_FLAG_CLUSTER and use queue_limits instead\n  blk-throttle: Correct the placement of smp_rmb()\n  blk-throttle: Trim/adjust slice_end once a bio has been dispatched\n  block: check for proper length of iov entries earlier in blk_rq_map_user_iov()\n  drbd: fix for spin_lock_irqsave in endio callback\n  drbd: don\u0027t recvmsg with zero length\n"
    },
    {
      "commit": "e61eb2e93fe86931d46831752a82dab25a5335ca",
      "tree": "631aeb9bf8614903972a6a9945040a4d528f1029",
      "parents": [
        "b9f985b6e05ebd7af2aaef0eb3ae369390ef191f"
      ],
      "author": {
        "name": "Yang Zhang",
        "email": "kthreadd@gmail.com",
        "time": "Fri Dec 17 09:00:18 2010 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Fri Dec 17 09:00:18 2010 +0100"
      },
      "message": "fs/block: type signature of major_to_index(int) to major_to_index(unsigned)\n\nThe major/minor device numbers are always defined and used as `unsigned\u0027.\n\nSigned-off-by: Yang Zhang \u003ckthreadd@gmail.com\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "b9f985b6e05ebd7af2aaef0eb3ae369390ef191f",
      "tree": "69aa4bd9501f988302a155ebfdc630bd2a37bfde",
      "parents": [
        "7278c9c19bd85cf33213a2e0b538a18d3ac8ad00"
      ],
      "author": {
        "name": "Yang Zhang",
        "email": "kthreadd@gmail.com",
        "time": "Fri Dec 17 08:58:36 2010 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Fri Dec 17 08:58:36 2010 +0100"
      },
      "message": "block: convert !IS_ERR(p) \u0026\u0026 p to !IS_ERR_NOR_NULL(p)\n\nSigned-off-by: Yang Zhang \u003ckthreadd@gmail.com\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "7278c9c19bd85cf33213a2e0b538a18d3ac8ad00",
      "tree": "e080ada1f8cc00fef4600976f8cf489cc94d1c03",
      "parents": [
        "a8adbe378b56acd5945df70753c7e8f6fe223304"
      ],
      "author": {
        "name": "Gui Jianfeng",
        "email": "guijianfeng@cn.fujitsu.com",
        "time": "Fri Dec 17 08:57:14 2010 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Fri Dec 17 08:57:14 2010 +0100"
      },
      "message": "cfq-iosched: don\u0027t check cfqg in choose_service_tree()\n\nWhen cfq_choose_cfqg() is called in select_queue(), there must be at least one\nbacklogged CFQ queue waiting for dispatching, hence there must be at least one\nbacklogged CFQ group on service tree. So we never call choose_service_tree()\nwith cfqg \u003d\u003d NULL.\n\nSigned-off-by: Gui Jianfeng \u003cguijianfeng@cn.fujitsu.com\u003e\nReviewed-by: Jeff Moyer \u003cjmoyer@redhat.com\u003e\nAcked-by: Vivek Goyal \u003cvgoyal@redhat.com\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "72d4cd9f38b5ed96b75df4c622be25e1c2648dd3",
      "tree": "a229645cbbc63aad3fa5b57ea9f092e618588890",
      "parents": [
        "e692cb668fdd5a712c6ed2a2d6f2a36ee83997b4"
      ],
      "author": {
        "name": "Mike Snitzer",
        "email": "snitzer@redhat.com",
        "time": "Fri Dec 17 08:34:20 2010 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Fri Dec 17 08:36:01 2010 +0100"
      },
      "message": "block: max hardware sectors limit wrapper\n\nImplement blk_limits_max_hw_sectors() and make\nblk_queue_max_hw_sectors() a wrapper around it.\n\nDM needs this to avoid setting queue_limits\u0027 max_hw_sectors and\nmax_sectors directly.  dm_set_device_limits() now leverages\nblk_limits_max_hw_sectors() logic to establish the appropriate\nmax_hw_sectors minimum (PAGE_SIZE).  Fixes issue where DM was\nincorrectly setting max_sectors rather than max_hw_sectors (which\ncaused dm_merge_bvec()\u0027s max_hw_sectors check to be ineffective).\n\nSigned-off-by: Mike Snitzer \u003csnitzer@redhat.com\u003e\nCc: stable@kernel.org\nAcked-by: Martin K. Petersen \u003cmartin.petersen@oracle.com\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "e692cb668fdd5a712c6ed2a2d6f2a36ee83997b4",
      "tree": "accf682fe5e1388f305b5fc364a931dfda5f3fb9",
      "parents": [
        "04a6b516cdc6efc2500b52a540cf65be8c5aaf9e"
      ],
      "author": {
        "name": "Martin K. Petersen",
        "email": "martin.petersen@oracle.com",
        "time": "Wed Dec 01 19:41:49 2010 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Fri Dec 17 08:35:53 2010 +0100"
      },
      "message": "block: Deprecate QUEUE_FLAG_CLUSTER and use queue_limits instead\n\nWhen stacking devices, a request_queue is not always available. This\nforced us to have a no_cluster flag in the queue_limits that could be\nused as a carrier until the request_queue had been set up for a\nmetadevice.\n\nThere were several problems with that approach. First of all it was up\nto the stacking device to remember to set queue flag after stacking had\ncompleted. Also, the queue flag and the queue limits had to be kept in\nsync at all times. We got that wrong, which could lead to us issuing\ncommands that went beyond the max scatterlist limit set by the driver.\n\nThe proper fix is to avoid having two flags for tracking the same thing.\nWe deprecate QUEUE_FLAG_CLUSTER and use the queue limit directly in the\nblock layer merging functions. The queue_limit \u0027no_cluster\u0027 is turned\ninto \u0027cluster\u0027 to avoid double negatives and to ease stacking.\nClustering defaults to being enabled as before. The queue flag logic is\nremoved from the stacking function, and explicitly setting the cluster\nflag is no longer necessary in DM and MD.\n\nReported-by: Ed Lin \u003ced.lin@promise.com\u003e\nSigned-off-by: Martin K. Petersen \u003cmartin.petersen@oracle.com\u003e\nAcked-by: Mike Snitzer \u003csnitzer@redhat.com\u003e\nCc: stable@kernel.org\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "77ea887e433ad8389d416826936c110fa7910f80",
      "tree": "ac9d32aabcebf5a465acae2066b12c9335b5ca6f",
      "parents": [
        "d2bf1b6723ed0eab378363649d15b7893bf14e91"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Wed Dec 08 20:57:37 2010 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Thu Dec 16 17:53:38 2010 +0100"
      },
      "message": "implement in-kernel gendisk events handling\n\nCurrently, media presence polling for removeable block devices is done\nfrom userland.  There are several issues with this.\n\n* Polling is done by periodically opening the device.  For SCSI\n  devices, the command sequence generated by such action involves a\n  few different commands including TEST_UNIT_READY.  This behavior,\n  while perfectly legal, is different from Windows which only issues\n  single command, GET_EVENT_STATUS_NOTIFICATION.  Unfortunately, some\n  ATAPI devices lock up after being periodically queried such command\n  sequences.\n\n* There is no reliable and unintrusive way for a userland program to\n  tell whether the target device is safe for media presence polling.\n  For example, polling for media presence during an on-going burning\n  session can make it fail.  The polling program can avoid this by\n  opening the device with O_EXCL but then it risks making a valid\n  exclusive user of the device fail w/ -EBUSY.\n\n* Userland polling is unnecessarily heavy and in-kernel implementation\n  is lighter and better coordinated (workqueue, timer slack).\n\nThis patch implements framework for in-kernel disk event handling,\nwhich includes media presence polling.\n\n* bdops-\u003echeck_events() is added, which supercedes -\u003emedia_changed().\n  It should check whether there\u0027s any pending event and return if so.\n  Currently, two events are defined - DISK_EVENT_MEDIA_CHANGE and\n  DISK_EVENT_EJECT_REQUEST.  -\u003echeck_events() is guaranteed not to be\n  called parallelly.\n\n* gendisk-\u003eevents and -\u003easync_events are added.  These should be\n  initialized by block driver before passing the device to add_disk().\n  The former contains the mask of all supported events and the latter\n  the mask of all events which the device can report without polling.\n  /sys/block/*/events[_async] export these to userland.\n\n* Kernel parameter block.events_dfl_poll_msecs controls the system\n  polling interval (default is 0 which means disable) and\n  /sys/block/*/events_poll_msecs control polling intervals for\n  individual devices (default is -1 meaning use system setting).  Note\n  that if a device can report all supported events asynchronously and\n  its polling interval isn\u0027t explicitly set, the device won\u0027t be\n  polled regardless of the system polling interval.\n\n* If a device is opened exclusively with write access, event checking\n  is automatically disabled until all write exclusive accesses are\n  released.\n\n* There are event \u0027clearing\u0027 events.  For example, both of currently\n  defined events are cleared after the device has been successfully\n  opened.  This information is passed to -\u003echeck_events() callback\n  using @clearing argument as a hint.\n\n* Event checking is always performed from system_nrt_wq and timer\n  slack is set to 25% for polling.\n\n* Nothing changes for drivers which implement -\u003emedia_changed() but\n  not -\u003echeck_events().  Going forward, all drivers will be converted\n  to -\u003echeck_events() and -\u003emedia_change() will be dropped.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nCc: Kay Sievers \u003ckay.sievers@vrfy.org\u003e\nCc: Jan Kara \u003cjack@suse.cz\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "d2bf1b6723ed0eab378363649d15b7893bf14e91",
      "tree": "4a4144b09ab747ad661605aa761753d9a805e77f",
      "parents": [
        "dddd9dc340ae1a41d90e084529ca979c77c4ecfe"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Wed Dec 08 20:57:36 2010 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Thu Dec 16 17:53:38 2010 +0100"
      },
      "message": "block: move register_disk() and del_gendisk() to block/genhd.c\n\nThere\u0027s no reason for register_disk() and del_gendisk() to be in\nfs/partitions/check.c.  Move both to genhd.c.  While at it, collapse\nunlink_gendisk(), which was artificially in a separate function due to\ngenhd.c / check.c split, into del_gendisk().\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "dddd9dc340ae1a41d90e084529ca979c77c4ecfe",
      "tree": "7ab2dba891308a0c9209d71ecc8d620260b8674b",
      "parents": [
        "e4ea0c16a85d221ebcc3a21f32e321440459e0fc"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Wed Dec 08 20:57:35 2010 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Thu Dec 16 17:53:38 2010 +0100"
      },
      "message": "block: kill genhd_media_change_notify()\n\nThere\u0027s no user of the facility.  Kill it.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "e4ea0c16a85d221ebcc3a21f32e321440459e0fc",
      "tree": "47acf4da84f9a448e6eb6172a5440ccc60696ed9",
      "parents": [
        "760701bfe14faee8ea0608a9cab2046071d98a39"
      ],
      "author": {
        "name": "Shaohua Li writes",
        "email": "shaohua.li@intel.com",
        "time": "Mon Dec 13 14:32:22 2010 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Mon Dec 13 14:32:22 2010 +0100"
      },
      "message": "block cfq: select new workload if priority changed\n\nIf priority is changed, continuing to check workload_expires and service tree\ncount of the previous workload does not make sense. We should always choose\nthe workload with lowest key of new priority in such case.\n\nSigned-off-by: Shaohua Li \u003cshaohua.li@intel.com\u003e\nReviewed-by: Jeff Moyer \u003cjmoyer@redhat.com\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "c7a841f3aca469187db76842676951a672fd27d1",
      "tree": "6819d796270f9b4c5eb4cae374a69ab1988d384a",
      "parents": [
        "057f02a38e67a944a2d0b89bb0111efb9dbe6e6e"
      ],
      "author": {
        "name": "James Smart",
        "email": "james.smart@emulex.com",
        "time": "Sun Nov 14 11:12:04 2010 -0500"
      },
      "committer": {
        "name": "James Bottomley",
        "email": "James.Bottomley@suse.de",
        "time": "Thu Dec 09 09:41:14 2010 -0600"
      },
      "message": "[SCSI] bsg: correct fault if queue object removed while dev_t open\n\nThis patch corrects an issue in bsg that results in a general protection\nfault if an LLD is removed while an application is using an open file\nhandle to a bsg device, and the application issues an ioctl. The fault\noccurs because the class_dev is NULL, having been cleared in\nbsg_unregister_queue() when the driver was removed.  With this\npatch, a check is made for the class_dev, and the application\nwill receive ENXIO if the related object is gone.\n\nSigned-off-by: Carl Lajeunesse \u003ccarl.lajeunesse@emulex.com\u003e\nSigned-off-by: James Smart \u003cjames.smart@emulex.com\u003e\nSigned-off-by: James Bottomley \u003cJames.Bottomley@suse.de\u003e\n"
    },
    {
      "commit": "04a6b516cdc6efc2500b52a540cf65be8c5aaf9e",
      "tree": "fa5d6675308df0ff42eceeec1b406d2ce5eb2ff6",
      "parents": [
        "d1ae8ffdfaa16b2ab2e9346e81cf0ab6eaaae347"
      ],
      "author": {
        "name": "Vivek Goyal",
        "email": "vgoyal@redhat.com",
        "time": "Wed Dec 01 19:34:52 2010 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Wed Dec 01 19:34:52 2010 +0100"
      },
      "message": "blk-throttle: Correct the placement of smp_rmb()\n\no I was discussing what are the variable being updated without spin lock and\n  why do we need barriers and Oleg pointed out that location of smp_rmb()\n  should be between read of td-\u003elimits_changed and tg-\u003elimits_changed. This\n  patch fixes it.\n\no Following is one possible sequence of events. Say cpu0 is executing\n  throtl_update_blkio_group_read_bps() and cpu1 is executing\n  throtl_process_limit_change().\n\n cpu0                                                cpu1\n\n tg-\u003elimits_changed \u003d true;\n smp_mb__before_atomic_inc();\n atomic_inc(\u0026td-\u003elimits_changed);\n\n                                     if (!atomic_read(\u0026td-\u003elimits_changed))\n                                             return;\n\n                                     if (tg-\u003elimits_changed)\n                                             do_something;\n\n If cpu0 has updated tg-\u003elimits_changed and td-\u003elimits_changed, we want to\n make sure that if update to td-\u003elimits_changed is visible on cpu1, then\n update to tg-\u003elimits_changed should also be visible.\n\n Oleg pointed out to ensure that we need to insert an smp_rmb() between\n td-\u003elimits_changed read and tg-\u003elimits_changed read.\n\no I had erroneously put smp_rmb() before atomic_read(\u0026td-\u003elimits_changed).\n  This patch fixes it.\n\nReported-by: Oleg Nesterov \u003coleg@redhat.com\u003e\nSigned-off-by: Vivek Goyal \u003cvgoyal@redhat.com\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "d1ae8ffdfaa16b2ab2e9346e81cf0ab6eaaae347",
      "tree": "d34fabaf556ec4471e076b4794fa1de8515956f0",
      "parents": [
        "5478755616ae2ef1ce144dded589b62b2a50d575"
      ],
      "author": {
        "name": "Vivek Goyal",
        "email": "vgoyal@redhat.com",
        "time": "Wed Dec 01 19:34:46 2010 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Wed Dec 01 19:34:46 2010 +0100"
      },
      "message": "blk-throttle: Trim/adjust slice_end once a bio has been dispatched\n\no During some testing I did following and noticed throttling stops working.\n\n        - Put a very low limit on a cgroup, say 1 byte per second.\n        - Start some reads, this will set slice_end to a very high value.\n        - Change the limit to higher value say 1MB/s\n        - Now IO unthrottles and finishes as expected.\n        - Try to do the read again but IO is not limited to 1MB/s as expected.\n\no What is happening.\n        - Initially low value of limit sets slice_end to a very high value.\n        - During updation of limit, slice_end is not being truncated.\n        - Very high value of slice_end leads to keeping the existing slice\n          valid for a very long time and new slice does not start.\n        - tg_may_dispatch() is called in blk_throtle_bio(), and trim_slice()\n          is not called in this path. So slice_start is some old value and\n          practically we are able to do huge amount of IO.\n\no There are many ways it can be fixed. I have fixed it by trying to\n  adjust/cleanup slice_end in trim_slice(). Generally we extend slices if bio\n  is big and can\u0027t be dispatched in one slice. After dispatch of bio, readjust\n  the slice_end to make sure we don\u0027t end up with huge values.\n\nSigned-off-by: Vivek Goyal \u003cvgoyal@redhat.com\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "760701bfe14faee8ea0608a9cab2046071d98a39",
      "tree": "780193b7803aced7ecb2a53f0ce43150eb8ebeab",
      "parents": [
        "b54ce60eb7f61f8e314b8b241b0469eda3bb1d42"
      ],
      "author": {
        "name": "Gui Jianfeng",
        "email": "guijianfeng@cn.fujitsu.com",
        "time": "Tue Nov 30 20:52:47 2010 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Tue Nov 30 20:52:47 2010 +0100"
      },
      "message": "cfq-iosched: Get rid of on_st flag\n\nIt\u0027s able to check whether a CFQ group on a service tree by\nchecking \"cfqg-\u003erb_node\". There\u0027s no need to maintain an\nextra flag here.\n\nSigned-off-by: Gui Jianfeng \u003cguijianfeng@cn.fujitsu.com\u003e\nAcked-by: Vivek Goyal \u003cvgoyal@redhat.com\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "b54ce60eb7f61f8e314b8b241b0469eda3bb1d42",
      "tree": "fcf25315bb0ef06ad7f9017f84fce9021768682f",
      "parents": [
        "f30195c50245d8ace628e1978b1daa8df86e7224"
      ],
      "author": {
        "name": "Gui Jianfeng",
        "email": "guijianfeng@cn.fujitsu.com",
        "time": "Tue Nov 30 20:52:46 2010 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Tue Nov 30 20:52:46 2010 +0100"
      },
      "message": "cfq-iosched: Get rid of st-\u003eactive\n\nWhen a cfq group is running, it won\u0027t be dequeued from service tree, so\nthere\u0027s no need to store the active one in st-\u003eactive. Just gid rid of it.\n\nSigned-off-by: Gui Jianfeng \u003cguijianfeng@cn.fujitsu.com\u003e\nAcked-by: Vivek Goyal \u003cvgoyal@redhat.com\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "5478755616ae2ef1ce144dded589b62b2a50d575",
      "tree": "b1dffb15dba1a924bba289beb78ea23f34782c9c",
      "parents": [
        "a115413de13ae6beb0cbfc198afe385a261ab284"
      ],
      "author": {
        "name": "Xiaotian Feng",
        "email": "dfeng@redhat.com",
        "time": "Mon Nov 29 10:03:55 2010 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Mon Nov 29 10:04:50 2010 +0100"
      },
      "message": "block: check for proper length of iov entries earlier in blk_rq_map_user_iov()\n\ncommit 9284bcf checks for proper length of iov entries in\nblk_rq_map_user_iov(). But if the map is unaligned, kernel\nwill break out the loop without checking for the proper length.\nSo we need to check the proper length before the unalign check.\n\nSigned-off-by: Xiaotian Feng \u003cdfeng@redhat.com\u003e\nCc: stable@kernel.org\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "f30195c50245d8ace628e1978b1daa8df86e7224",
      "tree": "edf4f91c4356c41d50fb07f15cebd1e6442538ad",
      "parents": [
        "d07335e51df0c6dec202d315fc4f1f7e100eec4e",
        "d4d77629953eabd3c14f6fa5746f6b28babfc55f"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Sat Nov 27 19:49:18 2010 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Sat Nov 27 19:49:18 2010 +0100"
      },
      "message": "Merge branch \u0027cleanup-bd_claim\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tj/misc into for-2.6.38/core\n"
    },
    {
      "commit": "78daa87b1d332e4ac963c793a4157533d57501c7",
      "tree": "c133840b219a446c11fa2391bb0d887e71f5809f",
      "parents": [
        "d4d2ad948e9a9c316e72fdc09d7490dfda4773da",
        "bbe425cd9ae83eacd0c9f09df2bf56dc911a54cd"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Nov 27 07:17:50 2010 +0900"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Nov 27 07:17:50 2010 +0900"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.dk/linux-2.6-block\n\n* \u0027for-linus\u0027 of git://git.kernel.dk/linux-2.6-block:\n  cciss: fix build for PROC_FS disabled\n  block: fix amiga and atari floppy driver compile warning\n  blk-throttle: Fix calculation of max number of WRITES to be dispatched\n  ioprio: grab rcu_read_lock in sys_ioprio_{set,get}()\n  xen/blkfront: cope with backend that fail empty BLKIF_OP_WRITE_BARRIER requests\n  xen/blkfront: Implement FUA with BLKIF_OP_WRITE_BARRIER\n  xen/blkfront: change blk_shadow.request to proper pointer\n  xen/blkfront: map REQ_FLUSH into a full barrier\n"
    },
    {
      "commit": "451a3c24b0135bce54542009b5fde43846c7cf67",
      "tree": "f0fbbcc155aef2a1ffcb8aa593fe7a966d0e6900",
      "parents": [
        "55f6561c6941713ab5ae9180525b026dd40b7d14"
      ],
      "author": {
        "name": "Arnd Bergmann",
        "email": "arnd@arndb.de",
        "time": "Wed Nov 17 16:26:55 2010 +0100"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Nov 17 08:59:32 2010 -0800"
      },
      "message": "BKL: remove extraneous #include \u003csmp_lock.h\u003e\n\nThe big kernel lock has been removed from all these files at some point,\nleaving only the #include.\n\nRemove this too as a cleanup.\n\nSigned-off-by: Arnd Bergmann \u003carnd@arndb.de\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "d07335e51df0c6dec202d315fc4f1f7e100eec4e",
      "tree": "db6ac1db8d87738b9e44497e082d490c14413f5d",
      "parents": [
        "5fbf85639287b6ea287f4f5e5e7e36608f0f60bd"
      ],
      "author": {
        "name": "Mike Snitzer",
        "email": "snitzer@redhat.com",
        "time": "Tue Nov 16 12:52:38 2010 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Tue Nov 16 12:53:39 2010 +0100"
      },
      "message": "block: Rename \"block_remap\" tracepoint to \"block_bio_remap\" to clarify the event.\n\nSigned-off-by: Kiyoshi Ueda \u003ck-ueda@ct.jp.nec.com\u003e\nSigned-off-by: Jun\u0027ichi Nomura \u003cj-nomura@ce.jp.nec.com\u003e\nSigned-off-by: Mike Snitzer \u003csnitzer@redhat.com\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "5fbf85639287b6ea287f4f5e5e7e36608f0f60bd",
      "tree": "608a51e6ee572dba94b43f1933e49ab88562e4c0",
      "parents": [
        "a02056349cdea2252cd2b21643ebf025e83a29f2",
        "bdc85df7a8417b9893443ff5520804699416b6f3"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Tue Nov 16 10:10:12 2010 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Tue Nov 16 10:10:12 2010 +0100"
      },
      "message": "Merge branch \u0027for-2.6.38/rc2-holder\u0027 into for-2.6.38/core\n"
    },
    {
      "commit": "a02056349cdea2252cd2b21643ebf025e83a29f2",
      "tree": "b7c889d6cbe8e7188d07d99a5c9da858c53a5b6c",
      "parents": [
        "34db1d595ef6f183fbc1e42cda45a3dfa0035258",
        "e53beacd23d9cb47590da6a7a7f6d417b941a994"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Tue Nov 16 10:09:42 2010 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Tue Nov 16 10:09:42 2010 +0100"
      },
      "message": "Merge branch \u0027v2.6.37-rc2\u0027 into for-2.6.38/core\n"
    },
    {
      "commit": "bdc85df7a8417b9893443ff5520804699416b6f3",
      "tree": "7d1158ff87d327934c0c3b0d5ec9b02ed4811de6",
      "parents": [
        "0143832cc96d0bf78486297aad5c8fb2c2ead02a"
      ],
      "author": {
        "name": "Vivek Goyal",
        "email": "vgoyal@redhat.com",
        "time": "Mon Nov 15 19:37:36 2010 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Mon Nov 15 19:37:36 2010 +0100"
      },
      "message": "blk-cgroup: Allow creation of hierarchical cgroups\n\no Allow hierarchical cgroup creation for blkio controller\n\no Currently we disallow it as both the io controller policies (throttling\n  as well as proportion bandwidth) do not support hierarhical accounting\n  and control. But the flip side is that blkio controller can not be used with\n  libvirt as libvirt creates a cgroup hierarchy deeper than 1 level.\n\n  \u003ctop-level-cgroup-dir\u003e/\u003ccontroller\u003e/libvirt/qemu/\u003cvirtual-machine-groups\u003e\n\no So this patch will allow creation of cgroup hierarhcy but at the backend\n  everything will be treated as flat. So if somebody created a an hierarchy\n  like as follows.\n\n\t\t\troot\n\t\t\t/  \\\n\t\t     test1 test2\n\t\t\t|\n\t\t     test3\n\n  CFQ and throttling will practically treat all groups at same level.\n\n\t\t\t\tpivot\n\t\t\t     /  |   \\  \\\n\t\t\troot  test1 test2  test3\n\no Once we have actual support for hierarchical accounting and control\n  then we can introduce another cgroup tunable file \"blkio.use_hierarchy\"\n  which will be 0 by default but if user wants to enforce hierarhical\n  control then it can be set to 1. This way there should not be any\n  ABI problems down the line.\n\no The only not so pretty part is introduction of extra file \"use_hierarchy\"\n  down the line. Kame-san had mentioned that hierarhical accounting is\n  expensive in memory controller hence they keep it off by default. I\n  suspect same will be the case for IO controller also as for each IO\n  completion we shall have to account IO through hierarchy up to the root.\n  if yes, then it probably is not a very bad idea to introduce this extra\n  file so that it will be used only when somebody needs it and some people\n  might enable hierarchy only in part of the hierarchy.\n\no This is how basically memory controller also uses \"use_hierarhcy\" and\n  they also allowed creation of hierarchies when actual backend support\n  was not available.\n\nSigned-off-by: Vivek Goyal \u003cvgoyal@redhat.com\u003e\nAcked-by: Balbir Singh \u003cbalbir@linux.vnet.ibm.com\u003e\nReviewed-by: Gui Jianfeng \u003cguijianfeng@cn.fujitsu.com\u003e\nReviewed-by: Ciju Rajan K \u003cciju@linux.vnet.ibm.com\u003e\nTested-by: Ciju Rajan K \u003cciju@linux.vnet.ibm.com\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "c2f6805d470af369a7337801deeecea800dbfe1c",
      "tree": "2381b8c512d611869877adfad3d5e0dfe75e668a",
      "parents": [
        "d69b78ba1deaaa95ffa8dac5a9ca819ce454d52e"
      ],
      "author": {
        "name": "Vivek Goyal",
        "email": "vgoyal@redhat.com",
        "time": "Mon Nov 15 19:32:42 2010 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Mon Nov 15 19:32:42 2010 +0100"
      },
      "message": "blk-throttle: Fix calculation of max number of WRITES to be dispatched\n\no Currently we try to dispatch more READS and less WRITES (75%, 25%) in one\n  dispatch round. ummy pointed out that there is a bug in max_nr_writes\n  calculation. This patch fixes it.\n\nReported-by: ummy y \u003cyummylln@yahoo.com.cn\u003e\nSigned-off-by: Vivek Goyal \u003cvgoyal@redhat.com\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "e525fd89d380c4a94c0d63913a1dd1a593ed25e7",
      "tree": "d226ef40d3f99e42fcf272ad432585cbd641ebec",
      "parents": [
        "e09b457bdb7e8d23fc54dcef0930ac697d8de895"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Sat Nov 13 11:55:17 2010 +0100"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Sat Nov 13 11:55:17 2010 +0100"
      },
      "message": "block: make blkdev_get/put() handle exclusive access\n\nOver time, block layer has accumulated a set of APIs dealing with bdev\nopen, close, claim and release.\n\n* blkdev_get/put() are the primary open and close functions.\n\n* bd_claim/release() deal with exclusive open.\n\n* open/close_bdev_exclusive() are combination of open and claim and\n  the other way around, respectively.\n\n* bd_link/unlink_disk_holder() to create and remove holder/slave\n  symlinks.\n\n* open_by_devnum() wraps bdget() + blkdev_get().\n\nThe interface is a bit confusing and the decoupling of open and claim\nmakes it impossible to properly guarantee exclusive access as\nin-kernel open + claim sequence can disturb the existing exclusive\nopen even before the block layer knows the current open if for another\nexclusive access.  Reorganize the interface such that,\n\n* blkdev_get() is extended to include exclusive access management.\n  @holder argument is added and, if is @FMODE_EXCL specified, it will\n  gain exclusive access atomically w.r.t. other exclusive accesses.\n\n* blkdev_put() is similarly extended.  It now takes @mode argument and\n  if @FMODE_EXCL is set, it releases an exclusive access.  Also, when\n  the last exclusive claim is released, the holder/slave symlinks are\n  removed automatically.\n\n* bd_claim/release() and close_bdev_exclusive() are no longer\n  necessary and either made static or removed.\n\n* bd_link_disk_holder() remains the same but bd_unlink_disk_holder()\n  is no longer necessary and removed.\n\n* open_bdev_exclusive() becomes a simple wrapper around lookup_bdev()\n  and blkdev_get().  It also has an unexpected extra bdev_read_only()\n  test which probably should be moved into blkdev_get().\n\n* open_by_devnum() is modified to take @holder argument and pass it to\n  blkdev_get().\n\nMost of bdev open/close operations are unified into blkdev_get/put()\nand most exclusive accesses are tested atomically at the open time (as\nit should).  This cleans up code and removes some, both valid and\ninvalid, but unnecessary all the same, corner cases.\n\nopen_bdev_exclusive() and open_by_devnum() can use further cleanup -\nrename to blkdev_get_by_path() and blkdev_get_by_devt() and drop\nspecial features.  Well, let\u0027s leave them for another day.\n\nMost conversions are straight-forward.  drbd conversion is a bit more\ninvolved as there was some reordering, but the logic should stay the\nsame.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nAcked-by: Neil Brown \u003cneilb@suse.de\u003e\nAcked-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\nAcked-by: Mike Snitzer \u003csnitzer@redhat.com\u003e\nAcked-by: Philipp Reisner \u003cphilipp.reisner@linbit.com\u003e\nCc: Peter Osterlund \u003cpetero2@telia.com\u003e\nCc: Martin Schwidefsky \u003cschwidefsky@de.ibm.com\u003e\nCc: Heiko Carstens \u003cheiko.carstens@de.ibm.com\u003e\nCc: Jan Kara \u003cjack@suse.cz\u003e\nCc: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nCc: Andreas Dilger \u003cadilger.kernel@dilger.ca\u003e\nCc: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\nCc: Mark Fasheh \u003cmfasheh@suse.com\u003e\nCc: Joel Becker \u003cjoel.becker@oracle.com\u003e\nCc: Alex Elder \u003caelder@sgi.com\u003e\nCc: Christoph Hellwig \u003chch@infradead.org\u003e\nCc: dm-devel@redhat.com\nCc: drbd-dev@lists.linbit.com\nCc: Leo Chen \u003cleochen@broadcom.com\u003e\nCc: Scott Branden \u003csbranden@broadcom.com\u003e\nCc: Chris Mason \u003cchris.mason@oracle.com\u003e\nCc: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\nCc: Dave Kleikamp \u003cshaggy@linux.vnet.ibm.com\u003e\nCc: Joern Engel \u003cjoern@logfs.org\u003e\nCc: reiserfs-devel@vger.kernel.org\nCc: Alexander Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "cedb4a7d9f6aedb0dce94d6285b69dcb3c10fa05",
      "tree": "49a6b255a727421658cb917321ad3e29c8bd9fc0",
      "parents": [
        "17a9e7bbae178d1326e4631ab6350a272349c99d"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Thu Nov 11 13:37:54 2010 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Thu Nov 11 13:40:11 2010 +0100"
      },
      "message": "block: remove unused copy_io_context()\n\nReported-by: Oleg Nesterov \u003coleg@redhat.com\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "02e031cbc843b010e72fcc05c76113c688b2860f",
      "tree": "9f68559ec3acc39bcc4ce2ff87043a094eaa2e8f",
      "parents": [
        "00e375e7e962f938f6b3c93e4cd097a5e26cc788"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@lst.de",
        "time": "Wed Nov 10 14:54:09 2010 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Wed Nov 10 14:54:09 2010 +0100"
      },
      "message": "block: remove REQ_HARDBARRIER\n\nREQ_HARDBARRIER is dead now, so remove the leftovers.  What\u0027s left\nat this point is:\n\n - various checks inside the block layer.\n - sanity checks in bio based drivers.\n - now unused bio_empty_barrier helper.\n - Xen blockfront use of BLKIF_OP_WRITE_BARRIER - it\u0027s dead for a while,\n   but Xen really needs to sort out it\u0027s barrier situaton.\n - setting of ordered tags in uas - dead code copied from old scsi\n   drivers.\n - scsi different retry for barriers - it\u0027s dead and should have been\n   removed when flushes were converted to FS requests.\n - blktrace handling of barriers - removed.  Someone who knows blktrace\n   better should add support for REQ_FLUSH and REQ_FUA, though.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "a014741c0adfb8fb79952939ca087cf03d272bb9",
      "tree": "57bafa05736f172b94fde156bb51798b3ddb6107",
      "parents": [
        "77304d2abac6101f7249754ffdd4421258877ab0"
      ],
      "author": {
        "name": "Vasiliy Kulikov",
        "email": "segooon@gmail.com",
        "time": "Mon Nov 08 14:42:40 2010 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Wed Nov 10 14:40:53 2010 +0100"
      },
      "message": "block: ioctl: fix information leak to userland\n\nStructure hd_geometry is copied to userland with 4 padding bytes\nbetween cylinders and start fields uninitialized on 64-bit platforms.\nIt leads to leaking of contents of kernel stack memory.\n\nCurrently there is no memset() in real implementations of getgeo()\nin drivers/block/, so it makes sense to have memset() in blkdev_ioctl().\n\nSigned-off-by: Vasiliy Kulikov \u003csegooon@gmail.com\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "77304d2abac6101f7249754ffdd4421258877ab0",
      "tree": "8ee5914529d70120528a630a8e904c22f8c4f98c",
      "parents": [
        "90fdb0b98a62d78a0650b9fd3ddc58a48f71d740"
      ],
      "author": {
        "name": "Mike Snitzer",
        "email": "snitzer@redhat.com",
        "time": "Mon Nov 08 14:39:12 2010 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Wed Nov 10 14:40:53 2010 +0100"
      },
      "message": "block: read i_size with i_size_read()\n\nConvert direct reads of an inode\u0027s i_size to using i_size_read().\n\ni_size_{read,write} use a seqcount to protect reads from accessing\nincomple writes.  Concurrent i_size_write()s require mutual exclussion\nto protect the seqcount that is used by i_size_{read,write}.  But\ni_size_read() callers do not need to use additional locking.\n\nSigned-off-by: Mike Snitzer \u003csnitzer@redhat.com\u003e\nAcked-by: NeilBrown \u003cneilb@suse.de\u003e\nAcked-by: Lars Ellenberg \u003clars.ellenberg@linbit.com\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "9f864c80913467312c7b8690e41fb5ebd1b50e92",
      "tree": "dea8f56529d175bc2b666b52d2f819c82abc3a19",
      "parents": [
        "9284bcf4e335e5f18a8bc7b26461c33ab60d0689"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Fri Oct 29 11:31:42 2010 -0600"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Wed Nov 10 14:40:42 2010 +0100"
      },
      "message": "block: take care not to overflow when calculating total iov length\n\nReported-by: Dan Rosenberg \u003cdrosenberg@vsecurity.com\u003e\nCc: stable@kernel.org\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "9284bcf4e335e5f18a8bc7b26461c33ab60d0689",
      "tree": "82860d516748327e9be4903e541479e7ac40e6a1",
      "parents": [
        "151f52f09c5728ecfdd0c289da1a4b30bb416f2c"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Fri Oct 29 08:10:18 2010 -0600"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Wed Nov 10 14:40:42 2010 +0100"
      },
      "message": "block: check for proper length of iov entries in blk_rq_map_user_iov()\n\nEnsure that we pass down properly validated iov segments before\ncalling into the mapping or copy functions.\n\nReported-by: Dan Rosenberg \u003cdrosenberg@vsecurity.com\u003e\nCc: stable@kernel.org\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "2b9408a45978dcda77407859148deeccf403c372",
      "tree": "52fc549e7cc879c6dea98554f75da24df31c07cf",
      "parents": [
        "8e1ac6655104bc6e1e79d67e2df88cc8fa9b6e07"
      ],
      "author": {
        "name": "Shaohua Li",
        "email": "shaohua.li@intel.com",
        "time": "Tue Nov 09 14:51:13 2010 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Tue Nov 09 14:51:13 2010 +0100"
      },
      "message": "cfq-iosched: don\u0027t schedule a dispatch for a non-idle queue\n\nVivek suggests we don\u0027t need schedule a dispatch when an idle queue\nbecomes nonidle. And he is right, cfq_should_preempt already covers\nthe logic.\n\nSigned-off-by: Shaohua Li \u003cshaohua.li@intel.com\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "8e1ac6655104bc6e1e79d67e2df88cc8fa9b6e07",
      "tree": "2ba1aadf339af7d69931151e9d51f8054753ff85",
      "parents": [
        "d2d59e18a1ea8ecdd1c0a52af320e9a7f5391cc4"
      ],
      "author": {
        "name": "Shaohua Li",
        "email": "shaohua.li@intel.com",
        "time": "Mon Nov 08 15:01:04 2010 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Mon Nov 08 15:01:04 2010 +0100"
      },
      "message": "cfq-iosched: don\u0027t idle if a deep seek queue is slow\n\nIf a deep seek queue slowly deliver requests but disk is much faster, idle\nfor the queue just wastes disk throughput. If the queue delevers all requests\nbefore half its slice is used, the patch disable idle for it.\nIn my test, application delivers 32 requests one time, the disk can accept\n128 requests at maxium and disk is fast. without the patch, the throughput\nis just around 30m/s, while with it, the speed is about 80m/s. The disk is\na SSD, but is detected as a rotational disk. I can configure it as SSD, but\nI thought the deep seek queue logic should be fixed too, for example,\nconsidering a fast raid.\n\nSigned-off-by: Shaohua Li \u003cshaohua.li@intel.com\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "d2d59e18a1ea8ecdd1c0a52af320e9a7f5391cc4",
      "tree": "b39812dc8fd9ae552c361a84a10dcd61d2caaab5",
      "parents": [
        "c1e44756fdb7b363fd22cb5514dced40752e36c5"
      ],
      "author": {
        "name": "Shaohua Li",
        "email": "shaohua.li@intel.com",
        "time": "Mon Nov 08 15:01:03 2010 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Mon Nov 08 15:01:03 2010 +0100"
      },
      "message": "cfq-iosched: schedule dispatch for noidle queue\n\nA queue is idle at cfq_dispatch_requests(), but it gets noidle later. Unless\nother task explictly does unplug or all requests are drained, we will not\ndeliever requests to the disk even cfq_arm_slice_timer doesn\u0027t make the\nqueue idle. For example, cfq_should_idle() returns true because of\nservice_tree-\u003ecount \u003d\u003d 1, and then other queues are added. Note, I didn\u0027t\nsee obvious performance impacts so far with the patch, but just thought\nthis could be a problem.\n\nSigned-off-by: Shaohua Li \u003cshaohua.li@intel.com\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "c1e44756fdb7b363fd22cb5514dced40752e36c5",
      "tree": "796ca172be3270043efa02d5d0bb2552e48cd9d8",
      "parents": [
        "f6f94e2ab1b33f0082ac22d71f66385a60d8157f"
      ],
      "author": {
        "name": "Shaohua Li",
        "email": "shaohua.li@intel.com",
        "time": "Mon Nov 08 15:01:02 2010 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Mon Nov 08 15:01:02 2010 +0100"
      },
      "message": "cfq-iosched: do cleanup\n\nSome functions should return boolean.\n\nSigned-off-by: Shaohua Li \u003cshaohua.li@intel.com\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "b595076a180a56d1bb170e6eceda6eb9d76f4cd3",
      "tree": "bc01ec7283808013e0b8ce7713fd6fc40f810429",
      "parents": [
        "6aaccece1c483f189f76f1282b3984ff4c7ecb0a"
      ],
      "author": {
        "name": "Uwe Kleine-König",
        "email": "u.kleine-koenig@pengutronix.de",
        "time": "Mon Nov 01 15:38:34 2010 -0400"
      },
      "committer": {
        "name": "Jiri Kosina",
        "email": "jkosina@suse.cz",
        "time": "Mon Nov 01 15:38:34 2010 -0400"
      },
      "message": "tree-wide: fix comment/printk typos\n\n\"gadget\", \"through\", \"command\", \"maintain\", \"maintain\", \"controller\", \"address\",\n\"between\", \"initiali[zs]e\", \"instead\", \"function\", \"select\", \"already\",\n\"equal\", \"access\", \"management\", \"hierarchy\", \"registration\", \"interest\",\n\"relative\", \"memory\", \"offset\", \"already\",\n\nSigned-off-by: Uwe Kleine-König \u003cu.kleine-koenig@pengutronix.de\u003e\nSigned-off-by: Jiri Kosina \u003cjkosina@suse.cz\u003e\n"
    },
    {
      "commit": "8e775167d54e6521e7cdbc03ee7ec42a8c67b49a",
      "tree": "a49914306fb28505c6e21a456df8bdc40d6eac23",
      "parents": [
        "4b37ba90f49d4157ac5628f8d730d3505f176724",
        "f253b86b4ad1b3220544e75880510fd455ebd23f"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Oct 25 07:45:10 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Oct 25 07:45:10 2010 -0700"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.dk/linux-2.6-block\n\n* \u0027for-linus\u0027 of git://git.kernel.dk/linux-2.6-block:\n  Revert \"block: fix accounting bug on cross partition merges\"\n"
    },
    {
      "commit": "229aebb873e29726b91e076161649cf45154b0bf",
      "tree": "acc02a3702215bce8d914f4c8cc3d7a1382b1c67",
      "parents": [
        "8de547e1824437f3c6af180d3ed2162fa4b3f389",
        "50a23e6eec6f20d55a3a920e47adb455bff6046e"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Oct 24 13:41:39 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Oct 24 13:41:39 2010 -0700"
      },
      "message": "Merge branch \u0027for-next\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial\n\n* \u0027for-next\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial: (39 commits)\n  Update broken web addresses in arch directory.\n  Update broken web addresses in the kernel.\n  Revert \"drivers/usb: Remove unnecessary return\u0027s from void functions\" for musb gadget\n  Revert \"Fix typo: configuation \u003d\u003e configuration\" partially\n  ida: document IDA_BITMAP_LONGS calculation\n  ext2: fix a typo on comment in ext2/inode.c\n  drivers/scsi: Remove unnecessary casts of private_data\n  drivers/s390: Remove unnecessary casts of private_data\n  net/sunrpc/rpc_pipe.c: Remove unnecessary casts of private_data\n  drivers/infiniband: Remove unnecessary casts of private_data\n  drivers/gpu/drm: Remove unnecessary casts of private_data\n  kernel/pm_qos_params.c: Remove unnecessary casts of private_data\n  fs/ecryptfs: Remove unnecessary casts of private_data\n  fs/seq_file.c: Remove unnecessary casts of private_data\n  arm: uengine.c: remove C99 comments\n  arm: scoop.c: remove C99 comments\n  Fix typo configue \u003d\u003e configure in comments\n  Fix typo: configuation \u003d\u003e configuration\n  Fix typo interrest[ing|ed] \u003d\u003e interest[ing|ed]\n  Fix various typos of valid in comments\n  ...\n\nFix up trivial conflicts in:\n\tdrivers/char/ipmi/ipmi_si_intf.c\n\tdrivers/usb/gadget/rndis.c\n\tnet/irda/irnet/irnet_ppp.c\n"
    },
    {
      "commit": "f253b86b4ad1b3220544e75880510fd455ebd23f",
      "tree": "cc2dd76b8ffc8df4356c1e95bd15276169dd335e",
      "parents": [
        "35da7a307c535f9c2929cae277f3df425c9f9b1e"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Sun Oct 24 22:06:02 2010 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Sun Oct 24 22:06:02 2010 +0200"
      },
      "message": "Revert \"block: fix accounting bug on cross partition merges\"\n\nThis reverts commit 7681bfeeccff5efa9eb29bf09249a3c400b15327.\n\nConflicts:\n\n\tinclude/linux/genhd.h\n\nIt has numerous issues with the cleanup path and non-elevator\ndevices. Revert it for now so we can come up with a clean\nversion without rushing things.\n\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "7ad58c028652753814054f4e3ac58f925e7343f4",
      "tree": "2e3bc1c5e3c98078b970483cd49a49d7c1ae0dcf",
      "parents": [
        "7f3883962870dd28b5f2322ac44a9d03640ef448"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Sat Oct 23 20:40:26 2010 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Sat Oct 23 20:40:26 2010 +0200"
      },
      "message": "block: fix use-after-free bug in blk throttle code\n\nblk_throtl_exit() frees the throttle data hanging off the queue\nin blk_cleanup_queue(), but blk_put_queue() will indirectly\ndereference this data when calling blk_sync_queue() which in\nturns calls throtl_shutdown_timer_wq().\n\nFix this by moving the freeing of the throttle data to when\nthe queue is truly being released, and post the call to\nblk_sync_queue().\n\nReported-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nTested-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "b9da0571050c09863e59f94d0b8594a290d61b88",
      "tree": "3632c4fee768db9a27a5c872bd42133692e2f3d0",
      "parents": [
        "f8cae0f03f75adb54b1d48ddbc90f84a1f5de186",
        "5abd935661e01289ba143c3b2c1ba300c65bcc5f"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Oct 22 19:36:42 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Oct 22 19:36:42 2010 -0700"
      },
      "message": "Merge git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/driver-core-2.6\n\n* git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/driver-core-2.6: (31 commits)\n  driver core: Display error codes when class suspend fails\n  Driver core: Add section count to memory_block struct\n  Driver core: Add mutex for adding/removing memory blocks\n  Driver core: Move find_memory_block routine\n  hpilo: Despecificate driver from iLO generation\n  driver core: Convert link_mem_sections to use find_memory_block_hinted.\n  driver core: Introduce find_memory_block_hinted which utilizes kset_find_obj_hinted.\n  kobject: Introduce kset_find_obj_hinted.\n  driver core: fix build for CONFIG_BLOCK not enabled\n  driver-core: base: change to new flag variable\n  sysfs: only access bin file vm_ops with the active lock\n  sysfs: Fail bin file mmap if vma close is implemented.\n  FW_LOADER: fix kconfig dependency warning on HOTPLUG\n  uio: Statically allocate uio_class and use class .dev_attrs.\n  uio: Support 2^MINOR_BITS minors\n  uio: Cleanup irq handling.\n  uio: Don\u0027t clear driver data\n  uio: Fix lack of locking in init_uio_class\n  SYSFS: Allow boot time switching between deprecated and modern sysfs layout\n  driver core: remove CONFIG_SYSFS_DEPRECATED_V2 but keep it for block devices\n  ...\n"
    },
    {
      "commit": "a2887097f25cd38cadfc11d10769e2b349fb5eca",
      "tree": "cd4adcb305365d6ba9acd2c02d4eb9d0125c6f8d",
      "parents": [
        "8abfc6e7a45eb74e51904bbae676fae008b11366",
        "005a1d15f5a6b2bb4ada80349513effbf22b4588"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Oct 22 17:07:18 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Oct 22 17:07:18 2010 -0700"
      },
      "message": "Merge branch \u0027for-2.6.37/barrier\u0027 of git://git.kernel.dk/linux-2.6-block\n\n* \u0027for-2.6.37/barrier\u0027 of git://git.kernel.dk/linux-2.6-block: (46 commits)\n  xen-blkfront: disable barrier/flush write support\n  Added blk-lib.c and blk-barrier.c was renamed to blk-flush.c\n  block: remove BLKDEV_IFL_WAIT\n  aic7xxx_old: removed unused \u0027req\u0027 variable\n  block: remove the BH_Eopnotsupp flag\n  block: remove the BLKDEV_IFL_BARRIER flag\n  block: remove the WRITE_BARRIER flag\n  swap: do not send discards as barriers\n  fat: do not send discards as barriers\n  ext4: do not send discards as barriers\n  jbd2: replace barriers with explicit flush / FUA usage\n  jbd2: Modify ASYNC_COMMIT code to not rely on queue draining on barrier\n  jbd: replace barriers with explicit flush / FUA usage\n  nilfs2: replace barriers with explicit flush / FUA usage\n  reiserfs: replace barriers with explicit flush / FUA usage\n  gfs2: replace barriers with explicit flush / FUA usage\n  btrfs: replace barriers with explicit flush / FUA usage\n  xfs: replace barriers with explicit flush / FUA usage\n  block: pass gfp_mask and flags to sb_issue_discard\n  dm: convey that all flushes are processed as empty\n  ...\n"
    },
    {
      "commit": "e9dd2b6837e26fe202708cce5ea4bb4ee3e3482e",
      "tree": "f42fd892495bfc4cbb740d06b016d267c9c42d00",
      "parents": [
        "4f3a29dadaf999a273f1e7fe2476595d0283eef3",
        "b4627321e18582dcbdeb45d77df29d3177107c65"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Oct 22 17:00:32 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Oct 22 17:00:32 2010 -0700"
      },
      "message": "Merge branch \u0027for-2.6.37/core\u0027 of git://git.kernel.dk/linux-2.6-block\n\n* \u0027for-2.6.37/core\u0027 of git://git.kernel.dk/linux-2.6-block: (39 commits)\n  cfq-iosched: Fix a gcc 4.5 warning and put some comments\n  block: Turn bvec_k{un,}map_irq() into static inline functions\n  block: fix accounting bug on cross partition merges\n  block: Make the integrity mapped property a bio flag\n  block: Fix double free in blk_integrity_unregister\n  block: Ensure physical block size is unsigned int\n  blkio-throttle: Fix possible multiplication overflow in iops calculations\n  blkio-throttle: limit max iops value to UINT_MAX\n  blkio-throttle: There is no need to convert jiffies to milli seconds\n  blkio-throttle: Fix link failure failure on i386\n  blkio: Recalculate the throttled bio dispatch time upon throttle limit change\n  blkio: Add root group to td-\u003etg_list\n  blkio: deletion of a cgroup was causes oops\n  blkio: Do not export throttle files if CONFIG_BLK_DEV_THROTTLING\u003dn\n  block: set the bounce_pfn to the actual DMA limit rather than to max memory\n  block: revert bad fix for memory hotplug causing bounces\n  Fix compile error in blk-exec.c for !CONFIG_DETECT_HUNG_TASK\n  block: set the bounce_pfn to the actual DMA limit rather than to max memory\n  block: Prevent hang_check firing during long I/O\n  cfq: improve fsync performance for small files\n  ...\n\nFix up trivial conflicts due to __rcu sparse annotation in include/linux/genhd.h\n"
    },
    {
      "commit": "092e0e7e520a1fca03e13c9f2d157432a8657ff2",
      "tree": "451897252c4c08c4b5a8ef535da156f1e817e80b",
      "parents": [
        "79f14b7c56d3b3ba58f8b43d1f70b9b71477a800",
        "776c163b1b93c8dfa5edba885bc2bfbc2d228a5f"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Oct 22 10:52:56 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Oct 22 10:52:56 2010 -0700"
      },
      "message": "Merge branch \u0027llseek\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/arnd/bkl\n\n* \u0027llseek\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/arnd/bkl:\n  vfs: make no_llseek the default\n  vfs: don\u0027t use BKL in default_llseek\n  llseek: automatically add .llseek fop\n  libfs: use generic_file_llseek for simple_attr\n  mac80211: disallow seeks in minstrel debug code\n  lirc: make chardev nonseekable\n  viotape: use noop_llseek\n  raw: use explicit llseek file operations\n  ibmasmfs: use generic_file_llseek\n  spufs: use llseek in all file operations\n  arm/omap: use generic_file_llseek in iommu_debug\n  lkdtm: use generic_file_llseek in debugfs\n  net/wireless: use generic_file_llseek in debugfs\n  drm: use noop_llseek\n"
    },
    {
      "commit": "c37927d4359e81b85de644f8fb08878717cf5f3f",
      "tree": "25dabf2d905e1410819d1bdaba0bf5f779100d3c",
      "parents": [
        "5704e44d283e907623e3775c1262f206a2c48cf3",
        "2a48fc0ab24241755dc93bfd4f01d68efab47f5a"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Oct 22 10:49:54 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Oct 22 10:49:54 2010 -0700"
      },
      "message": "Merge branch \u0027trivial\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/arnd/bkl\n\n* \u0027trivial\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/arnd/bkl:\n  block: autoconvert trivial BKL users to private mutex\n  drivers: autoconvert trivial BKL users to private mutex\n  ipmi: autoconvert trivial BKL users to private mutex\n  mac: autoconvert trivial BKL users to private mutex\n  mtd: autoconvert trivial BKL users to private mutex\n  scsi: autoconvert trivial BKL users to private mutex\n\nFix up trivial conflicts (due to addition of private mutex right next to\ndeletion of a version string) in drivers/char/pcmcia/cm40[04]0_cs.c\n"
    },
    {
      "commit": "e52eec13cd6b7f30ab19081b387813e03e592ae5",
      "tree": "7b327e0b9283c578fb10922edcf6e10b3b8fd943",
      "parents": [
        "39aba963d937edb20db7d9d93e6dda5d2adfdcdd"
      ],
      "author": {
        "name": "Andi Kleen",
        "email": "ak@linux.intel.com",
        "time": "Wed Sep 08 16:54:17 2010 +0200"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@suse.de",
        "time": "Fri Oct 22 10:16:43 2010 -0700"
      },
      "message": "SYSFS: Allow boot time switching between deprecated and modern sysfs layout\n\nI have some systems which need legacy sysfs due to old tools that are\nmaking assumptions that a directory can never be a symlink to another\ndirectory, and it\u0027s a big hazzle to compile separate kernels for them.\n\nThis patch turns CONFIG_SYSFS_DEPRECATED into a run time option\nthat can be switched on/off the kernel command line. This way\nthe same binary can be used in both cases with just a option\non the command line.\n\nThe old CONFIG_SYSFS_DEPRECATED_V2 option is still there to set\nthe default. I kept the weird name to not break existing\nconfig files.\n\nAlso the compat code can be still completely disabled by undefining\nCONFIG_SYSFS_DEPRECATED_SWITCH -- just the optimizer takes\ncare of this now instead of lots of ifdefs. This makes the code\nlook nicer.\n\nv2: This is an updated version on top of Kay\u0027s patch to only\nhandle the block devices. I tested it on my old systems\nand that seems to work.\n\nCc: axboe@kernel.dk\nSigned-off-by: Andi Kleen \u003cak@linux.intel.com\u003e\nCc: Kay Sievers \u003ckay.sievers@vrfy.org\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@suse.de\u003e\n\n"
    },
    {
      "commit": "b4627321e18582dcbdeb45d77df29d3177107c65",
      "tree": "f494dae7f39f219d73aa9752dfd3844293d65f50",
      "parents": [
        "11a691bea48887c27425cc40bf291e74c922df25"
      ],
      "author": {
        "name": "Vivek Goyal",
        "email": "vgoyal@redhat.com",
        "time": "Fri Oct 22 09:48:43 2010 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Fri Oct 22 09:48:43 2010 +0200"
      },
      "message": "cfq-iosched: Fix a gcc 4.5 warning and put some comments\n\n- Andi encountedred following warning with gcc 4.5\n\n  linux/block/cfq-iosched.c: In function ‘cfq_dispatch_requests’:\n  linux/block/cfq-iosched.c:2156:3: warning: array subscript is above array\n  bounds\n\n- Warning happens due to following code.\n\n  slice \u003d group_slice * count /\n\t\tmax_t(unsigned, cfqg-\u003ebusy_queues_avg[cfqd-\u003eserving_prio],\n\t\tcfq_group_busy_queues_wl(cfqd-\u003eserving_prio, cfqd, cfqg));\n\n  gcc is complaining about cfqg-\u003ebusy_queues_avg[] being indexed by CFQ\n  prio classes (RT, BE and IDLE) while the array size is only 2.\n\n- At run time, we never access cfqg-\u003ebusy_queues_avg[IDLE] and return from\n  function before this code hits.\n\n- To fix warning increase the array size though it will remain unused. This\n  patch also puts some comments to clarify some of the confusions.\n\n- I have taken Jens\u0027s patch and modified it a bit.\n\n- Compile tested with gcc 4.4 and boot tested. I don\u0027t have gcc 4.5\n  running, Andi can you please test it with gcc 4.5 to make sure it\n  worked.\n\nReported-by: Andi Kleen \u003cak@linux.intel.com\u003e\nSigned-off-by: Vivek Goyal \u003cvgoyal@redhat.com\u003e\nAcked-by: Jeff Moyer \u003cjmoyer@redhat.com\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "30c278192f9ab06125fb042f6e46763e0fd7140a",
      "tree": "eb457072fec9bed01d89a71ab61257785a24a66a",
      "parents": [
        "ef2533dae5a93527f2aac9449c0b1564c5ed2c2f",
        "478971600e47cb83ff2d3c63c5c24f2b04b0d6a1"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Oct 20 13:13:09 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Oct 20 13:13:09 2010 -0700"
      },
      "message": "Merge git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi-rc-fixes-2.6\n\n* git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi-rc-fixes-2.6:\n  [SCSI] bsg: fix incorrect device_status value\n  [SCSI] Fix VPD inquiry page wrapper\n"
    },
    {
      "commit": "fa251f89903d73989e2f63e13d0eaed1e07ce0da",
      "tree": "3f7fe779941e3b6d67754dd7c44a32f48ea47c74",
      "parents": [
        "dd3932eddf428571762596e17b65f5dc92ca361b",
        "cd07202cc8262e1669edff0d97715f3dd9260917"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Tue Oct 19 09:13:04 2010 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Tue Oct 19 09:13:04 2010 +0200"
      },
      "message": "Merge branch \u0027v2.6.36-rc8\u0027 into for-2.6.37/barrier\n\nConflicts:\n\tblock/blk-core.c\n\tdrivers/block/loop.c\n\tmm/swapfile.c\n\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "7681bfeeccff5efa9eb29bf09249a3c400b15327",
      "tree": "8557964a2df96e253dcf1a61734b98dbfbf192d6",
      "parents": [
        "495d2b3883682fcd1c3dee3a45e38fd00154ae25"
      ],
      "author": {
        "name": "Yasuaki Ishimatsu",
        "email": "isimatu.yasuaki@jp.fujitsu.com",
        "time": "Tue Oct 19 09:05:00 2010 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Tue Oct 19 09:07:02 2010 +0200"
      },
      "message": "block: fix accounting bug on cross partition merges\n\n/proc/diskstats would display a strange output as follows.\n\n$ cat /proc/diskstats |grep sda\n   8       0 sda 90524 7579 102154 20464 0 0 0 0 0 14096 20089\n   8       1 sda1 19085 1352 21841 4209 0 0 0 0 4294967064 15689 4293424691\n                                                ~~~~~~~~~~\n   8       2 sda2 71252 3624 74891 15950 0 0 0 0 232 23995 1562390\n   8       3 sda3 54 487 2188 92 0 0 0 0 0 88 92\n   8       4 sda4 4 0 8 0 0 0 0 0 0 0 0\n   8       5 sda5 81 2027 2130 138 0 0 0 0 0 87 137\n\nIts reason is the wrong way of accounting hd_struct-\u003ein_flight. When a bio is\nmerged into a request belongs to different partition by ELEVATOR_FRONT_MERGE.\n\nThe detailed root cause is as follows.\n\nAssuming that there are two partition, sda1 and sda2.\n\n1. A request for sda2 is in request_queue. Hence sda1\u0027s hd_struct-\u003ein_flight\n   is 0 and sda2\u0027s one is 1.\n\n        | hd_struct-\u003ein_flight\n   ---------------------------\n   sda1 |          0\n   sda2 |          1\n   ---------------------------\n\n2. A bio belongs to sda1 is issued and is merged into the request mentioned on\n   step1 by ELEVATOR_BACK_MERGE. The first sector of the request is changed\n   from sda2 region to sda1 region. However the two partition\u0027s\n   hd_struct-\u003ein_flight are not changed.\n\n        | hd_struct-\u003ein_flight\n   ---------------------------\n   sda1 |          0\n   sda2 |          1\n   ---------------------------\n\n3. The request is finished and blk_account_io_done() is called. In this case,\n   sda2\u0027s hd_struct-\u003ein_flight, not a sda1\u0027s one, is decremented.\n\n        | hd_struct-\u003ein_flight\n   ---------------------------\n   sda1 |         -1\n   sda2 |          1\n   ---------------------------\n\nThe patch fixes the problem by caching the partition lookup\ninside the request structure, hence making sure that the increment\nand decrement will always happen on the same partition struct. This\nalso speeds up IO with accounting enabled, since it cuts down on\nthe number of lookups we have to do.\n\nWhen reloading partition tables, quiesce IO to ensure that no\nrequest references to the partition struct exists. When it is safe\nto free the partition table, the IO for that device is restarted\nagain.\n\nSigned-off-by: Yasuaki Ishimatsu \u003cisimatu.yasuaki@jp.fujitsu.com\u003e\nCc: stable@kernel.org\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "478971600e47cb83ff2d3c63c5c24f2b04b0d6a1",
      "tree": "8a426c30523aa558249bc8e4844b757af6ac1b96",
      "parents": [
        "16d3ea26f82271fef9b1c4523b5e1ea31fa39eec"
      ],
      "author": {
        "name": "FUJITA Tomonori",
        "email": "fujita.tomonori@lab.ntt.co.jp",
        "time": "Fri Sep 17 00:46:42 2010 +0900"
      },
      "committer": {
        "name": "James Bottomley",
        "email": "James.Bottomley@suse.de",
        "time": "Fri Oct 15 10:18:48 2010 -0400"
      },
      "message": "[SCSI] bsg: fix incorrect device_status value\n\nbsg incorrectly returns sg\u0027s masked_status value for device_status.\n\n[jejb: fix up expression logic]\nReported-by: Douglas Gilbert \u003cdgilbert@interlog.com\u003e\nSigned-off-by: FUJITA Tomonori \u003cfujita.tomonori@lab.ntt.co.jp\u003e\nCc: Stable Tree \u003cstable@kernel.org\u003e\nSigned-off-by: James Bottomley \u003cJames.Bottomley@suse.de\u003e\n"
    },
    {
      "commit": "6038f373a3dc1f1c26496e60b6c40b164716f07e",
      "tree": "a0d3bbd026eea41b9fc36b8c722cbaf56cd9f825",
      "parents": [
        "1ec5584e3edf9c4bf2c88c846534d19cf986ba11"
      ],
      "author": {
        "name": "Arnd Bergmann",
        "email": "arnd@arndb.de",
        "time": "Sun Aug 15 18:52:59 2010 +0200"
      },
      "committer": {
        "name": "Arnd Bergmann",
        "email": "arnd@arndb.de",
        "time": "Fri Oct 15 15:53:27 2010 +0200"
      },
      "message": "llseek: automatically add .llseek fop\n\nAll file_operations should get a .llseek operation so we can make\nnonseekable_open the default for future file operations without a\n.llseek pointer.\n\nThe three cases that we can automatically detect are no_llseek, seq_lseek\nand default_llseek. For cases where we can we can automatically prove that\nthe file offset is always ignored, we use noop_llseek, which maintains\nthe current behavior of not returning an error from a seek.\n\nNew drivers should normally not use noop_llseek but instead use no_llseek\nand call nonseekable_open at open time.  Existing drivers can be converted\nto do the same when the maintainer knows for certain that no user code\nrelies on calling seek on the device file.\n\nThe generated code is often incorrectly indented and right now contains\ncomments that clarify for each added line why a specific variant was\nchosen. In the version that gets submitted upstream, the comments will\nbe gone and I will manually fix the indentation, because there does not\nseem to be a way to do that using coccinelle.\n\nSome amount of new code is currently sitting in linux-next that should get\nthe same modifications, which I will do at the end of the merge window.\n\nMany thanks to Julia Lawall for helping me learn to write a semantic\npatch that does all this.\n\n\u003d\u003d\u003d\u003d\u003d begin semantic patch \u003d\u003d\u003d\u003d\u003d\n// This adds an llseek\u003d method to all file operations,\n// as a preparation for making no_llseek the default.\n//\n// The rules are\n// - use no_llseek explicitly if we do nonseekable_open\n// - use seq_lseek for sequential files\n// - use default_llseek if we know we access f_pos\n// - use noop_llseek if we know we don\u0027t access f_pos,\n//   but we still want to allow users to call lseek\n//\n@ open1 exists @\nidentifier nested_open;\n@@\nnested_open(...)\n{\n\u003c+...\nnonseekable_open(...)\n...+\u003e\n}\n\n@ open exists@\nidentifier open_f;\nidentifier i, f;\nidentifier open1.nested_open;\n@@\nint open_f(struct inode *i, struct file *f)\n{\n\u003c+...\n(\nnonseekable_open(...)\n|\nnested_open(...)\n)\n...+\u003e\n}\n\n@ read disable optional_qualifier exists @\nidentifier read_f;\nidentifier f, p, s, off;\ntype ssize_t, size_t, loff_t;\nexpression E;\nidentifier func;\n@@\nssize_t read_f(struct file *f, char *p, size_t s, loff_t *off)\n{\n\u003c+...\n(\n   *off \u003d E\n|\n   *off +\u003d E\n|\n   func(..., off, ...)\n|\n   E \u003d *off\n)\n...+\u003e\n}\n\n@ read_no_fpos disable optional_qualifier exists @\nidentifier read_f;\nidentifier f, p, s, off;\ntype ssize_t, size_t, loff_t;\n@@\nssize_t read_f(struct file *f, char *p, size_t s, loff_t *off)\n{\n... when !\u003d off\n}\n\n@ write @\nidentifier write_f;\nidentifier f, p, s, off;\ntype ssize_t, size_t, loff_t;\nexpression E;\nidentifier func;\n@@\nssize_t write_f(struct file *f, const char *p, size_t s, loff_t *off)\n{\n\u003c+...\n(\n  *off \u003d E\n|\n  *off +\u003d E\n|\n  func(..., off, ...)\n|\n  E \u003d *off\n)\n...+\u003e\n}\n\n@ write_no_fpos @\nidentifier write_f;\nidentifier f, p, s, off;\ntype ssize_t, size_t, loff_t;\n@@\nssize_t write_f(struct file *f, const char *p, size_t s, loff_t *off)\n{\n... when !\u003d off\n}\n\n@ fops0 @\nidentifier fops;\n@@\nstruct file_operations fops \u003d {\n ...\n};\n\n@ has_llseek depends on fops0 @\nidentifier fops0.fops;\nidentifier llseek_f;\n@@\nstruct file_operations fops \u003d {\n...\n .llseek \u003d llseek_f,\n...\n};\n\n@ has_read depends on fops0 @\nidentifier fops0.fops;\nidentifier read_f;\n@@\nstruct file_operations fops \u003d {\n...\n .read \u003d read_f,\n...\n};\n\n@ has_write depends on fops0 @\nidentifier fops0.fops;\nidentifier write_f;\n@@\nstruct file_operations fops \u003d {\n...\n .write \u003d write_f,\n...\n};\n\n@ has_open depends on fops0 @\nidentifier fops0.fops;\nidentifier open_f;\n@@\nstruct file_operations fops \u003d {\n...\n .open \u003d open_f,\n...\n};\n\n// use no_llseek if we call nonseekable_open\n////////////////////////////////////////////\n@ nonseekable1 depends on !has_llseek \u0026\u0026 has_open @\nidentifier fops0.fops;\nidentifier nso ~\u003d \"nonseekable_open\";\n@@\nstruct file_operations fops \u003d {\n...  .open \u003d nso, ...\n+.llseek \u003d no_llseek, /* nonseekable */\n};\n\n@ nonseekable2 depends on !has_llseek @\nidentifier fops0.fops;\nidentifier open.open_f;\n@@\nstruct file_operations fops \u003d {\n...  .open \u003d open_f, ...\n+.llseek \u003d no_llseek, /* open uses nonseekable */\n};\n\n// use seq_lseek for sequential files\n/////////////////////////////////////\n@ seq depends on !has_llseek @\nidentifier fops0.fops;\nidentifier sr ~\u003d \"seq_read\";\n@@\nstruct file_operations fops \u003d {\n...  .read \u003d sr, ...\n+.llseek \u003d seq_lseek, /* we have seq_read */\n};\n\n// use default_llseek if there is a readdir\n///////////////////////////////////////////\n@ fops1 depends on !has_llseek \u0026\u0026 !nonseekable1 \u0026\u0026 !nonseekable2 \u0026\u0026 !seq @\nidentifier fops0.fops;\nidentifier readdir_e;\n@@\n// any other fop is used that changes pos\nstruct file_operations fops \u003d {\n... .readdir \u003d readdir_e, ...\n+.llseek \u003d default_llseek, /* readdir is present */\n};\n\n// use default_llseek if at least one of read/write touches f_pos\n/////////////////////////////////////////////////////////////////\n@ fops2 depends on !fops1 \u0026\u0026 !has_llseek \u0026\u0026 !nonseekable1 \u0026\u0026 !nonseekable2 \u0026\u0026 !seq @\nidentifier fops0.fops;\nidentifier read.read_f;\n@@\n// read fops use offset\nstruct file_operations fops \u003d {\n... .read \u003d read_f, ...\n+.llseek \u003d default_llseek, /* read accesses f_pos */\n};\n\n@ fops3 depends on !fops1 \u0026\u0026 !fops2 \u0026\u0026 !has_llseek \u0026\u0026 !nonseekable1 \u0026\u0026 !nonseekable2 \u0026\u0026 !seq @\nidentifier fops0.fops;\nidentifier write.write_f;\n@@\n// write fops use offset\nstruct file_operations fops \u003d {\n... .write \u003d write_f, ...\n+\t.llseek \u003d default_llseek, /* write accesses f_pos */\n};\n\n// Use noop_llseek if neither read nor write accesses f_pos\n///////////////////////////////////////////////////////////\n\n@ fops4 depends on !fops1 \u0026\u0026 !fops2 \u0026\u0026 !fops3 \u0026\u0026 !has_llseek \u0026\u0026 !nonseekable1 \u0026\u0026 !nonseekable2 \u0026\u0026 !seq @\nidentifier fops0.fops;\nidentifier read_no_fpos.read_f;\nidentifier write_no_fpos.write_f;\n@@\n// write fops use offset\nstruct file_operations fops \u003d {\n...\n .write \u003d write_f,\n .read \u003d read_f,\n...\n+.llseek \u003d noop_llseek, /* read and write both use no f_pos */\n};\n\n@ depends on has_write \u0026\u0026 !has_read \u0026\u0026 !fops1 \u0026\u0026 !fops2 \u0026\u0026 !has_llseek \u0026\u0026 !nonseekable1 \u0026\u0026 !nonseekable2 \u0026\u0026 !seq @\nidentifier fops0.fops;\nidentifier write_no_fpos.write_f;\n@@\nstruct file_operations fops \u003d {\n... .write \u003d write_f, ...\n+.llseek \u003d noop_llseek, /* write uses no f_pos */\n};\n\n@ depends on has_read \u0026\u0026 !has_write \u0026\u0026 !fops1 \u0026\u0026 !fops2 \u0026\u0026 !has_llseek \u0026\u0026 !nonseekable1 \u0026\u0026 !nonseekable2 \u0026\u0026 !seq @\nidentifier fops0.fops;\nidentifier read_no_fpos.read_f;\n@@\nstruct file_operations fops \u003d {\n... .read \u003d read_f, ...\n+.llseek \u003d noop_llseek, /* read uses no f_pos */\n};\n\n@ depends on !has_read \u0026\u0026 !has_write \u0026\u0026 !fops1 \u0026\u0026 !fops2 \u0026\u0026 !has_llseek \u0026\u0026 !nonseekable1 \u0026\u0026 !nonseekable2 \u0026\u0026 !seq @\nidentifier fops0.fops;\n@@\nstruct file_operations fops \u003d {\n...\n+.llseek \u003d noop_llseek, /* no read or write fn */\n};\n\u003d\u003d\u003d\u003d\u003d End semantic patch \u003d\u003d\u003d\u003d\u003d\n\nSigned-off-by: Arnd Bergmann \u003carnd@arndb.de\u003e\nCc: Julia Lawall \u003cjulia@diku.dk\u003e\nCc: Christoph Hellwig \u003chch@infradead.org\u003e\n"
    },
    {
      "commit": "e817bf3f68f55e7307c3e9abe5f32d0c05c83988",
      "tree": "0280cb83bb13b00d64af3cfc5960fcdd2a5343ba",
      "parents": [
        "892b6f90db81cccb723d5d92f4fddc2d68b206e1"
      ],
      "author": {
        "name": "Martin K. Petersen",
        "email": "martin.petersen@oracle.com",
        "time": "Fri Oct 15 15:49:18 2010 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Fri Oct 15 15:49:18 2010 +0200"
      },
      "message": "block: Fix double free in blk_integrity_unregister\n\nCommit 3839e4b introduced a kobject_put but failed to remove the\nkmem_cache_free beneath it, leading to a double free.\n\nSigned-off-by: Martin K. Petersen \u003cmartin.petersen@oracle.com\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "892b6f90db81cccb723d5d92f4fddc2d68b206e1",
      "tree": "a4cedbff388c2cc0659c76f429003b856ef17943",
      "parents": [
        "c49c06e4960949a9bced708858433fcf6ca36a9c"
      ],
      "author": {
        "name": "Martin K. Petersen",
        "email": "martin.petersen@oracle.com",
        "time": "Wed Oct 13 21:18:03 2010 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Wed Oct 13 21:19:12 2010 +0200"
      },
      "message": "block: Ensure physical block size is unsigned int\n\nPhysical block size was declared unsigned int to accomodate the maximum\nsize reported by READ CAPACITY(16).  Make sure we use the right type in\nthe related functions.\n\nSigned-off-by: Martin K. Petersen \u003cmartin.petersen@oracle.com\u003e\nAcked-by: Mike Snitzer \u003csnitzer@redhat.com\u003e\nCc: stable@kernel.org\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "430c62fb2948d964cf8dc7f3e2f69623c04ef62f",
      "tree": "79923717e1694745def152baec1a4cc09a5d072c",
      "parents": [
        "cb655d0f3d57c23db51b981648e452988c0223f9"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Thu Oct 07 09:35:16 2010 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Thu Oct 07 09:35:16 2010 +0200"
      },
      "message": "elevator: fix oops on early call to elevator_change()\n\n2.6.36 introduces an API for drivers to switch the IO scheduler\ninstead of manually calling the elevator exit and init functions.\nThis API was added since q-\u003eelevator must be cleared in between\nthose two calls. And since we already have this functionality\ndirectly from use by the sysfs interface to switch schedulers\nonline, it was prudent to reuse it internally too.\n\nBut this API needs the queue to be in a fully initialized state\nbefore it is called, or it will attempt to unregister elevator\nkobjects before they have been added. This results in an oops\nlike this:\n\nBUG: unable to handle kernel NULL pointer dereference at 0000000000000051\nIP: [\u003cffffffff8116f15e\u003e] sysfs_create_dir+0x2e/0xc0\nPGD 47ddfc067 PUD 47c6a1067 PMD 0\nOops: 0000 [#1] PREEMPT SMP\nlast sysfs file: /sys/devices/pci0000:00/0000:00:02.0/0000:04:00.1/irq\nCPU 2\nModules linked in: t(+) loop hid_apple usbhid ahci ehci_hcd uhci_hcd libahci usbcore nls_base igb\n\nPid: 7319, comm: modprobe Not tainted 2.6.36-rc6+ #132 QSSC-S4R/QSSC-S4R\nRIP: 0010:[\u003cffffffff8116f15e\u003e]  [\u003cffffffff8116f15e\u003e] sysfs_create_dir+0x2e/0xc0\nRSP: 0018:ffff88027da25d08  EFLAGS: 00010246\nRAX: ffff88047c68c528 RBX: 00000000fffffffe RCX: 0000000000000000\nRDX: 000000000000002f RSI: 000000000000002f RDI: ffff88047e196c88\nRBP: ffff88027da25d38 R08: 0000000000000000 R09: d84156c5635688c0\nR10: d84156c5635688c0 R11: 0000000000000000 R12: ffff88047e196c88\nR13: 0000000000000000 R14: 0000000000000000 R15: ffff88047c68c528\nFS:  00007fcb0b26f6e0(0000) GS:ffff880287400000(0000) knlGS:0000000000000000\nCS:  0010 DS: 0000 ES: 0000 CR0: 000000008005003b\nCR2: 0000000000000051 CR3: 000000047e76e000 CR4: 00000000000006e0\nDR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000\nDR3: 0000000000000000 DR6: 00000000ffff0ff0 DR7: 0000000000000400\nProcess modprobe (pid: 7319, threadinfo ffff88027da24000, task ffff88027d377090)\nStack:\n ffff88027da25d58 ffff88047c68c528 00000000fffffffe ffff88047e196c88\n\u003c0\u003e ffff88047c68c528 ffff88047e05bd90 ffff88027da25d78 ffffffff8123fb77\n\u003c0\u003e ffff88047e05bd90 0000000000000000 ffff88047e196c88 ffff88047c68c528\nCall Trace:\n [\u003cffffffff8123fb77\u003e] kobject_add_internal+0xe7/0x1f0\n [\u003cffffffff8123fd98\u003e] kobject_add_varg+0x38/0x60\n [\u003cffffffff8123feb9\u003e] kobject_add+0x69/0x90\n [\u003cffffffff8116efe0\u003e] ? sysfs_remove_dir+0x20/0xa0\n [\u003cffffffff8103d48d\u003e] ? sub_preempt_count+0x9d/0xe0\n [\u003cffffffff8143de20\u003e] ? _raw_spin_unlock+0x30/0x50\n [\u003cffffffff8116efe0\u003e] ? sysfs_remove_dir+0x20/0xa0\n [\u003cffffffff8116eff4\u003e] ? sysfs_remove_dir+0x34/0xa0\n [\u003cffffffff81224204\u003e] elv_register_queue+0x34/0xa0\n [\u003cffffffff81224aad\u003e] elevator_change+0xfd/0x250\n [\u003cffffffffa007e000\u003e] ? t_init+0x0/0x361 [t]\n [\u003cffffffffa007e000\u003e] ? t_init+0x0/0x361 [t]\n [\u003cffffffffa007e0a8\u003e] t_init+0xa8/0x361 [t]\n [\u003cffffffff810001de\u003e] do_one_initcall+0x3e/0x170\n [\u003cffffffff8108c3fd\u003e] sys_init_module+0xbd/0x220\n [\u003cffffffff81002f2b\u003e] system_call_fastpath+0x16/0x1b\nCode: e5 41 56 41 55 41 54 49 89 fc 53 48 83 ec 10 48 85 ff 74 52 48 8b 47 18 49 c7 c5 00 46 61 81 48 85 c0 74 04 4c 8b 68 30 45 31 f6 \u003c41\u003e 80 7d 51 00 74 0e 49 8b 44 24 28 4c 89 e7 ff 50 20 49 89 c6\nRIP  [\u003cffffffff8116f15e\u003e] sysfs_create_dir+0x2e/0xc0\n RSP \u003cffff88027da25d08\u003e\nCR2: 0000000000000051\n---[ end trace a6541d3bf07945df ]---\n\nFix this by adding a registered bit to the elevator queue, which is\nset when the sysfs kobjects have been registered.\n\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "2a48fc0ab24241755dc93bfd4f01d68efab47f5a",
      "tree": "fa9ae10ce89b26b7d8ae9ce24bdfda5e3007b763",
      "parents": [
        "613655fa39ff6957754fa8ceb8559980920eb8ee"
      ],
      "author": {
        "name": "Arnd Bergmann",
        "email": "arnd@arndb.de",
        "time": "Wed Jun 02 14:28:52 2010 +0200"
      },
      "committer": {
        "name": "Arnd Bergmann",
        "email": "arnd@arndb.de",
        "time": "Tue Oct 05 15:01:10 2010 +0200"
      },
      "message": "block: autoconvert trivial BKL users to private mutex\n\nThe block device drivers have all gained new lock_kernel\ncalls from a recent pushdown, and some of the drivers\nwere already using the BKL before.\n\nThis turns the BKL into a set of per-driver mutexes.\nStill need to check whether this is safe to do.\n\nfile\u003d$1\nname\u003d$2\nif grep -q lock_kernel ${file} ; then\n    if grep -q \u0027include.*linux.mutex.h\u0027 ${file} ; then\n            sed -i \u0027/include.*\u003clinux\\/smp_lock.h\u003e/d\u0027 ${file}\n    else\n            sed -i \u0027s/include.*\u003clinux\\/smp_lock.h\u003e.*$/include \u003clinux\\/mutex.h\u003e/g\u0027 ${file}\n    fi\n    sed -i ${file} \\\n        -e \"/^#include.*linux.mutex.h/,$ {\n                1,/^\\(static\\|int\\|long\\)/ {\n                     /^\\(static\\|int\\|long\\)/istatic DEFINE_MUTEX(${name}_mutex);\n\n} }\"  \\\n    -e \"s/\\(un\\)*lock_kernel\\\u003e[ ]*()/mutex_\\1lock(\\\u0026${name}_mutex)/g\" \\\n    -e \u0027/[      ]*cycle_kernel_lock();/d\u0027\nelse\n    sed -i -e \u0027/include.*\\\u003csmp_lock.h\\\u003e/d\u0027 ${file}  \\\n                -e \u0027/cycle_kernel_lock()/d\u0027\nfi\n\nSigned-off-by: Arnd Bergmann \u003carnd@arndb.de\u003e\n"
    },
    {
      "commit": "c49c06e4960949a9bced708858433fcf6ca36a9c",
      "tree": "071c65544a98b6b0b599896591855f8ac69ab79a",
      "parents": [
        "9355aede5a3c4975e0ba8bbfe2b9d1fd73308916"
      ],
      "author": {
        "name": "Vivek Goyal",
        "email": "vgoyal@redhat.com",
        "time": "Fri Oct 01 21:16:42 2010 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Fri Oct 01 21:16:42 2010 +0200"
      },
      "message": "blkio-throttle: Fix possible multiplication overflow in iops calculations\n\no User can specify max iops value of 32bit (UINT_MAX), through cgroup\n  interface. If a user has specified say 4294967294 (UNIT_MAX  - 2), then\n  on 32bit platform, following multiplication can overflow.\n\n  io_allowed \u003d (tg-\u003eiops[rw] * jiffy_elapsed_rnd)\n\no Explicitly cast the multiplication to 64bit and then perform division and\n  then check whether result is still great then UNINT_MAX.\n\nSigned-off-by: Vivek Goyal \u003cvgoyal@redhat.com\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "9355aede5a3c4975e0ba8bbfe2b9d1fd73308916",
      "tree": "73db212009de0e60d71d343b737d6a90449b06b8",
      "parents": [
        "5e901a2b95db709c5e40599ff4df6029be1e2a12"
      ],
      "author": {
        "name": "Vivek Goyal",
        "email": "vgoyal@redhat.com",
        "time": "Fri Oct 01 21:16:41 2010 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Fri Oct 01 21:16:41 2010 +0200"
      },
      "message": "blkio-throttle: limit max iops value to UINT_MAX\n\n- Limit max iops value to UINT_MAX and return error to user if value is more\n  than that instead of accepting bigger values and truncating implicitly.\n\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "5e901a2b95db709c5e40599ff4df6029be1e2a12",
      "tree": "e2450a1157c6f9411429fceb9939002d8c0282f8",
      "parents": [
        "3aad5d3ee4e4fce8f4b5bb6ca73342dcade42b33"
      ],
      "author": {
        "name": "Vivek Goyal",
        "email": "vgoyal@redhat.com",
        "time": "Fri Oct 01 21:16:38 2010 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Fri Oct 01 21:16:38 2010 +0200"
      },
      "message": "blkio-throttle: There is no need to convert jiffies to milli seconds\n\no Do not convert jiffies to mili seconds as it is not required. Just work\n  with jiffies and HZ.\n\nSigned-off-by: Vivek Goyal \u003cvgoyal@redhat.com\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "3aad5d3ee4e4fce8f4b5bb6ca73342dcade42b33",
      "tree": "1ba65d361b6d77761f53769fc8891a56085422c6",
      "parents": [
        "fe0714377ee2ca161bf2afb7773e22f15f1786d4"
      ],
      "author": {
        "name": "Vivek Goyal",
        "email": "vgoyal@redhat.com",
        "time": "Fri Oct 01 14:51:14 2010 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Fri Oct 01 14:51:14 2010 +0200"
      },
      "message": "blkio-throttle: Fix link failure failure on i386\n\no Randy Dunlap reported following linux-next failure. This patch fixes it.\n\non i386:\n\nblk-throttle.c:(.text+0x1abb8): undefined reference to `__udivdi3\u0027\nblk-throttle.c:(.text+0x1b1dc): undefined reference to `__udivdi3\u0027\n\no bytes_per_second interface is 64bit and I was continuing to do 64 bit\n  division even on 32bit platform without help of special macros/functions\n  hence the failure.\n\nSigned-off-by: Vivek Goyal \u003cvgoyal@redhat.com\u003e\nReported-by: Randy Dunlap \u003crandy.dunlap@oracle.com\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "fe0714377ee2ca161bf2afb7773e22f15f1786d4",
      "tree": "09f5e8686d741d012333c92251b8cc66793ef916",
      "parents": [
        "02977e4af7ed3b478c505e50491ffdf3e1314cf4"
      ],
      "author": {
        "name": "Vivek Goyal",
        "email": "vgoyal@redhat.com",
        "time": "Fri Oct 01 14:49:49 2010 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Fri Oct 01 14:49:49 2010 +0200"
      },
      "message": "blkio: Recalculate the throttled bio dispatch time upon throttle limit change\n\no Currently any cgroup throttle limit changes are processed asynchronousy and\n  the change does not take affect till a new bio is dispatched from same group.\n\no It might happen that a user sets a redicuously low limit on throttling.\n  Say 1 bytes per second on reads. In such cases simple operations like mount\n  a disk can wait for a very long time.\n\no Once bio is throttled, there is no easy way to come out of that wait even if\n  user increases the read limit later.\n\no This patch fixes it. Now if a user changes the cgroup limits, we recalculate\n  the bio dispatch time according to new limits.\n\no Can\u0027t take queueu lock under blkcg_lock, hence after the change I wake\n  up the dispatch thread again which recalculates the time. So there are some\n  variables being synchronized across two threads without lock and I had to\n  make use of barriers. Hoping I have used barriers correctly. Any review of\n  memory barrier code especially will help.\n\nSigned-off-by: Vivek Goyal \u003cvgoyal@redhat.com\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "02977e4af7ed3b478c505e50491ffdf3e1314cf4",
      "tree": "5adb947a5c8567cbbff79459e9feaccf354fd81f",
      "parents": [
        "61014e96e6ed55b8db0af31574eec2a75d4e8755"
      ],
      "author": {
        "name": "Vivek Goyal",
        "email": "vgoyal@redhat.com",
        "time": "Fri Oct 01 14:49:48 2010 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Fri Oct 01 14:49:48 2010 +0200"
      },
      "message": "blkio: Add root group to td-\u003etg_list\n\no Currently all the dynamically allocated groups, except root grp is added\n  to td-\u003etg_list. This was not a problem so far but in next patch I will\n  travel through td-\u003etg_list to process any updates of limits on the group.\n  If root group is not in tg_list, then root group\u0027s updates are not\n  processed.\n\no It is better to root group also to tg_list instead of doing special\n  processing for it during limit updates.\n\nSigned-off-by: Vivek Goyal \u003cvgoyal@redhat.com\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "61014e96e6ed55b8db0af31574eec2a75d4e8755",
      "tree": "69201251c3c5c51a0ed31dbe595743e60fbdaf52",
      "parents": [
        "13f98250f587b7defa39ed738dfa74b600e46e7b"
      ],
      "author": {
        "name": "Vivek Goyal",
        "email": "vgoyal@redhat.com",
        "time": "Fri Oct 01 14:49:44 2010 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Fri Oct 01 14:49:44 2010 +0200"
      },
      "message": "blkio: deletion of a cgroup was causes oops\n\no Now a cgroup list of blkg elements can contain blkg from multiple policies.\n  Before sending an unlink event, make sure blkg belongs to they policy. If\n  policy does not own the blkg, do not send update for this blkg.\n\nSigned-off-by: Vivek Goyal \u003cvgoyal@redhat.com\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "13f98250f587b7defa39ed738dfa74b600e46e7b",
      "tree": "9d06cb3cd0c8737d1c9289ad6d19e4f4c8ec601f",
      "parents": [
        "efb012b361cf9319cd86ff169afa7550b7aa9336"
      ],
      "author": {
        "name": "Vivek Goyal",
        "email": "vgoyal@redhat.com",
        "time": "Fri Oct 01 14:49:41 2010 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Fri Oct 01 14:49:41 2010 +0200"
      },
      "message": "blkio: Do not export throttle files if CONFIG_BLK_DEV_THROTTLING\u003dn\n\nCurrently throttling related files were visible even if user had disabled\nthrottling using config options. It was switching off background throttling\nof bio but not the cgroup files. This patch fixes it.\n\nSigned-off-by: Vivek Goyal \u003cvgoyal@redhat.com\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "efb012b361cf9319cd86ff169afa7550b7aa9336",
      "tree": "e8c0027db29ec3898d835ca0fa6efab93d86b9bd",
      "parents": [
        "260a67a9e534f0c7d49ddd6451833d54ba39ac81"
      ],
      "author": {
        "name": "Malahal Naineni",
        "email": "malahal@us.ibm.com",
        "time": "Fri Oct 01 14:45:27 2010 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Fri Oct 01 14:45:27 2010 +0200"
      },
      "message": "block: set the bounce_pfn to the actual DMA limit rather than to max memory\n\nThe bounce_pfn of the request queue in 64 bit systems is set to the\ncurrent max_low_pfn. Adding more memory later makes this incorrect.\nMemory allocated beyond this boot time max_low_pfn appear to require\nbounce buffers (bounce buffers are actually not allocated but used in\ncalculating segments that may result in \"over max segments limit\"\nerrors).\n\nSigned-off-by: Malahal Naineni \u003cmalahal@us.ibm.com\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "260a67a9e534f0c7d49ddd6451833d54ba39ac81",
      "tree": "acc1fc416481201b5f38a53a9d6877c00b117fd8",
      "parents": [
        "e4ecda1b60bfd2333c12bbe71b153d3b6bdc831a"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Fri Oct 01 14:42:43 2010 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Fri Oct 01 14:42:43 2010 +0200"
      },
      "message": "block: revert bad fix for memory hotplug causing bounces\n\nRevert \"block: set the bounce_pfn to the actual DMA limit rather than to max memory\"\n\nThis reverts commit c49825facfd4969585224a896a5e717f88450cad.\n\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "f281fb5fe54e15a7ab802945e42f8e24fceb56b2",
      "tree": "51a7dd2e900b8ce4118d1357ab6e187edfc12e25",
      "parents": [
        "a850ea30374ebed32a0724742601861853fde869"
      ],
      "author": {
        "name": "Adrian Hunter",
        "email": "adrian.hunter@nokia.com",
        "time": "Sat Sep 25 12:42:55 2010 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Sat Sep 25 12:42:55 2010 +0200"
      },
      "message": "block: prevent merges of discard and write requests\n\nAdd logic to prevent two I/O requests being merged if\nonly one of them is a discard.  Ditto secure discard.\n\nWithout this fix, it is possible for write requests\nto transform into discard requests.  For example:\n\n  Submit bio 1 to discard 8 sectors from sector n\n  Submit bio 2 to write 8 sectors from sector n + 16\n  Submit bio 3 to write 8 sectors from sector n + 8\n\nBio 1 becomes request 1.  Bio 2 becomes request 2.\nBio 3 is merged with request 2, and then subsequently\nrequest 2 is merged with request 1 resulting in just\none I/O request which discards all 24 sectors.\n\nSigned-off-by: Adrian Hunter \u003cadrian.hunter@nokia.com\u003e\n\n(Moved the checks above the position checks /Jens)\n\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "c49825facfd4969585224a896a5e717f88450cad",
      "tree": "2c244fdf033f858147875333024838e493d9e43e",
      "parents": [
        "4b1977698ceb4c4caa800d475127139da49966f9"
      ],
      "author": {
        "name": "Malahal Naineni",
        "email": "malahal@us.ibm.com",
        "time": "Fri Sep 24 20:25:49 2010 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Fri Sep 24 20:27:16 2010 +0200"
      },
      "message": "block: set the bounce_pfn to the actual DMA limit rather than to max memory\n\nThe bounce_pfn of the request queue in 64 bit systems is set to the\ncurrent max_low_pfn. Adding more memory later makes this incorrect.\nMemory allocated beyond this boot time max_low_pfn appear to require\nbounce buffers (bounce buffers are actually not allocated but used in\ncalculating segments that may result in \"over max segments limit\"\nerrors).\n\nSigned-off-by: Malahal Naineni \u003cmalahal@us.ibm.com\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "4b1977698ceb4c4caa800d475127139da49966f9",
      "tree": "9302bafc15dfb6d3923febaa982feb2cb12063cb",
      "parents": [
        "749ef9f8423054e326f3a246327ed2db4b6d395f"
      ],
      "author": {
        "name": "Mark Lord",
        "email": "kernel@teksavvy.com",
        "time": "Fri Sep 24 09:51:13 2010 -0400"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Fri Sep 24 15:52:09 2010 +0200"
      },
      "message": "block: Prevent hang_check firing during long I/O\n\nDuring long I/O operations, the hang_check timer may fire,\ntrigger stack dumps that unnecessarily alarm the user.\n\nEg.  hdparm --security-erase NULL /dev/sdb  ## can take *hours* to complete\n\nSo, if hang_check is armed, we should wake up periodically\nto prevent it from triggering.  This patch uses a wake-up interval\nequal to half the hang_check timer period, which keeps overhead low enough.\n\nSigned-off-by: Mark Lord \u003cmlord@pobox.com\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "180be2a0420a0d680285e9352c0db85016b9ed2a",
      "tree": "455f9f890a52bf728c4d8ab96f8773ff41347a5c",
      "parents": [
        "a45dc2d2b8d1afa57c91dcfac224e50ffcd3f805"
      ],
      "author": {
        "name": "Vivek Goyal",
        "email": "vgoyal@redhat.com",
        "time": "Tue Sep 14 08:47:11 2010 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Tue Sep 21 11:49:17 2010 +0200"
      },
      "message": "cfq-iosched: fix a kernel OOPs when usb key is inserted\n\nMike reported a kernel crash when a usb key hotplug is performed while all\nkernel thrads are not in a root cgroup and are running in one of the child\ncgroups of blkio controller.\n\n\tBUG: unable to handle kernel NULL pointer dereference at 0000002c\n\tIP: [\u003cc11c7b08\u003e] cfq_get_queue+0x232/0x412\n\t*pde \u003d 00000000\n\tOops: 0000 [#1] PREEMPT\n\tlast sysfs file: /sys/devices/pci0000:00/0000:00:1d.7/usb2/2-1/2-1:1.0/host3/scsi_host/host3/uevent\n\n\t[..]\n\tPid: 30039, comm: scsi_scan_3 Not tainted 2.6.35.2-fg.roam #1 Volvi2                         /Aspire 4315\n\tEIP: 0060:[\u003cc11c7b08\u003e] EFLAGS: 00010086 CPU: 0\n\tEIP is at cfq_get_queue+0x232/0x412\n\tEAX: f705f9c0 EBX: e977abac ECX: 00000000 EDX: 00000000\n\tESI: f00da400 EDI: f00da4ec EBP: e977a800 ESP: dff8fd00\n\t DS: 007b ES: 007b FS: 0000 GS: 0000 SS: 0068\n\tProcess scsi_scan_3 (pid: 30039, ti\u003ddff8e000 task\u003df6b6c9a0 task.ti\u003ddff8e000)\n\tStack:\n\t 00000000 00000000 00000001 01ff0000 f00da508 00000000 f00da524 f00da540\n\t\u003c0\u003e e7994940 dd631750 f705f9c0 e977a820 e977ac44 f00da4d0 00000001 f6b6c9a0\n\t\u003c0\u003e 00000010 00008010 0000000b 00000000 00000001 e977a800 dd76fac0 00000246\n\tCall Trace:\n\t [\u003cc11c7f10\u003e] ? cfq_set_request+0x228/0x34c\n\t [\u003cc11c7ce8\u003e] ? cfq_set_request+0x0/0x34c\n\t [\u003cc11bb3b9\u003e] ? elv_set_request+0xf/0x1c\n\t [\u003cc11bdd51\u003e] ? get_request+0x1ad/0x22f\n\t [\u003cc11bddf2\u003e] ? get_request_wait+0x1f/0x11a\n\t [\u003cc11d013b\u003e] ? kvasprintf+0x33/0x3b\n\t [\u003cc127b537\u003e] ? scsi_execute+0x1d/0x103\n\t [\u003cc127b675\u003e] ? scsi_execute_req+0x58/0x83\n\t [\u003cc127c391\u003e] ? scsi_probe_and_add_lun+0x188/0x7c2\n\t [\u003cc12718c6\u003e] ? attribute_container_add_device+0x15/0xfa\n\t [\u003cc11c95d1\u003e] ? kobject_get+0xf/0x13\n\t [\u003cc126d1db\u003e] ? get_device+0x10/0x14\n\t [\u003cc127be93\u003e] ? scsi_alloc_target+0x217/0x24d\n\t [\u003cc127cbd8\u003e] ? __scsi_scan_target+0x95/0x480\n\t [\u003cc10204eb\u003e] ? dequeue_entity+0x14/0x1fe\n\t [\u003cc1020491\u003e] ? update_curr+0x165/0x1ab\n\t [\u003cc1020491\u003e] ? update_curr+0x165/0x1ab\n\t [\u003cc127d00d\u003e] ? scsi_scan_channel+0x4a/0x76\n\t [\u003cc127d0b0\u003e] ? scsi_scan_host_selected+0x77/0xad\n\t [\u003cc127d13c\u003e] ? do_scan_async+0x0/0x11a\n\t [\u003cc127d137\u003e] ? do_scsi_scan_host+0x51/0x56\n\t [\u003cc127d13c\u003e] ? do_scan_async+0x0/0x11a\n\t [\u003cc127d14a\u003e] ? do_scan_async+0xe/0x11a\n\t [\u003cc127d13c\u003e] ? do_scan_async+0x0/0x11a\n\t [\u003cc10354c5\u003e] ? kthread+0x5e/0x63\n\t [\u003cc1035467\u003e] ? kthread+0x0/0x63\n\t [\u003cc1002af6\u003e] ? kernel_thread_helper+0x6/0x10\n\tCode: 44 24 1c 54 83 44 24 18 54 83 fa 03 75 94 8b 06 c7 86 64 02 00 00 01 00 00 00 83 e0 03 09 f0 89 06 8b 44 24 28 8b 90 58 01 00 00 \u003c8b\u003e 42 2c 85 c0 75 03 8b 42 08 8d 54 24 48 52 8d 4c 24 50 51 68\n\tEIP: [\u003cc11c7b08\u003e] cfq_get_queue+0x232/0x412 SS:ESP 0068:dff8fd00\n\tCR2: 000000000000002c\n\t---[ end trace 9a88306573f69b12 ]---\n\nThe problem here is that we don\u0027t have bdi-\u003edev information available when\nthread does some IO.  Hence when dev_name() tries to access bdi-\u003edev, it\ncrashes.\n\nThis problem does not happen if kernel threads are in root group as root\ngroup is statically allocated at device initialization time and we don\u0027t\nhit this piece of code.\n\nFix it by delaying the filling of major and minor number information of\ndevice in blk_group.  Initially a blk_group is created with 0 as device\ninformation and this information is filled later once some more IO comes\nin from same group.\n\nReported-by: Mike Kazantsev \u003cmk.fraggod@gmail.com\u003e\nSigned-off-by: Vivek Goyal \u003cvgoyal@redhat.com\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "a45dc2d2b8d1afa57c91dcfac224e50ffcd3f805",
      "tree": "aa36b478521c748f1699390e3f4517a4d9fd6644",
      "parents": [
        "b0722cb1ac84863f57471d2b254457c100319300"
      ],
      "author": {
        "name": "Benny Halevy",
        "email": "bhalevy@panasas.com",
        "time": "Mon Sep 13 21:32:19 2010 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Tue Sep 21 11:49:17 2010 +0200"
      },
      "message": "block: fix blk_rq_map_kern bio direction flag\n\nThis bug was introduced in 7b6d91daee5cac6402186ff224c3af39d79f4a0e\n\"block: unify flags for struct bio and struct request\"\n\nCc: Boaz Harrosh \u003cbharrosh@panasas.com\u003e\nSigned-off-by: Benny Halevy \u003cbhalevy@panasas.com\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "749ef9f8423054e326f3a246327ed2db4b6d395f",
      "tree": "388df763e4e731f5d9b4d8dcaedca641521571e3",
      "parents": [
        "6d0aed7a38d06284db2a0e46c0a072b0c1c3299b"
      ],
      "author": {
        "name": "Corrado Zoccolo",
        "email": "czoccolo@gmail.com",
        "time": "Mon Sep 20 15:24:50 2010 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Mon Sep 20 15:24:50 2010 +0200"
      },
      "message": "cfq: improve fsync performance for small files\n\nFsync performance for small files achieved by cfq on high-end disks is\nlower than what deadline can achieve, due to idling introduced between\nthe sync write happening in process context and the journal commit.\n\nMoreover, when competing with a sequential reader, a process writing\nsmall files and fsync-ing them is starved.\n\nThis patch fixes the two problems by:\n- marking journal commits as WRITE_SYNC, so that they get the REQ_NOIDLE\n  flag set,\n- force all queues that have REQ_NOIDLE requests to be put in the noidle\n  tree.\n\nHaving the queue associated to the fsync-ing process and the one associated\n to journal commits in the noidle tree allows:\n- switching between them without idling,\n- fairness vs. competing idling queues, since they will be serviced only\n  after the noidle tree expires its slice.\n\nAcked-by: Vivek Goyal \u003cvgoyal@redhat.com\u003e\nReviewed-by: Jeff Moyer \u003cjmoyer@redhat.com\u003e\nTested-by: Jeff Moyer \u003cjmoyer@redhat.com\u003e\nSigned-off-by: Corrado Zoccolo \u003cczoccolo@gmail.com\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "dd3932eddf428571762596e17b65f5dc92ca361b",
      "tree": "57cec5ae2f862037f78b7e993323d77955bb6463",
      "parents": [
        "8786fb70ccb36c7cff64680bb80c46d3a09d44db"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@lst.de",
        "time": "Thu Sep 16 20:51:46 2010 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Thu Sep 16 20:52:58 2010 +0200"
      },
      "message": "block: remove BLKDEV_IFL_WAIT\n\nAll the blkdev_issue_* helpers can only sanely be used for synchronous\ncaller.  To issue cache flushes or barriers asynchronously the caller needs\nto set up a bio by itself with a completion callback to move the asynchronous\nstate machine ahead.  So drop the BLKDEV_IFL_WAIT flag that is always\nspecified when calling blkdev_issue_* and also remove the now unused flags\nargument to blkdev_issue_flush and blkdev_issue_zeroout.  For\nblkdev_issue_discard we need to keep it for the secure discard flag, which\ngains a more descriptive name and loses the bitops vs flag confusion.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "01ea50638bc04ca5259f5711fcdedefcdde1cf43",
      "tree": "c525dc13b05feab90d71b78a1d7adb0ddde081ea",
      "parents": [
        "2786c4e5e54802c34297e55050fef3e862a27b3f"
      ],
      "author": {
        "name": "Signed-off-by: Jan Kara",
        "email": "jack@suse.cz",
        "time": "Thu Sep 16 20:36:36 2010 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Thu Sep 16 20:36:36 2010 +0200"
      },
      "message": "block: Fix race during disk initialization\n\nWhen a new disk is being discovered, add_disk() first ties the bdev to gendisk\n(via register_disk()-\u003eblkdev_get()) and only after that calls\nbdi_register_bdev(). Because register_disk() also creates disk\u0027s kobject, it\ncan happen that userspace manages to open and modify the device\u0027s data (or\ninode) before its BDI is properly initialized leading to a warning in\n__mark_inode_dirty().\n\nFix the problem by registering BDI early enough.\n\nThis patch addresses https://bugzilla.kernel.org/show_bug.cgi?id\u003d16312\n\nCc: stable@kernel.org\nReported-by: Larry Finger \u003cLarry.Finger@lwfinger.net\u003e\nSigned-off-by: Jan Kara \u003cjack@suse.cz\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "8e89d13f4ede2467629a971618537430fafaaea3",
      "tree": "90a79a2997f597715e3ad7edeea507fdb6223882",
      "parents": [
        "7702e8f45b0a3bb262b9366c60beb5445758d94c"
      ],
      "author": {
        "name": "Vivek Goyal",
        "email": "vgoyal@redhat.com",
        "time": "Wed Sep 15 17:06:37 2010 -0400"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Thu Sep 16 08:44:00 2010 +0200"
      },
      "message": "blkio: Implementation of IOPS limit logic\n\no core logic of implementing IOPS throttling.\n\nSigned-off-by: Vivek Goyal \u003cvgoyal@redhat.com\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "7702e8f45b0a3bb262b9366c60beb5445758d94c",
      "tree": "bd61754827def804fe5a1f790f3eb303154df63d",
      "parents": [
        "e43473b7f223ec866f7db273697e76c337c390f9"
      ],
      "author": {
        "name": "Vivek Goyal",
        "email": "vgoyal@redhat.com",
        "time": "Wed Sep 15 17:06:36 2010 -0400"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Thu Sep 16 08:42:58 2010 +0200"
      },
      "message": "blk-cgroup: cgroup changes for IOPS limit support\n\no cgroup changes for IOPS throttling rules.\n\nSigned-off-by: Vivek Goyal \u003cvgoyal@redhat.com\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "e43473b7f223ec866f7db273697e76c337c390f9",
      "tree": "e90b52dbe4ec4ae37263a00e2bd9eaf5367cf72f",
      "parents": [
        "4c9eefa16c6f124ffcc736cb719b24ea27f85017"
      ],
      "author": {
        "name": "Vivek Goyal",
        "email": "vgoyal@redhat.com",
        "time": "Wed Sep 15 17:06:35 2010 -0400"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Thu Sep 16 08:42:52 2010 +0200"
      },
      "message": "blkio: Core implementation of throttle policy\n\no Actual implementation of throttling policy in block layer. Currently it\n  implements READ and WRITE bytes per second throttling logic. IOPS throttling\n  comes in later patches.\n\nSigned-off-by: Vivek Goyal \u003cvgoyal@redhat.com\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "4c9eefa16c6f124ffcc736cb719b24ea27f85017",
      "tree": "0fc333553f66b72c3eb1bd532e45040d90e68f1f",
      "parents": [
        "062a644d6121d5e2f51c0b2ca0cbc5155ebf845b"
      ],
      "author": {
        "name": "Vivek Goyal",
        "email": "vgoyal@redhat.com",
        "time": "Wed Sep 15 17:06:34 2010 -0400"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Thu Sep 16 08:42:12 2010 +0200"
      },
      "message": "blk-cgroup: Introduce cgroup changes for throttling policy\n\no cgroup chagnes for throttle policy.\n\no Introduces READ and WRITE bytes per second throttling rules.\n\nSigned-off-by: Vivek Goyal \u003cvgoyal@redhat.com\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "062a644d6121d5e2f51c0b2ca0cbc5155ebf845b",
      "tree": "250626a8ee11efa8e598692904e12ac26c29cab5",
      "parents": [
        "af41d7bd9b685ab4e8f930627874ba4f4728e128"
      ],
      "author": {
        "name": "Vivek Goyal",
        "email": "vgoyal@redhat.com",
        "time": "Wed Sep 15 17:06:33 2010 -0400"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Thu Sep 16 08:42:04 2010 +0200"
      },
      "message": "blk-cgroup: Prepare the base for supporting more than one IO control policies\n\no This patch prepares the base for introducing new IO control policies.\n  Currently all the code is written knowing there is only one policy\n  and that is proportional bandwidth. Creating infrastructure for newer\n  policies to come in.\n\no Also there were many functions which were generated using macro. It was\n  very confusing. Got rid of those.\n\nSigned-off-by: Vivek Goyal \u003cvgoyal@redhat.com\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "af41d7bd9b685ab4e8f930627874ba4f4728e128",
      "tree": "f91be30499efd1c39a3417cb19186ecca261ebe2",
      "parents": [
        "38b6f45a97bbb8536cc7d095b577f580bd4d643e"
      ],
      "author": {
        "name": "Vivek Goyal",
        "email": "vgoyal@redhat.com",
        "time": "Wed Sep 15 17:06:32 2010 -0400"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Thu Sep 16 08:40:42 2010 +0200"
      },
      "message": "blk-cgroup: Kill the header printed at the start of blkio.weight_device file\n\no Kill extra \"dev weight\" header which is printed when somebody reads\n  blkio.weight_device file. This really seems to be out of convention. No other\n  blkio files are printing any header at the start of file. I think it is ok\n  to just print values and how to interpret values should be part of\n  documentation.\n\nSigned-off-by: Vivek Goyal \u003cvgoyal@redhat.com\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "b5af921ec02333e943efb59aca4f56b78fc0e100",
      "tree": "fcf966ccbee9c5f8b8f652100f033bc781b91b91",
      "parents": [
        "eec7ecfede74bb996060efefd5c157acd5794e8a"
      ],
      "author": {
        "name": "Will Drewry",
        "email": "wad@chromium.org",
        "time": "Tue Aug 31 15:47:07 2010 -0500"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Wed Sep 15 16:14:03 2010 +0200"
      },
      "message": "init: add support for root devices specified by partition UUID\n\nThis is the third patch in a series which adds support for\nstoring partition metadata, optionally, off of the hd_struct.\n\nOne major use for that data is being able to resolve partition\nby other identities than just the index on a block device.  Device\nenumeration varies by platform and there\u0027s a benefit to being able\nto use something like EFI GPT\u0027s GUIDs to determine the correct\nblock device and partition to mount as the root.\n\nThis change adds that support to root\u003d by adding support for\nthe following syntax:\n\n  root\u003dPARTUUID\u003dhex-uuid\n\nSigned-off-by: Will Drewry \u003cwad@chromium.org\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "6d1d8050b4bc89d0165d29b58e894aeba2564a97",
      "tree": "b5c5b730bd7b80fe9041c031a6fcf08f42fff0d5",
      "parents": [
        "144177991ca624841ddbd1e7edff958fc0f6d1fe"
      ],
      "author": {
        "name": "Will Drewry",
        "email": "wad@chromium.org",
        "time": "Tue Aug 31 15:47:05 2010 -0500"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Wed Sep 15 16:13:18 2010 +0200"
      },
      "message": "block, partition: add partition_meta_info to hd_struct\n\nI\u0027m reposting this patch series as v4 since there have been no additional\ncomments, and I cleaned up one extra bit of unneeded code (in 3/3). The patches\nare against Linus\u0027s tree: 2bfc96a127bc1cc94d26bfaa40159966064f9c8c\n(2.6.36-rc3).\n\nWould this patchset be suitable for inclusion in an mm branch?\n\nThis changes adds a partition_meta_info struct which itself contains a\nunion of structures that provide partition table specific metadata.\n\nThis change leaves the union empty. The subsequent patch includes an\nimplementation for CONFIG_EFI_PARTITION-based metadata.\n\nSigned-off-by: Will Drewry \u003cwad@chromium.org\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "144177991ca624841ddbd1e7edff958fc0f6d1fe",
      "tree": "793a42427d46585c0acfcfe97d23e604174a2c10",
      "parents": [
        "8dcbdc742fec9e6c542ff9cb599d2ee620753d07"
      ],
      "author": {
        "name": "Namhyung Kim",
        "email": "namhyung@gmail.com",
        "time": "Wed Sep 15 13:08:27 2010 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Wed Sep 15 13:08:27 2010 +0200"
      },
      "message": "block: fix an address space warning in blk-map.c\n\nChange type of 2nd parameter of blk_rq_aligned() into unsigned long\nand remove unnecessary casting. Now we can call it with \u0027uaddr\u0027\ninstead of \u0027ubuf\u0027 in __blk_rq_map_user() so that it can remove\nfollowing warnings from sparse:\n\n block/blk-map.c:57:31: warning: incorrect type in argument 2 (different address spaces)\n block/blk-map.c:57:31:    expected void *addr\n block/blk-map.c:57:31:    got void [noderef] \u003casn:1\u003e*ubuf\n\nHowever blk_rq_map_kern() needs one more local variable to handle it.\n\nSigned-off-by: Namhyung Kim \u003cnamhyung@gmail.com\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "8dcbdc742fec9e6c542ff9cb599d2ee620753d07",
      "tree": "45e7a5f4be8c27773d303d66fe316e491bbf800f",
      "parents": [
        "175b79f0632544d62aae72e5496c14e3e3ff2ae7"
      ],
      "author": {
        "name": "San Mehat",
        "email": "san@android.com",
        "time": "Tue Sep 14 08:48:01 2010 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Tue Sep 14 08:48:01 2010 +0200"
      },
      "message": "block: block_dump: Add number of sectors to debug output\n\nSigned-off-by: San Mehat \u003csan@android.com\u003e\nSigned-off-by: Linus Walleij \u003clinus.walleij@stericsson.com\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "13f05c8d8e98bbdce89158bfdb2e380940695a88",
      "tree": "055215e7e2b1bdc684ead64daa61b30b35eaa3c5",
      "parents": [
        "c8bf1336824ebd698d37b71763e1c43190f2229a"
      ],
      "author": {
        "name": "Martin K. Petersen",
        "email": "martin.petersen@oracle.com",
        "time": "Fri Sep 10 20:50:10 2010 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@carl.home.kernel.dk",
        "time": "Fri Sep 10 20:50:10 2010 +0200"
      },
      "message": "block/scsi: Provide a limit on the number of integrity segments\n\nSome controllers have a hardware limit on the number of protection\ninformation scatter-gather list segments they can handle.\n\nIntroduce a max_integrity_segments limit in the block layer and provide\na new scsi_host_template setting that allows HBA drivers to provide a\nvalue suitable for the hardware.\n\nAdd support for honoring the integrity segment limit when merging both\nbios and requests.\n\nSigned-off-by: Martin K. Petersen \u003cmartin.petersen@oracle.com\u003e\nSigned-off-by: Jens Axboe \u003caxboe@carl.home.kernel.dk\u003e\n"
    },
    {
      "commit": "c8bf1336824ebd698d37b71763e1c43190f2229a",
      "tree": "19948b3c686ba71bb2e85883a5325cec069015b7",
      "parents": [
        "76be97c1fc945db08aae1f1b746012662d643e97"
      ],
      "author": {
        "name": "Martin K. Petersen",
        "email": "martin.petersen@oracle.com",
        "time": "Fri Sep 10 20:07:38 2010 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@carl.home.kernel.dk",
        "time": "Fri Sep 10 20:07:38 2010 +0200"
      },
      "message": "Consolidate min_not_zero\n\nWe have several users of min_not_zero, each of them using their own\ndefinition.  Move the define to kernel.h.\n\nSigned-off-by: Martin K. Petersen \u003cmartin.petersen@oracle.com\u003e\nSigned-off-by: Jens Axboe \u003caxboe@carl.home.kernel.dk\u003e\n"
    },
    {
      "commit": "8c5553678237b7121355108e03c36086037d8975",
      "tree": "7ecbc41837bf2dac6010230839e3312d6d33dd35",
      "parents": [
        "31725e65c7214b52b607eba705fc4f306be4d5a5"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@infradead.org",
        "time": "Wed Aug 18 05:29:22 2010 -0400"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Fri Sep 10 12:35:40 2010 +0200"
      },
      "message": "block: remove the BLKDEV_IFL_BARRIER flag\n\nRemove support for barriers on discards, which is unused now.  Also\nremove the DISCARD_NOBARRIER I/O type in favour of just setting the\nrw flags up locally in blkdev_issue_discard.\n\ntj: Also remove DISCARD_SECURE and use REQ_SECURE directly.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nAcked-by: Mike Snitzer \u003csnitzer@redhat.com\u003e\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "3a2edd0d6ddbd5fa3b389ea6db811285415ce6c8",
      "tree": "5752d02cc755e242270f700d442f35b5fc9557d9",
      "parents": [
        "e9c7469bb4f502dafc092166201bea1ad5fc0fbf"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Fri Sep 03 11:56:18 2010 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Fri Sep 10 12:35:38 2010 +0200"
      },
      "message": "block: make __blk_rq_prep_clone() copy most command flags\n\nCurrently __blk_rq_prep_clone() copies only REQ_WRITE and REQ_DISCARD.\nThere\u0027s no reason to omit other command flags and REQ_FUA needs to be\ncopied to implement FUA support in request-based dm.\n\nREQ_COMMON_MASK which specifies flags to be copied from bio to request\nalready identifies all the command flags.  Define REQ_CLONE_MASK to be\nthe same as REQ_COMMON_MASK for clarity and make __blk_rq_prep_clone()\ncopy all flags in the mask.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nReviewed-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "d391a2dda2f1c993f094bdb3a8a342c5e0546553",
      "tree": "315b4d8431db05b96d578e2d7183081b91fa4e84",
      "parents": [
        "04ccc65cd1f57aee861708e08cd2272c5a0d088c"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Fri Sep 03 11:56:17 2010 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Fri Sep 10 12:35:37 2010 +0200"
      },
      "message": "block: use REQ_FLUSH in blkdev_issue_flush()\n\nUpdate blkdev_issue_flush() to use new REQ_FLUSH interface.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nCc: Christoph Hellwig \u003chch@infradead.org\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    }
  ],
  "next": "09d60c701b64b509f328cac72970eb894f485b9e"
}
