)]}'
{
  "log": [
    {
      "commit": "f1cd14ae52985634d0389e934eba25b5ecf24565",
      "tree": "131e1fedd27d63d30896233d695594508bdbd04f",
      "parents": [
        "a53a6c85756339f82ff19e001e90cfba2d6299a8"
      ],
      "author": {
        "name": "Andre Noll",
        "email": "maan@systemlinux.org",
        "time": "Thu Nov 06 19:41:24 2008 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Nov 06 19:41:24 2008 +1100"
      },
      "message": "md: linear: Fix a division by zero bug for very small arrays.\n\nWe currently oops with a divide error on starting a linear software\nraid array consisting of at least two very small (\u003c 500K) devices.\n\nThe bug is caused by the calculation of the hash table size which\ntries to compute sector_div(sz, base) with \"base\" being zero due to\nthe small size of the component devices of the array.\n\nFix this by requiring the hash spacing to be at least one which\nimplies that also \"base\" is non-zero.\n\nThis bug has existed since about 2.6.14.\n\nCc: stable@kernel.org\nSigned-off-by: Andre Noll \u003cmaan@systemlinux.org\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "a53a6c85756339f82ff19e001e90cfba2d6299a8",
      "tree": "1c2d2601ad6c75aae1f47313f7df256556161fc7",
      "parents": [
        "cb3ac42b8af357fdd9ad838234245b39e5bdb7fe"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Nov 06 17:28:20 2008 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Nov 06 17:28:20 2008 +1100"
      },
      "message": "md: fix bug in raid10 recovery.\n\nAdding a spare to a raid10 doesn\u0027t cause recovery to start.\nThis is due to an silly type in\n  commit 6c2fce2ef6b4821c21b5c42c7207cb9cf8c87eda\nand so is a bug in 2.6.27 and .28-rc.\n\nThanks to Thomas Backlund for bisecting to find this.\n\nCc: Thomas Backlund \u003ctmb@mandriva.org\u003e\nCc: stable@kernel.org\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "cb3ac42b8af357fdd9ad838234245b39e5bdb7fe",
      "tree": "f6c354c2ec374fa35fe64902204d212f0ef30bd4",
      "parents": [
        "45beca08dd8b6d6a65c5ffd730af2eac7a2c7a03"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Nov 06 17:28:01 2008 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Nov 06 17:28:01 2008 +1100"
      },
      "message": "md: revert the recent addition of a call to the BLKRRPART ioctl.\n\nIt turns out that it is only safe to call blkdev_ioctl when the device\nis actually open (as -\u003ebd_disk is set to NULL on last close).  And it\nis quite possible for do_md_stop to be called when the device is not\nopen.  So discard the call to blkdev_ioctl(BLKRRPART) which was\nadded in\n   commit 934d9c23b4c7e31840a895ba4b7e88d6413c81f3\n\nIt is just as easy to call this ioctl from userspace when needed (on\nmdadm -S) so leave it out of the kernel\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "721d5dfe7e516954c501d5e9d0dfab379cf4241a",
      "tree": "3056d4ffeecd171cf9f091437e721d2556e63c6d",
      "parents": [
        "f2347dfcd14fd9e30714656cb27be2b7abe59c63",
        "934d9c23b4c7e31840a895ba4b7e88d6413c81f3"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Oct 30 18:36:16 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Oct 30 18:36:16 2008 -0700"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://neil.brown.name/md\n\n* \u0027for-linus\u0027 of git://neil.brown.name/md:\n  md: destroy partitions and notify udev when md array is stopped.\n"
    },
    {
      "commit": "879129d208f725267366296b631aef31409cf304",
      "tree": "7dd927ae094580f6a3fe420c0cc5f8e251ce9e9e",
      "parents": [
        "60c856c8e2f57a3f69c505735ef66e3719ea0bd6"
      ],
      "author": {
        "name": "Mikulas Patocka",
        "email": "mpatocka@redhat.com",
        "time": "Thu Oct 30 13:33:16 2008 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Thu Oct 30 13:33:16 2008 +0000"
      },
      "message": "dm snapshot: wait for chunks in destructor\n\nIf there are several snapshots sharing an origin and one is removed\nwhile the origin is being written to, the snapshot\u0027s mempool may get\ndeleted while elements are still referenced.\n\nPrior to dm-snapshot-use-per-device-mempools.patch the pending\nexceptions may still have been referenced after the snapshot was\ndestroyed, but this was not a problem because the shared mempool\nwas still there.\n\nThis patch fixes the problem by tracking the number of mempool elements\nin use.\n\nThe scenario:\n- You have an origin and two snapshots 1 and 2.\n- Someone writes to the origin.\n- It creates two exceptions in the snapshots, snapshot 1 will be primary\nexception, snapshot 2\u0027s pending_exception-\u003eprimary_pe will point to the\nexception in snapshot 1.\n- The exceptions are being relocated, relocation of exception 1 finishes\n(but it\u0027s pending_exception is still allocated, because it is referenced\nby an exception from snapshot 2)\n- The user lvremoves snapshot 1 --- it calls just suspend (does nothing)\nand destructor. md-\u003epending is zero (there is no I/O submitted to the\nsnapshot by md layer), so it won\u0027t help us.\n- The destructor waits for kcopyd jobs to finish on snapshot 1 --- but\nthere are none.\n- The destructor on snapshot 1 cleans up everything.\n- The relocation of exception on snapshot 2 finishes, it drops reference\non primary_pe. This frees its primary_pe pointer. Primary_pe points to\npending exception created for snapshot 1. So it frees memory into\nnon-existing mempool.\n\nSigned-off-by: Mikulas Patocka \u003cmpatocka@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "60c856c8e2f57a3f69c505735ef66e3719ea0bd6",
      "tree": "a6295bec9c1fa01885ef14befa4ae3618f51ca57",
      "parents": [
        "b34578a48459ed1bd5396631aaa4a65d6bcc7726"
      ],
      "author": {
        "name": "Mikulas Patocka",
        "email": "mpatocka@redhat.com",
        "time": "Thu Oct 30 13:33:12 2008 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Thu Oct 30 13:33:12 2008 +0000"
      },
      "message": "dm snapshot: fix register_snapshot deadlock\n\nregister_snapshot() performs a GFP_KERNEL allocation while holding\n_origins_lock for write, but that could write out dirty pages onto a\ndevice that attempts to acquire _origins_lock for read, resulting in\ndeadlock.\n\nSo move the allocation up before taking the lock.\n\nThis path is not performance-critical, so it doesn\u0027t matter that we\nallocate memory and free it if we find that we won\u0027t need it.\n\nSigned-off-by: Mikulas Patocka \u003cmpatocka@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "b34578a48459ed1bd5396631aaa4a65d6bcc7726",
      "tree": "3b7bf0d60d7491403b4a541775b42b8763dbf32d",
      "parents": [
        "e946217e4fdaa67681bbabfa8e6b18641921f750"
      ],
      "author": {
        "name": "Ilpo Jarvinen",
        "email": "ilpo.jarvinen@helsinki.fi",
        "time": "Thu Oct 30 13:33:07 2008 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Thu Oct 30 13:33:07 2008 +0000"
      },
      "message": "dm raid1: fix do_failures\n\nMissing braces.  Commit 1f965b1943 (dm raid1: separate region_hash interface\npart1) broke it.\n\nSigned-off-by: Ilpo Jarvinen \u003cilpo.jarvinen@helsinki.fi\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\nCc: Heinz Mauelshagen \u003chjm@redhat.com\u003e\n"
    },
    {
      "commit": "934d9c23b4c7e31840a895ba4b7e88d6413c81f3",
      "tree": "989d1ac0be656e51d44eaf8513076917bfed3adf",
      "parents": [
        "f8d56f1771e4867acc461146764b4feeb5245669"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Oct 28 17:01:23 2008 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Oct 28 17:01:23 2008 +1100"
      },
      "message": "md: destroy partitions and notify udev when md array is stopped.\n\nmd arrays are not currently destroyed when they are stopped - they\nremain in /sys/block.  Last time I tried this I tripped over locking\ntoo much.\n\nA consequence of this is that udev doesn\u0027t remove anything from /dev.\nThis is rather ugly.\n\nAs an interim measure until proper device removal can be achieved,\nmake sure all partitions are removed using the BLKRRPART ioctl, and\nsend a KOBJ_CHANGE when an md array is stopped.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "f8d56f1771e4867acc461146764b4feeb5245669",
      "tree": "9d4857b72287f3170818b4b883c232e3ffb677af",
      "parents": [
        "3d6eadcb5008beca1b289983ffd7771d1e947bac",
        "92850bbd71228730c80efd491e7427650188d359"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Oct 26 16:42:18 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Oct 26 16:42:18 2008 -0700"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://neil.brown.name/md\n\n* \u0027for-linus\u0027 of git://neil.brown.name/md:\n  md: allow extended partitions on md devices.\n  md: use sysfs_notify_dirent to notify changes to md/dev-xxx/state\n  md: use sysfs_notify_dirent to notify changes to md/array_state\n"
    },
    {
      "commit": "22484856402bfa1ff3defe47f6029ab0418240d9",
      "tree": "140c67bf59674da350a7b51765d6ff7eb101b597",
      "parents": [
        "5ed487bc2c44ca4e9668ef9cb54c830e2a9fac47",
        "56b26add02b4bdea81d5e0ebda60db1fe3311ad4"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Oct 23 10:23:07 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Oct 23 10:23:07 2008 -0700"
      },
      "message": "Merge git://git.kernel.org/pub/scm/linux/kernel/git/viro/bdev\n\n* git://git.kernel.org/pub/scm/linux/kernel/git/viro/bdev: (66 commits)\n  [PATCH] kill the rest of struct file propagation in block ioctls\n  [PATCH] get rid of struct file use in blkdev_ioctl() BLKBSZSET\n  [PATCH] get rid of blkdev_locked_ioctl()\n  [PATCH] get rid of blkdev_driver_ioctl()\n  [PATCH] sanitize blkdev_get() and friends\n  [PATCH] remember mode of reiserfs journal\n  [PATCH] propagate mode through swsusp_close()\n  [PATCH] propagate mode through open_bdev_excl/close_bdev_excl\n  [PATCH] pass fmode_t to blkdev_put()\n  [PATCH] kill the unused bsize on the send side of /dev/loop\n  [PATCH] trim file propagation in block/compat_ioctl.c\n  [PATCH] end of methods switch: remove the old ones\n  [PATCH] switch sr\n  [PATCH] switch sd\n  [PATCH] switch ide-scsi\n  [PATCH] switch tape_block\n  [PATCH] switch dcssblk\n  [PATCH] switch dasd\n  [PATCH] switch mtd_blkdevs\n  [PATCH] switch mmc\n  ...\n"
    },
    {
      "commit": "5ed487bc2c44ca4e9668ef9cb54c830e2a9fac47",
      "tree": "af19ed28db83e8f52690872ac99336da1cf2fd3b",
      "parents": [
        "5b34653963de7a6d0d8c783527457d68fddc60fb",
        "fd217f4d70172c526478f2bc76859e909fdfa674"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Oct 23 10:22:40 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Oct 23 10:22:40 2008 -0700"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs-2.6\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs-2.6: (46 commits)\n  [PATCH] fs: add a sanity check in d_free\n  [PATCH] i_version: remount support\n  [patch] vfs: make security_inode_setattr() calling consistent\n  [patch 1/3] FS_MBCACHE: don\u0027t needlessly make it built-in\n  [PATCH] move executable checking into -\u003epermission()\n  [PATCH] fs/dcache.c: update comment of d_validate()\n  [RFC PATCH] touch_mnt_namespace when the mount flags change\n  [PATCH] reiserfs: add missing llseek method\n  [PATCH] fix -\u003ellseek for more directories\n  [PATCH vfs-2.6 6/6] vfs: add LOOKUP_RENAME_TARGET intent\n  [PATCH vfs-2.6 5/6] vfs: remove LOOKUP_PARENT from non LOOKUP_PARENT lookup\n  [PATCH vfs-2.6 4/6] vfs: remove unnecessary fsnotify_d_instantiate()\n  [PATCH vfs-2.6 3/6] vfs: add __d_instantiate() helper\n  [PATCH vfs-2.6 2/6] vfs: add d_ancestor()\n  [PATCH vfs-2.6 1/6] vfs: replace parent \u003d\u003d dentry-\u003ed_parent by IS_ROOT()\n  [PATCH] get rid of on-stack dentry in udf\n  [PATCH 2/2] anondev: switch to IDA\n  [PATCH 1/2] anondev: init IDR statically\n  [JFFS2] Use d_splice_alias() not d_add() in jffs2_lookup()\n  [PATCH] Optimise NFS readdir hack slightly.\n  ...\n"
    },
    {
      "commit": "72e8264eda02b6ba85a222b9620802ebf23c6a10",
      "tree": "4c82b49f538b1ae4e469bbf9a98d76766ab3f768",
      "parents": [
        "3516586a424ea5727be089da6541cbd5644f0497"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@lst.de",
        "time": "Mon Aug 11 00:24:08 2008 +0200"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Thu Oct 23 05:12:57 2008 -0400"
      },
      "message": "[PATCH] dm: kill lookup_device wrapper\n\nNow that lookup_bdev is exported and used by dm just use it directly\ninstead of through a trivial wrapper.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "51157b4ab47e1376c2b93cb854b14b637efeaff2",
      "tree": "76889af489b15aaf8c75d457f29d36336ca0a0a6",
      "parents": [
        "f431d9666fd6e69fbaf305cebc7278d1428950c2"
      ],
      "author": {
        "name": "Kiyoshi Ueda",
        "email": "k-ueda@ct.jp.nec.com",
        "time": "Tue Oct 21 17:45:08 2008 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Tue Oct 21 17:45:08 2008 +0100"
      },
      "message": "dm: tidy local_init\n\nThis patch tidies local_init() in preparation for request-based dm.\nNo functional change.\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: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "f431d9666fd6e69fbaf305cebc7278d1428950c2",
      "tree": "ebd0e7c5deb3e6782f0de657223d071bc11b1983",
      "parents": [
        "1f965b19437017cea6d3f3f46acdc5acae5fd011"
      ],
      "author": {
        "name": "Kiyoshi Ueda",
        "email": "k-ueda@ct.jp.nec.com",
        "time": "Tue Oct 21 17:45:07 2008 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Tue Oct 21 17:45:07 2008 +0100"
      },
      "message": "dm: remove unused flush_all\n\nThis patch removes the DM_WQ_FLUSH_ALL state that is unnecessary.\n\nThe dm_queue_flush(md, DM_WQ_FLUSH_ALL, NULL) in dm_suspend()\nis never invoked because:\n  - \u0027goto flush_and_out\u0027 is the same as \u0027goto out\u0027 because\n    the \u0027goto flush_and_out\u0027 is called only when \u0027!noflush\u0027\n  - If r is non-zero, then the code above will invoke \u0027goto out\u0027\n    and skip this code.\n\nNo functional change.\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: Milan Broz \u003cmbroz@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "1f965b19437017cea6d3f3f46acdc5acae5fd011",
      "tree": "f70fd0684d1afbde7f0031a6f8cb6aa58880723c",
      "parents": [
        "f3e1d26ede3fb15c06904d700f1d7b21bba2215e"
      ],
      "author": {
        "name": "Heinz Mauelshagen",
        "email": "hjm@redhat.com",
        "time": "Tue Oct 21 17:45:06 2008 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Tue Oct 21 17:45:06 2008 +0100"
      },
      "message": "dm raid1: separate region_hash interface part1\n\nSeparate the region hash code from raid1 so it can be shared by forthcoming\ntargets.  Use BUG_ON() for failed async dm_io() calls.\n\nSigned-off-by: Heinz Mauelshagen \u003chjm@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "f3e1d26ede3fb15c06904d700f1d7b21bba2215e",
      "tree": "18ce3a0e4c4005d9737b840b37440e4ad85ed860",
      "parents": [
        "0a4a1047a445062793d9004bcb0d52756726fdf5"
      ],
      "author": {
        "name": "Martin K. Petersen",
        "email": "martin.petersen@oracle.com",
        "time": "Tue Oct 21 17:45:04 2008 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Tue Oct 21 17:45:04 2008 +0100"
      },
      "message": "dm: mark split bio as cloned\n\nWhen a bio gets split, mark its fragments with the BIO_CLONED flag.\n\nSigned-off-by: Martin K. Petersen \u003cmartin.petersen@oracle.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "0a4a1047a445062793d9004bcb0d52756726fdf5",
      "tree": "4fb581827ae3951c0737188301208a4fb73831e3",
      "parents": [
        "393b47ef23bbcf16890c907d0144b5a8ec4caebf"
      ],
      "author": {
        "name": "Milan Broz",
        "email": "mbroz@redhat.com",
        "time": "Tue Oct 21 17:45:03 2008 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Tue Oct 21 17:45:03 2008 +0100"
      },
      "message": "dm crypt: remove waitqueue\n\nRemove waitqueue no longer needed with the async crypto interface.\n\nSigned-off-by: Milan Broz \u003cmbroz@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "393b47ef23bbcf16890c907d0144b5a8ec4caebf",
      "tree": "8f3f26715fe81ef5fb78a6f30a46e163873de6b9",
      "parents": [
        "b635b00e0e159d858486fd899c4021d1d67757e2"
      ],
      "author": {
        "name": "Milan Broz",
        "email": "mbroz@redhat.com",
        "time": "Tue Oct 21 17:45:02 2008 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Tue Oct 21 17:45:02 2008 +0100"
      },
      "message": "dm crypt: fix async split\n\nWhen writing io, dm-crypt has to allocate a new cloned bio\nand encrypt the data into newly-allocated pages attached to this bio.\nIn rare cases, because of hw restrictions (e.g. physical segment limit)\nor memory pressure, sometimes more than one cloned bio has to be used,\neach processing a different fragment of the original.\n\nCurrently there is one waitqueue which waits for one fragment to finish\nand continues processing the next fragment.\n\nBut when using asynchronous crypto this doesn\u0027t work, because several\nfragments may be processed asynchronously or in parallel and there is\nonly one crypt context that cannot be shared between the bio fragments.\nThe result may be corruption of the data contained in the encrypted bio.\n\nThe patch fixes this by allocating new dm_crypt_io structs (with new\ncrypto contexts) and running them independently.\n\nThe fragments contains a pointer to the base dm_crypt_io struct to\nhandle reference counting, so the base one is properly deallocated\nafter all the fragments are finished.\n\nIn a low memory situation, this only uses one additional object from the\nmempool.  If the mempool is empty, the next allocation simple waits for\nprevious fragments to complete.\n\nSigned-off-by: Milan Broz \u003cmbroz@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "b635b00e0e159d858486fd899c4021d1d67757e2",
      "tree": "ceb7bb5bd97142fe4fb5412cbf1f19fa867869c1",
      "parents": [
        "586e80e6ee0d137c7d79fbae183bb37bc60ee97e"
      ],
      "author": {
        "name": "Milan Broz",
        "email": "mbroz@redhat.com",
        "time": "Tue Oct 21 17:45:00 2008 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Tue Oct 21 17:45:00 2008 +0100"
      },
      "message": "dm crypt: tidy sector\n\nPrepare local sector variable (offset) for later patch.\nDo not update io-\u003esector for still-running I/O.\n\nNo functional change.\n\nSigned-off-by: Milan Broz \u003cmbroz@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "586e80e6ee0d137c7d79fbae183bb37bc60ee97e",
      "tree": "1f3cc124ed6ad93abd4c14f9c8900333c6cba6fb",
      "parents": [
        "d63a5ce3c0d25c96bdadc78792e5b48b846e899d"
      ],
      "author": {
        "name": "Mikulas Patocka",
        "email": "mpatocka@redhat.com",
        "time": "Tue Oct 21 17:44:59 2008 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Tue Oct 21 17:44:59 2008 +0100"
      },
      "message": "dm: remove dm header from targets\n\nChange #include \"dm.h\" to #include \u003clinux/device-mapper.h\u003e in all targets.\nTargets should not need direct access to internal DM structures.\n\nSigned-off-by: Mikulas Patocka \u003cmpatocka@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "d63a5ce3c0d25c96bdadc78792e5b48b846e899d",
      "tree": "ac46375b47f784dff17d1e657d5115b45ad86844",
      "parents": [
        "7acedc5b98a2fcff64f00c21110aae7d3ac2f7df"
      ],
      "author": {
        "name": "Mikulas Patocka",
        "email": "mpatocka@redhat.com",
        "time": "Tue Oct 21 17:44:57 2008 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Tue Oct 21 17:44:57 2008 +0100"
      },
      "message": "dm: publish array_too_big\n\nMove array_too_big to include/linux/device-mapper.h because it is\nused by targets.\n\nRemove the test from dm-raid1 as the number of mirror legs is limited\nsuch that it can never fail.  (Even for stripes it seems rather\nunlikely.)\n\nSigned-off-by: Mikulas Patocka \u003cmpatocka@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "7acedc5b98a2fcff64f00c21110aae7d3ac2f7df",
      "tree": "ed9eda05b30d3606f1ad16e368c313b40c616c3d",
      "parents": [
        "7c9e6c17325fab380fbe9c9787680ff7d4a51abd"
      ],
      "author": {
        "name": "Mikulas Patocka",
        "email": "mpatocka@redhat.com",
        "time": "Tue Oct 21 17:44:56 2008 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Tue Oct 21 17:44:56 2008 +0100"
      },
      "message": "dm exception store: fix misordered writes\n\nWe must zero the next chunk on disk *before* writing out the current chunk, not\nafter.  Otherwise if the machine crashes at the wrong time, the \"end of metadata\"\nmarker may be missing.\n\nSigned-off-by: Mikulas Patocka \u003cmpatocka@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\nCc: stable@kernel.org\n"
    },
    {
      "commit": "7c9e6c17325fab380fbe9c9787680ff7d4a51abd",
      "tree": "3d92b66810b90bcef66a0e021e3944f335ebf9fa",
      "parents": [
        "f68d4f3d394da5b1f69d855b8513f4256ccc803e"
      ],
      "author": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Tue Oct 21 17:44:55 2008 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Tue Oct 21 17:44:55 2008 +0100"
      },
      "message": "dm exception store: refactor zero_area\n\nUse a separate buffer for writing zeroes to the on-disk snapshot\nexception store, make the updating of ps-\u003ecurrent_area explicit and\nrefactor the code in preparation for the fix in the next patch.\n\nNo functional change.\n\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\nSigned-off-by: Mikulas Patocka \u003cmpatocka@redhat.com\u003e\nCc: stable@kernel.org\n"
    },
    {
      "commit": "f68d4f3d394da5b1f69d855b8513f4256ccc803e",
      "tree": "0302fdc83ab62aeb9ad891dffd772625219bcbfc",
      "parents": [
        "7c5f78b9d7f21937e46c26db82976df4b459c95c"
      ],
      "author": {
        "name": "Mikulas Patocka",
        "email": "mpatocka@redhat.com",
        "time": "Tue Oct 21 17:44:53 2008 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Tue Oct 21 17:44:53 2008 +0100"
      },
      "message": "dm snapshot: drop unused last_percent\n\nThe last_percent field is unused - remove it.\n(It dates from when events were triggered as each X% filled up.)\n\nSigned-off-by: Mikulas Patocka \u003cmpatocka@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "7c5f78b9d7f21937e46c26db82976df4b459c95c",
      "tree": "dce6b094836929224af2ff16af60ee3109598652",
      "parents": [
        "b673c3a8192e28f13e2050a4b82c1986be92cc15"
      ],
      "author": {
        "name": "Mikulas Patocka",
        "email": "mpatocka@redhat.com",
        "time": "Tue Oct 21 17:44:51 2008 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Tue Oct 21 17:44:51 2008 +0100"
      },
      "message": "dm snapshot: fix primary_pe race\n\nFix a race condition with primary_pe ref_count handling.\n\nput_pending_exception runs under dm_snapshot-\u003elock, it does atomic_dec_and_test\non primary_pe-\u003eref_count, and later does atomic_read primary_pe-\u003eref_count.\n\n__origin_write does atomic_dec_and_test on primary_pe-\u003eref_count without holding\ndm_snapshot-\u003elock.\n\nThis opens the following race condition:\nAssume two CPUs, CPU1 is executing put_pending_exception (and holding\ndm_snapshot-\u003elock). CPU2 is executing __origin_write in parallel.\nprimary_pe-\u003eref_count \u003d\u003d 2.\n\nCPU1:\nif (primary_pe \u0026\u0026 atomic_dec_and_test(\u0026primary_pe-\u003eref_count))\n\torigin_bios \u003d bio_list_get(\u0026primary_pe-\u003eorigin_bios);\n... decrements primary_pe-\u003eref_count to 1. Doesn\u0027t load origin_bios\n\nCPU2:\nif (first \u0026\u0026 atomic_dec_and_test(\u0026primary_pe-\u003eref_count)) {\n\tflush_bios(bio_list_get(\u0026primary_pe-\u003eorigin_bios));\n\tfree_pending_exception(primary_pe);\n\t/* If we got here, pe_queue is necessarily empty. */\n\treturn r;\n}\n... decrements primary_pe-\u003eref_count to 0, submits pending bios, frees\nprimary_pe.\n\nCPU1:\nif (!primary_pe || primary_pe !\u003d pe)\n\tfree_pending_exception(pe);\n... this has no effect.\nif (primary_pe \u0026\u0026 !atomic_read(\u0026primary_pe-\u003eref_count))\n\tfree_pending_exception(primary_pe);\n... sees ref_count \u003d\u003d 0 (written by CPU 2), does double free !!\n\nThis bug can happen only if someone is simultaneously writing to both the\norigin and the snapshot.\n\nIf someone is writing only to the origin, __origin_write will submit kcopyd\nrequest after it decrements primary_pe-\u003eref_count (so it can\u0027t happen that the\nfinished copy races with primary_pe-\u003eref_count decrementation).\n\nIf someone is writing only to the snapshot, __origin_write isn\u0027t invoked at all\nand the race can\u0027t happen.\n\nThe race happens when someone writes to the snapshot --- this creates\npending_exception with primary_pe \u003d\u003d NULL and starts copying. Then, someone\nwrites to the same chunk in the snapshot, and __origin_write races with\ntermination of already submitted request in pending_complete (that calls\nput_pending_exception).\n\nThis race may be reason for bugs:\n  http://bugzilla.kernel.org/show_bug.cgi?id\u003d11636\n  https://bugzilla.redhat.com/show_bug.cgi?id\u003d465825\n\nThe patch fixes the code to make sure that:\n1. If atomic_dec_and_test(\u0026primary_pe-\u003eref_count) returns false, the process\nmust no longer dereference primary_pe (because someone else may free it under\nus).\n2. If atomic_dec_and_test(\u0026primary_pe-\u003eref_count) returns true, the process\nis responsible for freeing primary_pe.\n\nSigned-off-by: Mikulas Patocka \u003cmpatocka@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\nCc: stable@kernel.org\n"
    },
    {
      "commit": "b673c3a8192e28f13e2050a4b82c1986be92cc15",
      "tree": "6d4f2f3565cc046750eb482a0ccb15cbe28ba7f9",
      "parents": [
        "2515ddc6db8eb49a79f0fe5e67ff09ac7c81eab4"
      ],
      "author": {
        "name": "Kazuo Ito",
        "email": "ito.kazuo@oss.ntt.co.jp",
        "time": "Tue Oct 21 17:44:50 2008 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Tue Oct 21 17:44:50 2008 +0100"
      },
      "message": "dm kcopyd: avoid queue shuffle\n\nWrite throughput to LVM snapshot origin volume is an order\nof magnitude slower than those to LV without snapshots or\nsnapshot target volumes, especially in the case of sequential\nwrites with O_SYNC on.\n\nThe following patch originally written by Kevin Jamieson and\nJan Blunck and slightly modified for the current RCs by myself\ntries to improve the performance by modifying the behaviour\nof kcopyd, so that it pushes back an I/O job to the head of\nthe job queue instead of the tail as process_jobs() currently\ndoes when it has to wait for free pages. This way, write\nrequests aren\u0027t shuffled to cause extra seeks.\n\nI tested the patch against 2.6.27-rc5 and got the following results.\nThe test is a dd command writing to snapshot origin followed by fsync\nto the file just created/updated.  A couple of filesystem benchmarks\ngave me similar results in case of sequential writes, while random\nwrites didn\u0027t suffer much.\n\ndd if\u003d/dev/zero of\u003d\u003csomewhere on snapshot origin\u003e bs\u003d4096 count\u003d...\n   [conv\u003dnotrunc when updating]\n\n1) linux 2.6.27-rc5 without the patch, write to snapshot origin,\naverage throughput (MB/s)\n                     10M     100M    1000M\ncreate,dd         511.46   610.72    11.81\ncreate,dd+fsync     7.10     6.77     8.13\nupdate,dd         431.63   917.41    12.75\nupdate,dd+fsync     7.79     7.43     8.12\n\ncompared with write throughput to LV without any snapshots,\nall dd+fsync and 1000 MiB writes perform very poorly.\n\n                     10M     100M    1000M\ncreate,dd         555.03   608.98   123.29\ncreate,dd+fsync   114.27    72.78    76.65\nupdate,dd         152.34  1267.27   124.04\nupdate,dd+fsync   130.56    77.81    77.84\n\n2) linux 2.6.27-rc5 with the patch, write to snapshot origin,\naverage throughput (MB/s)\n\n                     10M     100M    1000M\ncreate,dd         537.06   589.44    46.21\ncreate,dd+fsync    31.63    29.19    29.23\nupdate,dd         487.59   897.65    37.76\nupdate,dd+fsync    34.12    30.07    26.85\n\nAlthough still not on par with plain LV performance -\ncannot be avoided because it\u0027s copy on write anyway -\nthis simple patch successfully improves throughtput\nof dd+fsync while not affecting the rest.\n\nSigned-off-by: Jan Blunck \u003cjblunck@suse.de\u003e\nSigned-off-by: Kazuo Ito \u003cito.kazuo@oss.ntt.co.jp\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\nCc: stable@kernel.org\n"
    },
    {
      "commit": "9a1c3542768b5a58e45a9216921cd10a3bae1205",
      "tree": "c20ffda950db868ec7e1e35aed532962de2ecfd9",
      "parents": [
        "511de73ff09034fb89c8d54bed201a10d057328c"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Fri Feb 22 20:40:24 2008 -0500"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue Oct 21 07:48:58 2008 -0400"
      },
      "message": "[PATCH] pass fmode_t to blkdev_put()\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "a39907fa2fdb73d3c0fb06eff06d855c3298d707",
      "tree": "d8be7f2fb0fe6ddf037e40b2cc958a6c07a32d95",
      "parents": [
        "fe5f9f2cd57c2ce56f36c66e87a10d4b7a158505"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sun Mar 02 10:31:15 2008 -0500"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue Oct 21 07:48:31 2008 -0400"
      },
      "message": "[PATCH] switch md\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "fe5f9f2cd57c2ce56f36c66e87a10d4b7a158505",
      "tree": "76bfbf4e634fcd043f4764cfff45ce6ea12171f8",
      "parents": [
        "a4600f81393d685043fe2d485cf2b123301f467d"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sun Mar 02 10:29:31 2008 -0500"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue Oct 21 07:48:29 2008 -0400"
      },
      "message": "[PATCH] switch dm\n\nioctl() doesn\u0027t need BKL here\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "d4430d62fa77208824a37fe6f85ab2831d274769",
      "tree": "5d4d0bca31e63eb208fbebe4f39c912b964c1e4d",
      "parents": [
        "badf8082c33d18b118d3a6f1b32d5ea6b97d3839"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sun Mar 02 09:09:22 2008 -0500"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue Oct 21 07:47:32 2008 -0400"
      },
      "message": "[PATCH] beginning of methods conversion\n\nTo keep the size of changesets sane we split the switch by drivers;\nto keep the damn thing bisectable we do the following:\n\t1) rename the affected methods, add ones with correct\nprototypes, make (few) callers handle both.  That\u0027s this changeset.\n\t2) for each driver convert to new methods.  *ALL* drivers\nare converted in this series.\n\t3) kill the old (renamed) methods.\n\nNote that it _is_ a flagday; all in-tree drivers are converted and by the\nend of this series no trace of old methods remain.  The only reason why\nwe do that this way is to keep the damn thing bisectable and allow per-driver\ndebugging if anything goes wrong.\n\nNew methods:\n\topen(bdev, mode)\n\trelease(disk, mode)\n\tioctl(bdev, mode, cmd, arg)\t\t/* Called without BKL */\n\tcompat_ioctl(bdev, mode, cmd, arg)\n\tlocked_ioctl(bdev, mode, cmd, arg)\t/* Called with BKL, legacy */\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "633a08b81206122469365b4c72eaeb71f04f2cb4",
      "tree": "9cd30507efd30645d30d351c7ad0d5966f806532",
      "parents": [
        "a0eb62a0a4470fef5a5f41e7f1442fdd667220ef"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Aug 29 20:34:12 2007 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue Oct 21 07:47:26 2008 -0400"
      },
      "message": "[PATCH] introduce __blkdev_driver_ioctl()\n\nAnalog of blkdev_driver_ioctl() with sane arguments.  For\nnow uses fake struct file, by the end of the series it won\u0027t\nand blkdev_driver_ioctl() will become a wrapper around it.\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "647b3d0084158c47b1aea8f34d13cab9cd0a5b49",
      "tree": "c36d61d8c85c4e0e6160153ab99a6e7568b44a70",
      "parents": [
        "1bddd9e6453ef1c7bc5b6f4ddbf7d31f4aee7a44"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue Aug 28 22:15:59 2007 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue Oct 21 07:47:18 2008 -0400"
      },
      "message": "[PATCH] lose unused arguments in dm ioctl callbacks\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "aeb5d727062a0238a2f96c9c380fbd2be4640c6f",
      "tree": "51dae8a071fcf42e4431a66d37c5b843c8e99cf6",
      "parents": [
        "2515ddc6db8eb49a79f0fe5e67ff09ac7c81eab4"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue Sep 02 15:28:45 2008 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue Oct 21 07:47:06 2008 -0400"
      },
      "message": "[PATCH] introduce fmode_t, do annotations\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "92850bbd71228730c80efd491e7427650188d359",
      "tree": "1d9d87d8eead78e2f6d37db62b580a8b7961844e",
      "parents": [
        "3c0ee63a64a20351ed6c16ec797e1f8c850741ea"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Oct 21 13:25:32 2008 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Oct 21 13:25:32 2008 +1100"
      },
      "message": "md: allow extended partitions on md devices.\n\nThe new extended partition support provides a much nicer was\nto have partitions on md devices that the \u0027mdp\u0027 alternate major.\nWe cannot really get rid of \u0027mdp\u0027 at this time, but we can\nenable extended partitions as that will probably make life\neasier for sysadmins.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "3c0ee63a64a20351ed6c16ec797e1f8c850741ea",
      "tree": "482b825a00356a2b7b605065ce1d6ebe87591eb5",
      "parents": [
        "b62b75905d571c29262a6c38cf9e5f089c203871"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Oct 21 13:25:28 2008 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Oct 21 13:25:28 2008 +1100"
      },
      "message": "md: use sysfs_notify_dirent to notify changes to md/dev-xxx/state\n\nThe \u0027state\u0027 file for a device reports, for example, when the device\nhas failed.  Changes should be reported to userspace ASAP without\nthe possibility of blocking on low-memory.  sysfs_notify does\nhave that possibility (as it takes a mutex which can be held\nacross a kmalloc) so use sysfs_notify_dirent instead.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "b62b75905d571c29262a6c38cf9e5f089c203871",
      "tree": "0ca9a74c1d53aad0532aaebebb031b9d8edc5d90",
      "parents": [
        "0cfd81031a26717fe14380d18275f8e217571615"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Oct 21 13:25:21 2008 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Oct 21 13:25:21 2008 +1100"
      },
      "message": "md: use sysfs_notify_dirent to notify changes to md/array_state\n\nNow that we have sysfs_notify_dirent, use it to notify changes\nto md/array_state.\nAs sysfs_notify_dirent can be called in atomic context, we can\nremove the delayed notify and the MD_NOTIFY_ARRAY_STATE flag.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "ed09441dacc2a2d6c170aa3b1f79a041291a813f",
      "tree": "95c35bdf4f0b679806984093dce627a66d0d7cf1",
      "parents": [
        "b225ee5bed70254a100896c473e6dd8c2be45c18",
        "4c393e6e457fb41169dd110c1b96a138394c2d7b"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Oct 17 09:00:23 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Oct 17 09:00:23 2008 -0700"
      },
      "message": "Merge git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi-misc-2.6\n\n* git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi-misc-2.6: (39 commits)\n  [SCSI] sd: fix compile failure with CONFIG_BLK_DEV_INTEGRITY\u003dn\n  libiscsi: fix locking in iscsi_eh_device_reset\n  libiscsi: check reason why we are stopping iscsi session to determine error value\n  [SCSI] iscsi_tcp: return a descriptive error value during connection errors\n  [SCSI] libiscsi: rename host reset to target reset\n  [SCSI] iscsi class: fix endpoint id handling\n  [SCSI] libiscsi: Support drivers initiating session removal\n  [SCSI] libiscsi: fix data corruption when target has to resend data-in packets\n  [SCSI] sd: Switch kernel printing level for DIF messages\n  [SCSI] sd: Correctly handle all combinations of DIF and DIX\n  [SCSI] sd: Always print actual protection_type\n  [SCSI] sd: Issue correct protection operation\n  [SCSI] scsi_error: fix target reset handling\n  [SCSI] lpfc 8.2.8 v2 : Add statistical reporting control and additional fc vendor events\n  [SCSI] lpfc 8.2.8 v2 : Add sysfs control of target queue depth handling\n  [SCSI] lpfc 8.2.8 v2 : Revert target busy in favor of transport disrupted\n  [SCSI] scsi_dh_alua: remove REQ_NOMERGE\n  [SCSI] lpfc 8.2.8 : update driver version to 8.2.8\n  [SCSI] lpfc 8.2.8 : Add MSI-X support\n  [SCSI] lpfc 8.2.8 : Update driver to use new Host byte error code DID_TRANSPORT_DISRUPTED\n  ...\n"
    },
    {
      "commit": "c472273f863c80b87e53356256c5466df24328f0",
      "tree": "988b67a44e8ecd49d417a7e3cbdffa057251a28f",
      "parents": [
        "36ac1d2f323f8bf8bc10c25b88f617657720e241",
        "97ce0a7f9caf9d715cee815a016ee21575f71c95"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Oct 16 11:55:11 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Oct 16 11:55:11 2008 -0700"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://neil.brown.name/md\n\n* \u0027for-linus\u0027 of git://neil.brown.name/md:\n  md: fix input truncation in safe_delay_store()\n  md: check for memory allocation failure in faulty personality\n  md: build failure due to missing delay.h\n  md: Relax minimum size restrictions on chunk_size.\n  md: remove space after function name in declaration and call.\n  md: Remove unnecessary #includes, #defines, and function declarations.\n  md: Convert remaining 1k representations in linear.c to sectors.\n  md: linear.c: Make two local variables sector-based.\n  md: linear: Represent dev_info-\u003esize and dev_info-\u003eoffset in sectors.\n  md: linear.c: Remove broken debug code.\n  md: linear.c: Remove pointless initialization of curr_offset.\n  md: linear.c: Fix typo in comment.\n  md: Don\u0027t try to set an array to \u0027read-auto\u0027 if it is already in that state.\n  md: Allow metadata_version to be updated for externally managed metadata.\n  md: Fix rdev_size_store with size \u003d\u003d 0\n"
    },
    {
      "commit": "97ce0a7f9caf9d715cee815a016ee21575f71c95",
      "tree": "b35d4f84795a9b3f20a22faa43148a9c2c68d051",
      "parents": [
        "08ff39f1c8f2134f7d0f38123ca5952371665cc5"
      ],
      "author": {
        "name": "Dan Williams",
        "email": "dan.j.williams@gmail.com",
        "time": "Wed Sep 24 22:48:19 2008 -0700"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Oct 16 17:03:08 2008 +1100"
      },
      "message": "md: fix input truncation in safe_delay_store()\n\nsafe_delay_store() currently truncates the last character of input since\nit tells strlcpy that the buffer can only hold \u0027len\u0027 characters, off by\none.  sysfs already null terminates the buffer, so just increase the\nlast argument to strlcpy.\n\nSigned-off-by: Dan Williams \u003cdan.j.williams@intel.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "08ff39f1c8f2134f7d0f38123ca5952371665cc5",
      "tree": "145e98a5e064143e8032f2688bfdf65d511b86a2",
      "parents": [
        "255707274ea25d486b7de060a30ba4ac50593408"
      ],
      "author": {
        "name": "Sven Wegener",
        "email": "sven.wegener@stealer.net",
        "time": "Thu Oct 16 14:16:53 2008 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Oct 16 14:16:53 2008 +1100"
      },
      "message": "md: check for memory allocation failure in faulty personality\n\nIt\u0027s a fault injection module, but I don\u0027t think we should oops here.\n\nSigned-off-by: Sven Wegener \u003csven.wegener@stealer.net\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Neil Brown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "255707274ea25d486b7de060a30ba4ac50593408",
      "tree": "2057cd3ee600f4b5a88c743674fcf9c138d44b48",
      "parents": [
        "4bbf3771ca40d0aaec8316d0e7476b16010288e5"
      ],
      "author": {
        "name": "Stephen Rothwell",
        "email": "sfr@canb.auug.org.au",
        "time": "Wed Oct 15 09:09:21 2008 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed Oct 15 21:57:05 2008 +1100"
      },
      "message": "md: build failure due to missing delay.h\n\nToday\u0027s linux-next build (powerpc ppc64_defconfig) failed like this:\n\ndrivers/md/raid1.c: In function \u0027sync_request\u0027:\ndrivers/md/raid1.c:1759: error: implicit declaration of function \u0027msleep_interruptible\u0027\nmake[3]: *** [drivers/md/raid1.o] Error 1\nmake[3]: *** Waiting for unfinished jobs....\ndrivers/md/raid10.c: In function \u0027sync_request\u0027:\ndrivers/md/raid10.c:1749: error: implicit declaration of function \u0027msleep_interruptible\u0027\nmake[3]: *** [drivers/md/raid10.o] Error 1\ndrivers/md/md.c: In function \u0027md_do_sync\u0027:\ndrivers/md/md.c:5915: error: implicit declaration of function \u0027msleep\u0027\n\nCaused by commit 6caa3b0bbdb474647f6bdd8a958ffc46f78d8d58 (\"md: Remove\nunnecessary #includes, #defines, and function declarations\").  I added\nthe following patch.\n\nSigned-off-by: Stephen Rothwell \u003csfr@canb.auug.org.au\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "6000a368cd8e6da1caf101411bdb494cd6fb8b09",
      "tree": "4cd3333af00182e915aa96ffa49069f5f76976dc",
      "parents": [
        "056a44834950ffa51fafa6c76a720fa32e86851a"
      ],
      "author": {
        "name": "Mike Christie",
        "email": "michaelc@cs.wisc.edu",
        "time": "Tue Aug 19 18:45:30 2008 -0500"
      },
      "committer": {
        "name": "James Bottomley",
        "email": "James.Bottomley@HansenPartnership.com",
        "time": "Mon Oct 13 09:28:52 2008 -0400"
      },
      "message": "[SCSI] block: separate failfast into multiple bits.\n\nMultipath is best at handling transport errors. If it gets a device\nerror then there is not much the multipath layer can do. It will just\naccess the same device but from a different path.\n\nThis patch breaks up failfast into device, transport and driver errors.\nThe multipath layers (md and dm mutlipath) only ask the lower levels to\nfast fail transport errors. The user of failfast, read ahead, will ask\nto fast fail on all errors.\n\nNote that blk_noretry_request will return true if any failfast bit\nis set. This allows drivers that do not support the multipath failfast\nbits to continue to fail on any failfast error like before. Drivers\nlike scsi that are able to fail fast specific errors can check\nfor the specific fail fast type. In the next patch I will convert\nscsi.\n\nSigned-off-by: Mike Christie \u003cmichaelc@cs.wisc.edu\u003e\nCc: Jens Axboe \u003cjens.axboe@oracle.com\u003e\nSigned-off-by: James Bottomley \u003cJames.Bottomley@HansenPartnership.com\u003e\n"
    },
    {
      "commit": "4bbf3771ca40d0aaec8316d0e7476b16010288e5",
      "tree": "f7cba1f72612c5d2132f549881c46ff572e01933",
      "parents": [
        "d710e13812600037a723a673dc5c96a071de98d3"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Oct 13 11:55:12 2008 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Oct 13 11:55:12 2008 +1100"
      },
      "message": "md: Relax minimum size restrictions on chunk_size.\n\nCurrently, the \u0027chunk_size\u0027 of an array must be at-least PAGE_SIZE.\n\nThis makes moving an array to a machine with a larger PAGE_SIZE, or\nchanging the kernel to use a larger PAGE_SIZE, can stop an array from\nworking.\n\nFor RAID10 and RAID4/5/6, this is non-trivial to fix as the resync\nprocess works on whole pages at a time, and assumes them to be wholly\nwithin a stripe.  For other raid personalities, this restriction is\nnot needed at all and can be dropped.\n\nSo remove the test on chunk_size from common can, and add it in just\nthe places where it is needed: raid10 and raid4/5/6.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "d710e13812600037a723a673dc5c96a071de98d3",
      "tree": "df8e34fb02cb7909090aa697da7c1db4814ee122",
      "parents": [
        "fb4d8c76e56a887b9eee99fbc55fe82b18625d30"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Oct 13 11:55:12 2008 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Oct 13 11:55:12 2008 +1100"
      },
      "message": "md: remove space after function name in declaration and call.\n\nHaving\n   function (args)\ninstead of\n   function(args)\n\nmake is harder to search for calls of particular functions.\nSo remove all those spaces.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "fb4d8c76e56a887b9eee99fbc55fe82b18625d30",
      "tree": "0ca96887e40db671957b79d493830b9527b04949",
      "parents": [
        "ab5bd5cbc8d4b868378d062eed3d4240930fbb86"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Oct 13 11:55:12 2008 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Oct 13 11:55:12 2008 +1100"
      },
      "message": "md: Remove unnecessary #includes, #defines, and function declarations.\n\nA lot of cruft has gathered over the years.  Time to remove it.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "ab5bd5cbc8d4b868378d062eed3d4240930fbb86",
      "tree": "39c6299f79398d7f00b50c4ba39c52e2aea22e00",
      "parents": [
        "23242fbb470ff4c8c4d41f178832cf1929273d7d"
      ],
      "author": {
        "name": "Andre Noll",
        "email": "maan@systemlinux.org",
        "time": "Mon Oct 13 11:55:12 2008 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Oct 13 11:55:12 2008 +1100"
      },
      "message": "md: Convert remaining 1k representations in linear.c to sectors.\n\nThis patch renames hash_spacing and preshift to  spacing and\nsector_shift respectively with the following change of semantics:\n\nCase 1: (sizeof(sector_t) \u003c\u003d sizeof(u32)).\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nIn this case, we have sector_shift \u003d preshift \u003d 0 and spacing \u003d\n2 * hash_spacing.\n\nHence, the index for the hash table which is computed by the new code\nin which_dev() as sector / spacing equals the old value which was\n(sector/2) / hash_spacing.\n\nNote also that the value of nb_zone stays the same because both sz\nand base double.\n\nCase 2: (sizeof(sector_t) \u003e sizeof(u32)).\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\n(aka the shifting dance case). Here we have sector_shift \u003d preshift +\n1 and\n\nspacing \u003d 2 * hash_spacing\n\nduring the computation of nb_zone and curr_sector, but\n\nspacing \u003d hash_spacing\n\nin which_dev() because in the last hunk of the patch for linear.c we\nshift down conf-\u003espacing (\u003d 2 * hash_spacing) by one more bit than\nin the old code.\n\nHence in the computation of nb_zone, sz and base have the same value\nas before, so nb_zone is not affected. Also curr_sector in the next\nhunk stays the same.\n\nIn which_dev() the hash table index is computed as\n\n(sector \u003e\u003e sector_shift) / spacing\n\nIn view of sector_shift \u003d preshift + 1 and spacing \u003d hash_spacing,\nthis equals\n\n((sector/2) \u003e\u003e preshift) / hash_spacing\n\nwhich is the value computed by the old code.\n\nSigned-off-by: Andre Noll \u003cmaan@systemlinux.org\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "23242fbb470ff4c8c4d41f178832cf1929273d7d",
      "tree": "c6c98d6c5fdb0caf2d0a496531a2bb18d0a9ad53",
      "parents": [
        "6283815d1853b7daf31dc4adb83e5c1dc9568251"
      ],
      "author": {
        "name": "Andre Noll",
        "email": "maan@systemlinux.org",
        "time": "Mon Oct 13 11:55:12 2008 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Oct 13 11:55:12 2008 +1100"
      },
      "message": "md: linear.c: Make two local variables sector-based.\n\nThis is a preparation for representing also the remaining fields of struct\nlinear_private_data as sectors.\n\nSigned-off-by: Andre Noll \u003cmaan@systemlinux.org\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "6283815d1853b7daf31dc4adb83e5c1dc9568251",
      "tree": "cd4f00ce17e7c274091ca9015b164d6f06611975",
      "parents": [
        "451708d2a439accbce136637ed4f156fc27371ab"
      ],
      "author": {
        "name": "Andre Noll",
        "email": "maan@systemlinux.org",
        "time": "Mon Oct 13 11:55:12 2008 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Oct 13 11:55:12 2008 +1100"
      },
      "message": "md: linear: Represent dev_info-\u003esize and dev_info-\u003eoffset in sectors.\n\nRename them to num_sectors and start_sector which is more descriptive.\n\nSigned-off-by: Andre Noll \u003cmaan@systemlinux.org\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "451708d2a439accbce136637ed4f156fc27371ab",
      "tree": "fb0723deef88e3bfa04a112f1d92b034c55abc75",
      "parents": [
        "481d86c7ebe2ce59dfb6ccb720efa9d3fc1cf7cd"
      ],
      "author": {
        "name": "Andre Noll",
        "email": "maan@systemlinux.org",
        "time": "Mon Oct 13 11:55:12 2008 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Oct 13 11:55:12 2008 +1100"
      },
      "message": "md: linear.c: Remove broken debug code.\n\nconf-\u003esmallest_size is undefined since day one of the git repo..\n\nSigned-off-by: Andre Noll \u003cmaan@systemlinux.org\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "481d86c7ebe2ce59dfb6ccb720efa9d3fc1cf7cd",
      "tree": "55c51ebaa5fe89469666bd8e275d55fa244cadb1",
      "parents": [
        "e61130228ea5740e31e9646ea6d1c9d9089746c3"
      ],
      "author": {
        "name": "Andre Noll",
        "email": "maan@systemlinux.org",
        "time": "Mon Oct 13 11:55:12 2008 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Oct 13 11:55:12 2008 +1100"
      },
      "message": "md: linear.c: Remove pointless initialization of curr_offset.\n\n\nSigned-off-by: Andre Noll \u003cmaan@systemlinux.org\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "e61130228ea5740e31e9646ea6d1c9d9089746c3",
      "tree": "6d9dec9957dae58ad516a8b17af50f93f6448309",
      "parents": [
        "80268ee9270ebe4847365a7426de91d179e870d0"
      ],
      "author": {
        "name": "Andre Noll",
        "email": "maan@systemlinux.org",
        "time": "Mon Oct 13 11:55:12 2008 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Oct 13 11:55:12 2008 +1100"
      },
      "message": "md: linear.c: Fix typo in comment.\n\n\nSigned-off-by: Andre Noll \u003cmaan@systemlinux.org\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "80268ee9270ebe4847365a7426de91d179e870d0",
      "tree": "0f5d10d1cc86b64030d036e6e322b23caf6aec5c",
      "parents": [
        "ea43ddd8491feccf36267349748ea91b1194481e"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Oct 13 11:55:12 2008 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Oct 13 11:55:12 2008 +1100"
      },
      "message": "md: Don\u0027t try to set an array to \u0027read-auto\u0027 if it is already in that state.\n\n\u0027read-auto\u0027 is a variant of \u0027readonly\u0027 which will switch to writable\non the first write attempt.\n\nCalling do_md_stop to set the array readonly when it is already readonly\nreturns an error.  So make sure not to do that.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "ea43ddd8491feccf36267349748ea91b1194481e",
      "tree": "89ca77c1f9794994eefa16b76f985b502326cfcd",
      "parents": [
        "7d3c6f8717ee6c2bf6cba5fa0bda3b28fbda6015"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Oct 13 11:55:11 2008 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Oct 13 11:55:11 2008 +1100"
      },
      "message": "md: Allow metadata_version to be updated for externally managed metadata.\n\nFor externally managed metadata, the \u0027metadata_version\u0027 sysfs\nattribute is really just a channel for user-space programs to\ncommunicate about how the array is being managed.\nIt can be useful for this to be changed while the array is active.\n\nNormally changes to metadata_version are not permitted while the array\nis active.  Change that so that if the metadata is externally managed,\nthe metadata_version can be changed to a different flavour of external\nmanagement.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "7d3c6f8717ee6c2bf6cba5fa0bda3b28fbda6015",
      "tree": "118b13de811d5eca3e6e3e6410c667ca9cbba607",
      "parents": [
        "fd048088306656824958e7783ffcee27e241b361"
      ],
      "author": {
        "name": "Chris Webb",
        "email": "chris@arachsys.com",
        "time": "Mon Oct 13 11:55:11 2008 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Oct 13 11:55:11 2008 +1100"
      },
      "message": "md: Fix rdev_size_store with size \u003d\u003d 0\n\n\nFix rdev_size_store with size \u003d\u003d 0.\nsize \u003d\u003d 0 means to use the largest size allowed by the\nunderlying device and is used when modifying an active array.\n\nThis fixes a regression introduced by\n commit d7027458d68b2f1752a28016dcf2ffd0a7e8f567\n\nCc: \u003cstable@kernel.org\u003e\nSigned-off-by: Chris Webb \u003cchris@arachsys.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "ce52aebd0219edc7a783278fbe80a6ccca0556c0",
      "tree": "9cb6fc1f20e51799b1d72045cf9cad86a4285b4f",
      "parents": [
        "a364092a412975e506415f77f0628cbdd28c3913"
      ],
      "author": {
        "name": "Alan Jenkins",
        "email": "alan-jenkins@tuffmail.co.uk",
        "time": "Fri Oct 10 16:02:53 2008 +0100"
      },
      "committer": {
        "name": "Arjan van de Ven",
        "email": "arjan@linux.intel.com",
        "time": "Sun Oct 12 08:25:14 2008 -0700"
      },
      "message": "raid, fastboot: hide RAID autodetect option if MD is compiled as a module\n\nSigned-off-by: Alan Jenkins \u003calan-jenkins@tuffmail.co.uk\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "a364092a412975e506415f77f0628cbdd28c3913",
      "tree": "98d7d66e8658c9959b2961f0b40356e981277395",
      "parents": [
        "82cbc11a4146d6a8acd81f81f7fe17387668107f"
      ],
      "author": {
        "name": "Arjan van de Ven",
        "email": "arjan@linux.intel.com",
        "time": "Sun Sep 21 15:44:32 2008 -0700"
      },
      "committer": {
        "name": "Arjan van de Ven",
        "email": "arjan@linux.intel.com",
        "time": "Sun Oct 12 08:25:02 2008 -0700"
      },
      "message": "raid: make RAID autodetect default a KConfig option\n\nRAID autodetect has the side effect of requiring synchronisation\nof all device drivers, which can make the boot several seconds longer\n(I\u0027ve measured 7 on one of my laptops).... even for systems that don\u0027t\nhave RAID setup for the root filesystem (the only FS where this matters).\n\nThis patch makes the default for autodetect a config option; either way\nthe user can always override via the kernel command line.\n\nSigned-off-by: Arjan van de Ven \u003carjan@linux.intel.com\u003e\nAcked-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "b0af205afb111e17ac8db64c3b9c4f2c332de92a",
      "tree": "3999a2ffbd36e9d1cc6ca30e6b9d6280f4e50116",
      "parents": [
        "73f6aa4d44ab6157badc456ddfa05b31e58de5f0",
        "0c2322e4ce144e130c03d813fe92de3798662c5e"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Oct 10 11:11:47 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Oct 10 11:11:47 2008 -0700"
      },
      "message": "Merge git://git.kernel.org/pub/scm/linux/kernel/git/agk/linux-2.6-dm\n\n* git://git.kernel.org/pub/scm/linux/kernel/git/agk/linux-2.6-dm:\n  dm: detect lost queue\n  dm: publish dm_vcalloc\n  dm: publish dm_table_unplug_all\n  dm: publish dm_get_mapinfo\n  dm: export struct dm_dev\n  dm crypt: avoid unnecessary wait when splitting bio\n  dm crypt: tidy ctx pending\n  dm crypt: fix async inc_pending\n  dm crypt: move dec_pending on error into write_io_submit\n  dm crypt: remove inc_pending from write_io_submit\n  dm crypt: tidy write loop pending\n  dm crypt: tidy crypt alloc\n  dm crypt: tidy inc pending\n  dm exception store: use chunk_t for_areas\n  dm exception store: introduce area_location function\n  dm raid1: kcopyd should stop on error if errors handled\n  dm mpath: remove is_active from struct dm_path\n  dm mpath: use more error codes\n\nFixed up trivial conflict in drivers/md/dm-mpath.c manually.\n"
    },
    {
      "commit": "0c2322e4ce144e130c03d813fe92de3798662c5e",
      "tree": "a42eeb1a75d9e70a20a6d4d850064ba8292c2289",
      "parents": [
        "54160904260fa764ba6e2dc738770be30fdf9553"
      ],
      "author": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Fri Oct 10 13:37:13 2008 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Fri Oct 10 13:37:13 2008 +0100"
      },
      "message": "dm: detect lost queue\n\nDetect and report buggy drivers that destroy their request_queue.\n\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\nCc: Stefan Raspl \u003craspl@linux.vnet.ibm.com\u003e\nCc: Jens Axboe \u003cjens.axboe@oracle.com\u003e\nCc: Andrew Morton \u003cakpm@linux-foundation.org\u003e\n"
    },
    {
      "commit": "54160904260fa764ba6e2dc738770be30fdf9553",
      "tree": "5f286d4d4c199772b4fc2fea48dfd10c5ef0ecf9",
      "parents": [
        "ea0ec640940c2ae3a8d71af3249fccf06a9997a3"
      ],
      "author": {
        "name": "Mikulas Patocka",
        "email": "mpatocka@redhat.com",
        "time": "Fri Oct 10 13:37:12 2008 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Fri Oct 10 13:37:12 2008 +0100"
      },
      "message": "dm: publish dm_vcalloc\n\nPublish dm_vcalloc in include/linux/device-mapper.h because this function is\nused by targets.\n\nSigned-off-by: Mikulas Patocka \u003cmpatocka@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "ea0ec640940c2ae3a8d71af3249fccf06a9997a3",
      "tree": "1ee9b5f228d1ab415d1853eed6508e2f2b85ef5e",
      "parents": [
        "89343da077ad564ed130c46e5ea6a79388410fa5"
      ],
      "author": {
        "name": "Mikulas Patocka",
        "email": "mpatocka@redhat.com",
        "time": "Fri Oct 10 13:37:11 2008 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Fri Oct 10 13:37:11 2008 +0100"
      },
      "message": "dm: publish dm_table_unplug_all\n\nPublish dm_table_unplug_all in include/linux/device-mapper.h because this\nfunction is used by targets.\n\nSigned-off-by: Mikulas Patocka \u003cmpatocka@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "89343da077ad564ed130c46e5ea6a79388410fa5",
      "tree": "63fc3da552cc025d86656172697fcd88782a1091",
      "parents": [
        "82b1519b345d61dcfae526e3fcb08128f39f9bcc"
      ],
      "author": {
        "name": "Mikulas Patocka",
        "email": "mpatocka@redhat.com",
        "time": "Fri Oct 10 13:37:10 2008 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Fri Oct 10 13:37:10 2008 +0100"
      },
      "message": "dm: publish dm_get_mapinfo\n\nPublish dm_get_mapinfo in include/linux/device-mapper.h because this function\nis used by targets.\n\nSigned-off-by: Mikulas Patocka \u003cmpatocka@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "82b1519b345d61dcfae526e3fcb08128f39f9bcc",
      "tree": "240bc646da63557ed7fa81fa3c17d05b95853f45",
      "parents": [
        "933f01d43326fb12a978a8e0bb062c28a2de4d5a"
      ],
      "author": {
        "name": "Mikulas Patocka",
        "email": "mpatocka@redhat.com",
        "time": "Fri Oct 10 13:37:09 2008 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Fri Oct 10 13:37:09 2008 +0100"
      },
      "message": "dm: export struct dm_dev\n\nSplit struct dm_dev in two and publish the part that other targets need in\ninclude/linux/device-mapper.h.\n\nSigned-off-by: Mikulas Patocka \u003cmpatocka@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "933f01d43326fb12a978a8e0bb062c28a2de4d5a",
      "tree": "89f25c15fb98d90ee7377437482e444a8ac6a106",
      "parents": [
        "c8081618a9f832fdf7ca81eb087f9f61f2bf07d5"
      ],
      "author": {
        "name": "Milan Broz",
        "email": "mbroz@redhat.com",
        "time": "Fri Oct 10 13:37:08 2008 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Fri Oct 10 13:37:08 2008 +0100"
      },
      "message": "dm crypt: avoid unnecessary wait when splitting bio\n\nDon\u0027t wait between submitting crypt requests for a bio unless\nwe are short of memory.\n\nThere are two situations when we must split an encrypted bio:\n  1) there are no free pages;\n  2) the new bio would violate underlying device restrictions\n(e.g. max hw segments).\n\nIn case (2) we do not need to wait.\n\nAdd output variable to crypt_alloc_buffer() to distinguish between\nthese cases.\n\nSigned-off-by: Milan Broz \u003cmbroz@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "c8081618a9f832fdf7ca81eb087f9f61f2bf07d5",
      "tree": "1001d2747eb2a6937ce73469a457eabd364be3c7",
      "parents": [
        "4e59409891c9cc30cb4d5d73250b0c968af8e39b"
      ],
      "author": {
        "name": "Milan Broz",
        "email": "mbroz@redhat.com",
        "time": "Fri Oct 10 13:37:08 2008 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Fri Oct 10 13:37:08 2008 +0100"
      },
      "message": "dm crypt: tidy ctx pending\n\nMove the initialisation of ctx-\u003epending into one place, at the\nstart of crypt_convert().\n\nIntroduce crypt_finished to indicate whether or not the encryption\nis finished, for use in a later patch.\n\nNo functional change.\n\nSigned-off-by: Milan Broz \u003cmbroz@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "4e59409891c9cc30cb4d5d73250b0c968af8e39b",
      "tree": "c21382942df3b7dd363bca91fe5cd8fef3c64f0b",
      "parents": [
        "6c031f41db15b6cb0cd33545cec28ca706cd3c7e"
      ],
      "author": {
        "name": "Milan Broz",
        "email": "mbroz@redhat.com",
        "time": "Fri Oct 10 13:37:07 2008 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Fri Oct 10 13:37:07 2008 +0100"
      },
      "message": "dm crypt: fix async inc_pending\n\nThe pending reference count must be incremented *before* the async work is\nqueued to another thread, not after.  Otherwise there\u0027s a race if the\nwork completes and decrements the reference count before it gets incremented.\n\nSigned-off-by: Milan Broz \u003cmbroz@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "6c031f41db15b6cb0cd33545cec28ca706cd3c7e",
      "tree": "85434cd7db8ff2e8dc82f5821a9cd3b31ffeb86c",
      "parents": [
        "1e37bb8e557a186d327eb4d1387953880ffc2cdd"
      ],
      "author": {
        "name": "Milan Broz",
        "email": "mbroz@redhat.com",
        "time": "Fri Oct 10 13:37:06 2008 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Fri Oct 10 13:37:06 2008 +0100"
      },
      "message": "dm crypt: move dec_pending on error into write_io_submit\n\nMake kcryptd_crypt_write_io_submit() responsible for decrementing\nthe pending count after an error.\n\nAlso fixes a bug in the async path that forgot to decrement it.\n\nSigned-off-by: Milan Broz \u003cmbroz@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "1e37bb8e557a186d327eb4d1387953880ffc2cdd",
      "tree": "dfd5c65642762a69ed94136cde90e92a09d4cc15",
      "parents": [
        "fc5a5e9aa878f86642c962b309f793fb2db0727e"
      ],
      "author": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Fri Oct 10 13:37:05 2008 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Fri Oct 10 13:37:05 2008 +0100"
      },
      "message": "dm crypt: remove inc_pending from write_io_submit\n\nMake the caller reponsible for incrementing the pending count before calling\nkcryptd_crypt_write_io_submit() in the non-async case to bring it into line\nwith the async case.\n\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "fc5a5e9aa878f86642c962b309f793fb2db0727e",
      "tree": "ca66747db5cf5897a294971f3417f19adf920028",
      "parents": [
        "dc440d1e56c481f80d5350daadc7d078a04ca729"
      ],
      "author": {
        "name": "Milan Broz",
        "email": "mbroz@redhat.com",
        "time": "Fri Oct 10 13:37:04 2008 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Fri Oct 10 13:37:04 2008 +0100"
      },
      "message": "dm crypt: tidy write loop pending\n\nMove kcryptd_crypt_write_convert_loop inside kcryptd_crypt_write_convert.\nThis change is needed for a later patch.\n\nNo functional change.\n\nSigned-off-by: Milan Broz \u003cmbroz@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "dc440d1e56c481f80d5350daadc7d078a04ca729",
      "tree": "5d7c180f431820a6f1878177b5f59a500227bf1d",
      "parents": [
        "3e1a8bdd05d6b1734a8ccf7af28042d72c447780"
      ],
      "author": {
        "name": "Milan Broz",
        "email": "mbroz@redhat.com",
        "time": "Fri Oct 10 13:37:03 2008 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Fri Oct 10 13:37:03 2008 +0100"
      },
      "message": "dm crypt: tidy crypt alloc\n\nFactor out crypt io allocation code.\nLater patches will call it from another place.\n\nNo functional change.\n\nSigned-off-by: Milan Broz \u003cmbroz@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "3e1a8bdd05d6b1734a8ccf7af28042d72c447780",
      "tree": "980ad736241ce5e1deb4a564ac65940477bfb631",
      "parents": [
        "fd14acf6fc9f4635be201960004d847b14236a20"
      ],
      "author": {
        "name": "Milan Broz",
        "email": "mbroz@redhat.com",
        "time": "Fri Oct 10 13:37:02 2008 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Fri Oct 10 13:37:02 2008 +0100"
      },
      "message": "dm crypt: tidy inc pending\n\nMove io pending to one place.\n\nNo functional change, usefull to simplify debugging.\n\nSigned-off-by: Milan Broz \u003cmbroz@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "fd14acf6fc9f4635be201960004d847b14236a20",
      "tree": "5c856ce7353374d784e7546769b74a3eea724c54",
      "parents": [
        "a481db784682b33d078c7bf8a1d0581dc09946c1"
      ],
      "author": {
        "name": "Mikulas Patocka",
        "email": "mpatocka@redhat.com",
        "time": "Fri Oct 10 13:37:01 2008 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Fri Oct 10 13:37:01 2008 +0100"
      },
      "message": "dm exception store: use chunk_t for_areas\n\nChange uint32_t into chunk_t to remove 32-bit limitation on the\nnumber of chunks on systems with 64-bit sector numbers.\n\nSigned-off-by: Mikulas Patocka \u003cmpatocka@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "a481db784682b33d078c7bf8a1d0581dc09946c1",
      "tree": "380b08162df8b49e23c846112fb9d376d3b6fe65",
      "parents": [
        "f7c83e2e4783c4f7abe6f3a85a8c5e210f98bc7b"
      ],
      "author": {
        "name": "Mikulas Patocka",
        "email": "mpatocka@redhat.com",
        "time": "Fri Oct 10 13:37:00 2008 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Fri Oct 10 13:37:00 2008 +0100"
      },
      "message": "dm exception store: introduce area_location function\n\nMove this logic to a function, because it will be reused later.\n\nSigned-off-by: Mikulas Patocka \u003cmpatocka@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "f7c83e2e4783c4f7abe6f3a85a8c5e210f98bc7b",
      "tree": "2ea22c54a1eb2db8ad983883751040d884109e76",
      "parents": [
        "6680073d3ec7c6dbdbf77870bf1fea869767d779"
      ],
      "author": {
        "name": "Jonathan Brassow",
        "email": "jbrassow@redhat.com",
        "time": "Fri Oct 10 13:36:59 2008 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Fri Oct 10 13:36:59 2008 +0100"
      },
      "message": "dm raid1: kcopyd should stop on error if errors handled\n\ndm-raid1 is setting the \u0027DM_KCOPYD_IGNORE_ERROR\u0027 flag unconditionally\nwhen assigning kcopyd work.  kcopyd is responsible for copying an\nassigned section of disk to one or more other disks.  The\n\u0027DM_KCOPYD_IGNORE_ERROR\u0027 flag affects kcopyd in the following way:\n\nWhen not set:\nkcopyd will immediately stop the copy operation when an error is\nencountered.\n\nWhen set:\nkcopyd will try to proceed regardless of errors and try to continue\ncopying any remaining amount.\n\nSince dm-raid1 tracks regions of the address space that are (or\nare not) in sync and it now has the ability to handle these\nerrors, we can safely enable this optimization.  This optimization\nis conditional on whether mirror error handling has been enabled.\n\nSigned-off-by: Jonathan Brassow \u003cjbrassow@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "6680073d3ec7c6dbdbf77870bf1fea869767d779",
      "tree": "3e5417645e04b4e33feaec38e73f2e54509d16d0",
      "parents": [
        "01460f3520c100010aacc8f8500cafcb17ce4665"
      ],
      "author": {
        "name": "Kiyoshi Ueda",
        "email": "k-ueda@ct.jp.nec.com",
        "time": "Fri Oct 10 13:36:58 2008 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Fri Oct 10 13:36:58 2008 +0100"
      },
      "message": "dm mpath: remove is_active from struct dm_path\n\nThis patch moves \u0027is_active\u0027 from struct dm_path to struct pgpath\nas it does not need exporting.\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: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "01460f3520c100010aacc8f8500cafcb17ce4665",
      "tree": "9f883266f2b0623a876635746d8e2cf7a136a6fc",
      "parents": [
        "3fa8749e584b55f1180411ab1b51117190bac1e5"
      ],
      "author": {
        "name": "Benjamin Marzinski",
        "email": "bmarzins@redhat.com",
        "time": "Fri Oct 10 13:36:57 2008 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Fri Oct 10 13:36:57 2008 +0100"
      },
      "message": "dm mpath: use more error codes\n\nThis patch allows path errors from the multipath ctr function to\npropagate up to userspace as errno values from the ioctl() call.\n\nThis is in response to\n  https://www.redhat.com/archives/dm-devel/2008-May/msg00000.html\nand\n  https://bugzilla.redhat.com/show_bug.cgi?id\u003d444421\n\nThe patch only lets through the errors that it needs to in order to\nget the path errors from parse_path().\n\nSigned-off-by: Benjamin Marzinski \u003cbmarzins@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "6feef531f55cf4a20fd9eb39f5352e5745203603",
      "tree": "2c52b800edcbdf01abefcf27e900985c087f1b36",
      "parents": [
        "ad3316bf4eeb53c89164f759767f911072b56203"
      ],
      "author": {
        "name": "Denis ChengRq",
        "email": "crquan@gmail.com",
        "time": "Thu Oct 09 08:57:05 2008 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Thu Oct 09 08:57:05 2008 +0200"
      },
      "message": "block: mark bio_split_pool static\n\nSince all bio_split calls refer the same single bio_split_pool, the bio_split\nfunction can use bio_split_pool directly instead of the mempool_t parameter;\n\nthen the mempool_t parameter can be removed from bio_split param list, and\nbio_split_pool is only referred in fs/bio.c file, can be marked static.\n\nSigned-off-by: Denis ChengRq \u003ccrquan@gmail.com\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "224cb3e981f1b2f9f93dbd49eaef505d17d894c2",
      "tree": "41f2201e228a1cdb46430779deeaa474cedab7ed",
      "parents": [
        "11914a53d2ec2974a565311af327b8983d8c820d"
      ],
      "author": {
        "name": "Mike Anderson",
        "email": "andmike@linux.vnet.ibm.com",
        "time": "Fri Aug 29 09:36:09 2008 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Thu Oct 09 08:56:14 2008 +0200"
      },
      "message": "dm: Call blk_abort_queue on failed paths\n\nSigned-off-by: Mike Anderson \u003candmike@linux.vnet.ibm.com\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "074a7aca7afa6f230104e8e65eba3420263714a5",
      "tree": "f418313e45bd55be8156c8a3e8f9a216cf63058d",
      "parents": [
        "eddb2e26b5ee3c5da68ba4bf1921ba20e2097bff"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Mon Aug 25 19:56:14 2008 +0900"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Thu Oct 09 08:56:08 2008 +0200"
      },
      "message": "block: move stats from disk to part0\n\nMove stats related fields - stamp, in_flight, dkstats - from disk to\npart0 and unify stat handling such that...\n\n* part_stat_*() now updates part0 together if the specified partition\n  is not part0.  ie. part_stat_*() are now essentially all_stat_*().\n\n* {disk|all}_stat_*() are gone.\n\n* part_round_stats() is updated similary.  It handles part0 stats\n  automatically and disk_round_stats() is killed.\n\n* part_{inc|dec}_in_fligh() is implemented which automatically updates\n  part0 stats for parts other than part0.\n\n* disk_map_sector_rcu() is updated to return part0 if no part matches.\n  Combined with the above changes, this makes NULL special case\n  handling in callers unnecessary.\n\n* Separate stats show code paths for disk are collapsed into part\n  stats show code paths.\n\n* Rename disk_stat_lock/unlock() to part_stat_lock/unlock()\n\nWhile at it, reposition stat handling macros a bit and add missing\nparentheses around macro parameters.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "0762b8bde9729f10f8e6249809660ff2ec3ad735",
      "tree": "12aa94ef16b840f713f833c712d335646c816dc1",
      "parents": [
        "4c46501d1659475dc6c89554af6ce7fe6ecf615c"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Mon Aug 25 19:56:12 2008 +0900"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Thu Oct 09 08:56:08 2008 +0200"
      },
      "message": "block: always set bdev-\u003ebd_part\n\nTill now, bdev-\u003ebd_part is set only if the bdev was for parts other\nthan part0.  This patch makes bdev-\u003ebd_part always set so that code\npaths don\u0027t have to differenciate common handling.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "b7db9956e57c8151b930d5e5fe5c766e6aad3ff7",
      "tree": "d663a8687fff481abb1498c2ea0eac01ef81cb26",
      "parents": [
        "e56105214943ce5f0901d20e972a7cfd0d1d0656"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Mon Aug 25 19:56:10 2008 +0900"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Thu Oct 09 08:56:07 2008 +0200"
      },
      "message": "block: move policy from disk to part0\n\nMove disk-\u003epolicy to part0-\u003epolicy.  Implement and use get_disk_ro().\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "ed9e1982347b36573cd622ee5f4e2a7ccd79b3fd",
      "tree": "79d834094d655ec97cfc0a382a9207ebc8e711a5",
      "parents": [
        "870d6656126add8e383645732b03df2b7ccd4f94"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Mon Aug 25 19:56:05 2008 +0900"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Thu Oct 09 08:56:07 2008 +0200"
      },
      "message": "block: implement and use {disk|part}_to_dev()\n\nImplement {disk|part}_to_dev() and use them to access generic device\ninstead of directly dereferencing {disk|part}-\u003edev.  To make sure no\nuser is left behind, rename generic devices fields to __dev.\n\nThis is in preparation of unifying partition 0 handling with other\npartitions.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "c9959059161ddd7bf4670cf47367033d6b2f79c4",
      "tree": "6454db55f8e34361fe472358e10e0c5cfac1e366",
      "parents": [
        "e71bf0d0ee89e51b92776391c5634938236977d5"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Mon Aug 25 19:47:21 2008 +0900"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Thu Oct 09 08:56:06 2008 +0200"
      },
      "message": "block: fix diskstats access\n\nThere are two variants of stat functions - ones prefixed with double\nunderbars which don\u0027t care about preemption and ones without which\ndisable preemption before manipulating per-cpu counters.  It\u0027s unclear\nwhether the underbarred ones assume that preemtion is disabled on\nentry as some callers don\u0027t do that.\n\nThis patch unifies diskstats access by implementing disk_stat_lock()\nand disk_stat_unlock() which take care of both RCU (for partition\naccess) and preemption (for per-cpu counter access).  diskstats access\nshould always be enclosed between the two functions.  As such, there\u0027s\nno need for the versions which disables preemption.  They\u0027re removed\nand double underbars ones are renamed to drop the underbars.  As an\nextra argument is added, there\u0027s no danger of using the old version\nunconverted.\n\ndisk_stat_lock() uses get_cpu() and returns the cpu index and all\ndiskstat functions which access per-cpu counters now has @cpu\nargument to help RT.\n\nThis change adds RCU or preemption operations at some places but also\ncollapses several preemption ops into one at others.  Overall, the\nperformance difference should be negligible as all involved ops are\nvery lightweight per-cpu ones.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nCc: Peter Zijlstra \u003cpeterz@infradead.org\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "f331c0296f2a9fee0d396a70598b954062603015",
      "tree": "f74c467d58940131d97d90c4ea549843185e6ef0",
      "parents": [
        "cf771cb5a7b716f3f9e532fd42a1e3a0a75adec5"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Wed Sep 03 09:01:48 2008 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Thu Oct 09 08:56:05 2008 +0200"
      },
      "message": "block: don\u0027t depend on consecutive minor space\n\n* Implement disk_devt() and part_devt() and use them to directly\n  access devt instead of computing it from -\u003emajor and -\u003efirst_minor.\n\n  Note that all references to -\u003emajor and -\u003efirst_minor outside of\n  block layer is used to determine devt of the disk (the part0) and as\n  -\u003emajor and -\u003efirst_minor will continue to represent devt for the\n  disk, converting these users aren\u0027t strictly necessary.  However,\n  convert them for consistency.\n\n* Implement disk_max_parts() to avoid directly deferencing\n  genhd-\u003eminors.\n\n* Update bdget_disk() such that it doesn\u0027t assume consecutive minor\n  space.\n\n* Move devt computation from register_disk() to add_disk() and make it\n  the only one (all other usages use the initially determined value).\n\nThese changes clean up the code and will help disk-\u003epart dereference\nfix and extended block device numbers.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "5b99c2ffa980528a197f26c7d876cceeccce8dd5",
      "tree": "65e3bbbccb3f796f0569c47fcfc00e222cd3066e",
      "parents": [
        "960e739d9e9f1c2346d8bdc65299ee2e1ed42218"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Fri Aug 15 10:56:11 2008 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Thu Oct 09 08:56:03 2008 +0200"
      },
      "message": "block: make bi_phys_segments an unsigned int instead of short\n\nraid5 can overflow with more than 255 stripes, and we can increase it\nto an int for free on both 32 and 64-bit archs due to the padding.\n\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "960e739d9e9f1c2346d8bdc65299ee2e1ed42218",
      "tree": "d3b38cbfbf503338cdf08e9ad6c4d41f7684ce34",
      "parents": [
        "5df97b91b5d7ed426034fcc84cb6e7cf682b8838"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Fri Aug 15 10:41:18 2008 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Thu Oct 09 08:56:03 2008 +0200"
      },
      "message": "block: raid fixups for removal of bi_hw_segments\n\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "5df97b91b5d7ed426034fcc84cb6e7cf682b8838",
      "tree": "727b9fb778f72d2b1ff44c007fb5209bacf67f4a",
      "parents": [
        "b8b3e16cfe6435d961f6aaebcfd52a1ff2a988c5"
      ],
      "author": {
        "name": "Mikulas Patocka",
        "email": "mpatocka@redhat.com",
        "time": "Fri Aug 15 10:20:02 2008 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Thu Oct 09 08:56:03 2008 +0200"
      },
      "message": "drop vmerge accounting\n\nRemove hw_segments field from struct bio and struct request. Without virtual\nmerge accounting they have no purpose.\n\nSigned-off-by: Mikulas Patocka \u003cmpatocka@redhat.com\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "7253a33434245ee8243897559188186df65f3611",
      "tree": "24156c85ddd38319ab92ae56a5c585c0f2e273cc",
      "parents": [
        "b01cd5ac43b00c49759c126c21e7d22c7e80b245"
      ],
      "author": {
        "name": "Chandra Seetharaman",
        "email": "sekharan@us.ibm.com",
        "time": "Wed Oct 01 14:39:27 2008 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Wed Oct 01 14:39:27 2008 +0100"
      },
      "message": "dm mpath: add missing path switching locking\n\nMoving the path activation to workqueue along with scsi_dh patches introduced\na race. It is due to the fact that the current_pgpath (in the multipath data\nstructure) can be modified if changes happen in any of the paths leading to\nthe lun. If the changes lead to current_pgpath being set to NULL, then it\nleads to the invalid access which results in the panic below.\n\nThis patch fixes that by storing the pgpath to activate in the multipath data\nstructure and properly protecting it.\n\nNote that if activate_path is called twice in succession with different pgpath,\nwith the second one being called before the first one is done, then activate\npath will be called twice for the second pgpath, which is fine.\n\nUnable to handle kernel paging request for data at address 0x00000020\nFaulting instruction address: 0xd000000000aa1844\ncpu 0x1: Vector: 300 (Data Access) at [c00000006b987a80]\n    pc: d000000000aa1844: .activate_path+0x30/0x218 [dm_multipath]\n    lr: c000000000087a2c: .run_workqueue+0x114/0x204\n    sp: c00000006b987d00\n   msr: 8000000000009032\n   dar: 20\n dsisr: 40000000\n  current \u003d 0xc0000000676bb3f0\n  paca    \u003d 0xc0000000006f3680\n    pid   \u003d 2528, comm \u003d kmpath_handlerd\nenter ? for help\n[c00000006b987da0] c000000000087a2c .run_workqueue+0x114/0x204\n[c00000006b987e40] c000000000088b58 .worker_thread+0x120/0x144\n[c00000006b987f00] c00000000008ca70 .kthread+0x78/0xc4\n[c00000006b987f90] c000000000027cc8 .kernel_thread+0x4c/0x68\n\nSigned-off-by: Chandra Seetharaman \u003csekharan@us.ibm.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "b01cd5ac43b00c49759c126c21e7d22c7e80b245",
      "tree": "ccfda9067457032999a5d2d6ed5203caa2422937",
      "parents": [
        "5037108acd4dc40c210321cc83b0bf8352eda95a"
      ],
      "author": {
        "name": "Mikulas Patocka",
        "email": "mpatocka@redhat.com",
        "time": "Wed Oct 01 14:39:24 2008 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Wed Oct 01 14:39:24 2008 +0100"
      },
      "message": "dm: cope with access beyond end of device in dm_merge_bvec\n\nIf for any reason dm_merge_bvec() is given an offset beyond the end of the\ndevice, avoid an oops and always allow one page to be added to an empty bio.\nWe\u0027ll reject the I/O later after the bio is submitted.\n\nSigned-off-by: Mikulas Patocka \u003cmpatocka@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "5037108acd4dc40c210321cc83b0bf8352eda95a",
      "tree": "96b8684cd33eaee6dda5f07d598c93de36b1476a",
      "parents": [
        "d3a47e82b6bc3724dd60f3ee4e84fe4479104382"
      ],
      "author": {
        "name": "Mikulas Patocka",
        "email": "mpatocka@redhat.com",
        "time": "Wed Oct 01 14:39:17 2008 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Wed Oct 01 14:39:17 2008 +0100"
      },
      "message": "dm: always allow one page in dm_merge_bvec\n\nSome callers assume they can always add at least one page to an empty bio,\nso dm_merge_bvec should not return 0 in this case: we\u0027ll reject the I/O\nlater after the bio is submitted.\n\nSigned-off-by: Mikulas Patocka \u003cmpatocka@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "9744197c3d7b329590c2be33ad7b17409bd798fe",
      "tree": "b82478694d768a54bad23661e31830cc48e95e0f",
      "parents": [
        "45e9c0de2e86485f8b6633fd64ab19cfbff167f6"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Sep 19 11:49:54 2008 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Sep 19 11:49:54 2008 +1000"
      },
      "message": "md: Don\u0027t wait UNINTERRUPTIBLE for other resync to finish\n\nWhen two md arrays share some block device (e.g each uses different\npartitions on the one device), a resync of one array will wait for\nthe resync on the other to finish.\n\nThis can be a long time and as it currently waits TASK_UNINTERRUPTIBLE,\nthe softlockup code notices and complains.\n\nSo use TASK_INTERRUPTIBLE instead and make sure to flush signals\nbefore calling schedule.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "b2d2c4ceaddc3098f19637a732f74b820a81a9e7",
      "tree": "5fb4150c33066f9fa70cc39853e5400ad6d54dca",
      "parents": [
        "271f5a9b8f8ae0db95de72779d115c9d0b9d3cc5"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Sep 01 12:48:13 2008 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Sep 01 12:48:13 2008 +1000"
      },
      "message": "Fix problem with waiting while holding rcu read lock in md/bitmap.c\n\nA recent patch to protect the rdev list with rcu locking leaves us\nwith a problem because we can sleep on memalloc while holding the\nrcu lock.\n\nThe rcu lock is only needed while walking the linked list as\nuninteresting devices (failed or spares) can be removed at any time.\n\nSo only take the rcu lock while actually walking the linked list.\nTake a refcount on the rdev during the time when we drop the lock\nand do the memalloc to start IO.\nWhen we return to the locked code, all the interesting devices\non the list will not have moved, so we can simply use\nlist_for_each_continue_rcu to pick up where we left off.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "271f5a9b8f8ae0db95de72779d115c9d0b9d3cc5",
      "tree": "814bfe03f1c5ae97da163c8f6b24a0cf67cfd783",
      "parents": [
        "bef69ea0dcce574a425feb0a5aa4c63dd108b9a6"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Sep 01 12:32:52 2008 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Sep 01 12:32:52 2008 +1000"
      },
      "message": "Remove invalidate_partition call from do_md_stop.\n\nWhen stopping an md array, or just switching to read-only, we\ncurrently call invalidate_partition while holding the mddev lock.\nThe main reason for this is probably to ensure all dirty buffers\nare flushed (invalidate_partition calls fsync_bdev).\n\nHowever if any dirty buffers are found, it will almost certainly cause\na deadlock as starting writeout will require an update to the\nsuperblock, and performing that updates requires taking the mddev\nlock - which is already held.\n\nThis deadlock can be demonstrated by running \"reboot -f -n\" with\na root filesystem on md/raid, and some dirty buffers in memory.\n\nAll other calls to stop an array should already happen after a flush.\nThe normal sequence is to stop using the array (e.g. umount) which\nwill cause __blkdev_put to call sync_blockdev.  Then open the\narray and issue the STOP_ARRAY ioctl while the buffers are all still\nclean.\n\nSo this invalidate_partition is normally a no-op, except for one case\nwhere it will cause a deadlock.\n\nSo remove it.\n\nThis patch possibly addresses the regression recored in\n   http://bugzilla.kernel.org/show_bug.cgi?id\u003d11460\nand\n   http://bugzilla.kernel.org/show_bug.cgi?id\u003d11452\n\nthough it isn\u0027t yet clear how it ever worked.\n\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "56ac36d722d0d27c03599d1245ac0ab59e474e5c",
      "tree": "e65f4d860549532a570b92995906f3c3dec9c529",
      "parents": [
        "0310fa216decc3ecfab41f327638fa48a81f3735"
      ],
      "author": {
        "name": "Dan Williams",
        "email": "dan.j.williams@intel.com",
        "time": "Thu Aug 07 10:02:47 2008 -0700"
      },
      "committer": {
        "name": "Dan Williams",
        "email": "dan.j.williams@intel.com",
        "time": "Thu Aug 07 10:02:47 2008 -0700"
      },
      "message": "md: cancel check/repair requests when recovery is needed\n\nIf a \u0027repair\u0027 is requested when an array is in a position to \u0027recover\u0027 raid1\nwill perform the repair while md believes a recovery is happening.  Address\nthis at both ends, i.e. cancel check/repair requests upon detecting a\nrecover condition and do not call -\u003espare_active after completing a\ncheck/repair.\n\nSigned-off-by: Dan Williams \u003cdan.j.williams@intel.com\u003e\n"
    },
    {
      "commit": "0310fa216decc3ecfab41f327638fa48a81f3735",
      "tree": "86fc2736802c55de2e21a4e223c34d9e8a1e93a2",
      "parents": [
        "c89a8eee61540df04fc83f32f51ef0f46ec018b1"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Aug 05 15:54:14 2008 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Aug 05 15:56:32 2008 +1000"
      },
      "message": "Allow raid10 resync to happening in larger chunks.\n\nThe raid10 resync/recovery code currently limits the amount of\nin-flight resync IO to 2Meg.  This was copied from raid1 where\nit seems quite adequate.  However for raid10, some layouts require\na bit of seeking to perform a resync, and allowing a larger buffer\nsize means that the seeking can be significantly reduced.\n\nThere is probably no real need to limit the amount of in-flight\nIO at all.  Any shortage of memory will naturally reduce the\namount of buffer space available down to a set minimum, and any\nconcurrent normal IO will quickly cause resync IO to back off.\n\nThe only problem would be that normal IO has to wait for all resync IO\nto finish, so a very large amount of resync IO could cause unpleasant\nlatency when normal IO starts up.\n\nSo: increase RESYNC_DEPTH to allow 32Meg of buffer (if memory is\navailable) which seems to be a good amount.  Also reduce the amount\nof memory reserved as there is no need to keep 2Meg just for resync if\nmemory is tight.\n\nThanks to Keld for the suggestion.\n\nCc: Keld Jørn Simonsen \u003ckeld@dkuug.dk\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "c89a8eee61540df04fc83f32f51ef0f46ec018b1",
      "tree": "7bffba40357f654de8ed31bc6a0e7468daa61234",
      "parents": [
        "ac4090d24c6a26211bc4523d920376e054d4f3f8"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Aug 05 15:54:13 2008 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Aug 05 15:56:32 2008 +1000"
      },
      "message": "Allow faulty devices to be removed from a readonly array.\n\nRemoving faulty devices from an array is a two stage process.\nFirst the device is moved from being a part of the active array\nto being similar to a spare device.  Then it can be removed\nby a request from user space.\n\nThe first step is currently not performed for read-only arrays,\nso the second step can never succeed.\n\nSo allow readonly arrays to remove failed devices (which aren\u0027t\nblocked).\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "ac4090d24c6a26211bc4523d920376e054d4f3f8",
      "tree": "5aabdbb2448967cbfc23be2fa6714d1c1bbf29dc",
      "parents": [
        "dba034eef2456d2a9f9a76806846c97acf6c3ad1"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Aug 05 15:54:13 2008 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Aug 05 15:56:32 2008 +1000"
      },
      "message": "Don\u0027t let a blocked_rdev interfere with read request in raid5/6\n\nWhen we have externally managed metadata, we need to mark a failed\ndevice as \u0027Blocked\u0027 and not allow any writes until that device\nhave been marked as faulty in the metadata and the Blocked flag has\nbeen removed.\n\nHowever it is perfectly OK to allow read requests when there is a\nBlocked device, and with a readonly array, there may not be any\nmetadata-handler watching for blocked devices.\n\nSo in raid5/raid6 only allow a Blocked device to interfere with\nWrite request or resync.  Read requests go through untouched.\n\nraid1 and raid10 already differentiate between read and write\nproperly.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "dba034eef2456d2a9f9a76806846c97acf6c3ad1",
      "tree": "3cf51b72fc5be671e986a39c389aa5332994e2a2",
      "parents": [
        "2b25000bf5157c28d8591f03f0575248a8cbd900"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Aug 05 15:54:13 2008 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Aug 05 15:56:32 2008 +1000"
      },
      "message": "Fail safely when trying to grow an array with a write-intent bitmap.\n\nWe cannot currently change the size of a write-intent bitmap.\nSo if we change the size of an array which has such a bitmap, it\ntries to set bits beyond the end of the bitmap.\n\nFor now, simply reject any request to change the size of an array\nwhich has a bitmap.  mdadm can remove the bitmap and add a new one\nafter the array has changed size.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "2b25000bf5157c28d8591f03f0575248a8cbd900",
      "tree": "f01260723348738076becc9f62872d87819f3159",
      "parents": [
        "19052c0e85a3e9d3b7d190b29fcdbf0e6c105381"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Aug 05 15:54:13 2008 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Aug 05 15:56:31 2008 +1000"
      },
      "message": "Restore force switch of md array to readonly at reboot time.\n\nA recent patch allowed do_md_stop to know whether it was being called\nvia an ioctl or not, and thus where to allow for an extra open file\ndescriptor when checking if it is in use.\nThis broke then switch to readonly performed by the shutdown notifier,\nwhich needs to work even when the array is still (apparently) active\n(as md doesn\u0027t get told when the filesystem becomes readonly).\n\nSo restore this feature by pretending that there can be lots of\nfile descriptors open, but we still want do_md_stop to switch to\nreadonly.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "19052c0e85a3e9d3b7d190b29fcdbf0e6c105381",
      "tree": "6f61eacfe7ade13f0bf06adba5efac052e1038c0",
      "parents": [
        "2b12a4c524812fb3f6ee590a02e65b95c8c32229"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Aug 05 15:54:13 2008 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Aug 05 15:56:31 2008 +1000"
      },
      "message": "Make writes to md/safe_mode_delay immediately effective.\n\nIf we reduce the \u0027safe_mode_delay\u0027, it could still wait for the old\ndelay to completely expire before doing anything about safe_mode.\nThus the effect if the change is delayed.\n\nTo make the effect more immediate, run the timeout function\nimmediately if the delay was reduced.  This may cause it to run\nslightly earlier that required, but that is the safer option.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "1e24b15b267293567a8d752721c7ae63f281325a",
      "tree": "ee63644d2dc59899e42ec0802c201140e3a92e5e",
      "parents": [
        "63a16f90167850010864a9e8ebb71d216983090f",
        "388667bed591b2359713bb17d5de0cf56e961447"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Aug 01 11:56:07 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Aug 01 11:56:07 2008 -0700"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://neil.brown.name/md\n\n* \u0027for-linus\u0027 of git://neil.brown.name/md:\n  md: raid10: wake up frozen array\n  md: do not count blocked devices as spares\n  md: do not progress the resync process if the stripe was blocked\n  md: delay notification of \u0027active_idle\u0027 to the recovery thread\n  md: fix merge error\n  md: move async_tx_issue_pending_all outside spin_lock_irq\n"
    }
  ],
  "next": "b17b3d479c4c43c3a980ee553c3be3ca456523de"
}
