)]}'
{
  "log": [
    {
      "commit": "d0e260782c3702a009645c3caa02e381dab8798b",
      "tree": "588f7776216df124d9372c7ced833b0bfb6d0a7f",
      "parents": [
        "a9366e61b03f55a6e009e687ad10e706714c9907"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Dec 01 17:30:59 2009 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Dec 01 17:30:59 2009 +1100"
      },
      "message": "md: revert incorrect fix for read error handling in raid1.\n\ncommit 4706b349f was a forward port of a fix that was needed\nfor SLES10.  But in fact it is not needed in mainline because\nthe earlier commit dd00a99e7a fixes the same problem in a\nbetter way.\nFurther, this commit introduces a bug in the way it interacts with\nthe automatic read-error-correction.  If, after a read error is\nsuccessfully corrected, the same disk is chosen to re-read - the\nre-read won\u0027t be attempted but an error will be returned instead.\n\nAfter reverting that commit, there is the possibility that a\nread error on a read-only array (where read errors cannot\nbe corrected as that requires a write) will repeatedly read the same\ndevice and continue to get an error.\nSo in the \"Array is readonly\" case, fail the drive immediately on\na read error.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\nCc: stable@kernel.org\n"
    },
    {
      "commit": "c148ffdcda00b6599b70f8b65e6a1fadd1dbb127",
      "tree": "3d50cc9dbef926f62a588dc1f45f1df304e1bf31",
      "parents": [
        "7ef90146a14c2bb1de2e22399f147ebec5b74f0b"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Nov 13 17:47:00 2009 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Nov 13 17:47:00 2009 +1100"
      },
      "message": "md/raid5: Allow dirty-degraded arrays to be assembled when only party is degraded.\n\nNormally is it not safe to allow a raid5 that is both dirty and\ndegraded to be assembled without explicit request from that admin, as\nit can cause hidden data corruption.\nThis is because \u0027dirty\u0027 means that the parity cannot be trusted, and\n\u0027degraded\u0027 means that the parity needs to be used.\n\nHowever, if the device that is missing contains only parity, then\nthere is no issue and assembly can continue.\nThis particularly applies when a RAID5 is being converted to a RAID6\nand there is an unclean shutdown while the conversion is happening.\n\nSo check for whether the degraded space only contains parity, and\nin that case, allow the assembly.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "7ef90146a14c2bb1de2e22399f147ebec5b74f0b",
      "tree": "ab0e97fb85814f174ed5ec0645057bb65dd4bb1d",
      "parents": [
        "0261cd9f1cb42fa44ece314d27868d83742bdf03"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Nov 13 17:40:51 2009 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Nov 13 17:40:51 2009 +1100"
      },
      "message": "Don\u0027t unconditionally set in_sync on newly added device in raid5_reshape\n\nWhen a reshape finds that it can add spare devices into the array,\nthose devices might already be \u0027in_sync\u0027 if they are beyond the old\nsize of the array, or they might not if they are within the array.\n\nThe first case happens when we change an N-drive RAID5 to an\nN+1-drive RAID5.\nThe second happens when we convert an N-drive RAID5 to an\nN+1-drive RAID6.\n\nSo set the flag more carefully.\nAlso, -\u003erecovery_offset is only meaningful when the flag is clear,\nso only set it in that case.\n\nThis change needs the preceding two to ensure that the non-in_sync\ndevice doesn\u0027t get evicted from the array when it is stopped, in the\ncase where v0.90 metadata is used.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "0261cd9f1cb42fa44ece314d27868d83742bdf03",
      "tree": "95954fb2e1a10ee1b20198b8fbefd7a8392dc896",
      "parents": [
        "5e8651060cea6b44844521ddcac665e2c021f5d8"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Nov 13 17:40:48 2009 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Nov 13 17:40:48 2009 +1100"
      },
      "message": "md: allow v0.91 metadata to record devices as being active but not in-sync.\n\nThis is a combination that didn\u0027t really make sense before.\nHowever when a reshape is converting e.g. raid5 -\u003e raid6, the extra\ndevice is not fully in-sync, but is certainly active and contains\nimportant data.\nSo allow that start to be meaningful and in particular get\nthe \u0027recovery_offset\u0027 value (which is needed for any non-in-sync\nactive device) from the reshape_position.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "5e8651060cea6b44844521ddcac665e2c021f5d8",
      "tree": "56a2a3de85fae3f7e210c54a9cda305b0341c334",
      "parents": [
        "8dee7211467a56b7eb4e4359efb0aa4a72e1b6f3"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Nov 12 12:08:04 2009 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Nov 12 12:08:04 2009 +1100"
      },
      "message": "md: factor out updating of \u0027recovery_offset\u0027.\n\nEach device has its own \u0027recovery_offset\u0027 showing how far\nrecovery has progressed on the device.\nAs the only real significance of this is that fact that it can\nbe stored in the metadata and recovered at restart, and as\nonly 1.x metadata can do this, we were only updating\n\u0027recovery_offset\u0027 to \u0027curr_resync_completed\u0027 when updating\nv1.x metadata.\nBut this is wrong, and we will shortly make limited use of this\nfield in v0.90 metadata.\n\nSo move the update into common code.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "8dee7211467a56b7eb4e4359efb0aa4a72e1b6f3",
      "tree": "4ddcb170bd131adcc022477ef96716fba5c1ab07",
      "parents": [
        "24395a85d8efe6eee477ea35c73d045a8dd7a3a1"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Nov 06 14:59:29 2009 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Nov 06 14:59:29 2009 +1100"
      },
      "message": "md/raid5: make sure curr_sync_completes is uptodate when reshape starts\n\nThis value is visible through sysfs and is used by mdadm\nwhen it manages a reshape (backing up data that is about to be\nrearranged).  So it is important that it is always correct.\nCurrent it does not get updated properly when a reshape\nstarts which can cause problems when assembling an array\nthat is in the middle of being reshaped.\n\nThis is suitable for 2.6.31.y stable kernels.\n\nCc: stable@kernel.org\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "24395a85d8efe6eee477ea35c73d045a8dd7a3a1",
      "tree": "eeb32daee4f1d44eaae636cfd19cc2c8e8af686a",
      "parents": [
        "b6727b12dd2ffb4a890eb5b13a298230c29ba45d"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Nov 06 14:59:27 2009 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Nov 06 14:59:27 2009 +1100"
      },
      "message": "md: don\u0027t clear endpoint for resync when resync is interrupted.\n\nIf a \u0027sync_max\u0027 has been set (via sysfs), it is wrong to clear it\nuntil a resync (or reshape or recovery ...) actually reached that\npoint.\nSo if a resync is interrupted (e.g. by device failure),\nleave \u0027resync_max\u0027 unchanged.\n\nThis is particularly important for \u0027reshape\u0027 operations that do not\nchange the size of the array.  For such operations mdadm needs to\nmonitor the reshape taking rolling backups of the section being\nreshaped.  If resync_max gets cleared, the reshape can get ahead of\nmdadm and then the backups that mdadm creates are useless.\n\nThis is suitable for 2.6.31.y stable kernels.\nCc: stable@kernel.org\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "bf699c9bac124f0a095d8ef06f2d6b219300a822",
      "tree": "de1c4f852b0c68a87eeed25119443eeca8379c66",
      "parents": [
        "aefba418bfecd1985a08f50a95bd854a119f0153",
        "da17bf4306fd3a52e938b121df82a7baa10eb282"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Oct 31 12:12:19 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Oct 31 12:12:19 2009 -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  async_tx: fix asynchronous raid6 recovery for ddf layouts\n  async_pq: rename scribble page\n  async_pq: kill a stray dma_map() call and other cleanups\n  md/raid6: kill a gcc-4.0.1 \u0027uninitialized variable\u0027 warning\n  raid6/async_tx: handle holes in block list in async_syndrome_val\n  md/async: don\u0027t pass a memory pointer as a page pointer.\n  md: Fix handling of raid5 array which is being reshaped to fewer devices.\n  md: fix problems with RAID6 calculations for DDF.\n  md/raid456: downlevel multicore operations to raid_run_ops\n  md: drivers/md/unroll.pl replaced with awk analog\n  md: remove clumsy usage of do_sync_mapping_range from bitmap code\n  md: raid1/raid10: handle allocation errors during array setup.\n  md/raid5: initialize conf-\u003edevice_lock earlier\n  md/raid1/raid10: add a cond_resched\n  Revert \"md: do not progress the resync process if the stripe was blocked\"\n"
    },
    {
      "commit": "6629542e79255e0dbef8ec82eaf644e1b2546c3c",
      "tree": "10878adc7a42868b2ded58acbe5bb4135347b607",
      "parents": [
        "b2141e6951ad56c8f65e70547baeabd5698e390a"
      ],
      "author": {
        "name": "Dan Williams",
        "email": "dan.j.williams@intel.com",
        "time": "Mon Oct 19 18:09:32 2009 -0700"
      },
      "committer": {
        "name": "Dan Williams",
        "email": "dan.j.williams@intel.com",
        "time": "Mon Oct 19 18:09:41 2009 -0700"
      },
      "message": "md/raid6: kill a gcc-4.0.1 \u0027uninitialized variable\u0027 warning\n\nSigned-off-by: Dan Williams \u003cdan.j.williams@intel.com\u003e\n"
    },
    {
      "commit": "c1cc65caa19bb8a1b2e371000ef2719581db1691",
      "tree": "8b38c2f4f046aa3525f50fb3bd51466c547f2a22",
      "parents": [
        "df96eee679ba28c98cf722fa7c9f4286ee1ed0bd"
      ],
      "author": {
        "name": "Mikulas Patocka",
        "email": "mpatocka@redhat.com",
        "time": "Fri Oct 16 23:18:22 2009 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Fri Oct 16 23:18:22 2009 +0100"
      },
      "message": "dm snapshot: allow chunk size to be less than page size\n\nAllow the snapshot chunk size to be smaller than the page size\nThe code is now capable of handling this due to some previous\nfixes and enhancements.\n\nAs the page size varies between computers, prior to this patch,\nthe chunk size of a snapshot dictated which machines could read it:\nSnapshots created on one machine might not be readable on another.\n\nSigned-off-by: Mikulas Patocka \u003cmpatocka@redhat.com\u003e\nReviewed-by: Mike Snitzer \u003csnitzer@redhat.com\u003e\nReviewed-by: Jonathan Brassow \u003cjbrassow@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "df96eee679ba28c98cf722fa7c9f4286ee1ed0bd",
      "tree": "282c1368f3dff6ed0e0994210cc13c09b4680d66",
      "parents": [
        "4c6fff445d7aa753957856278d4d93bcad6e2c14"
      ],
      "author": {
        "name": "Mikulas Patocka",
        "email": "mpatocka@redhat.com",
        "time": "Fri Oct 16 23:18:17 2009 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Fri Oct 16 23:18:17 2009 +0100"
      },
      "message": "dm snapshot: use unsigned integer chunk size\n\nUse unsigned integer chunk size.\n\nMaximum chunk size is 512kB, there won\u0027t ever be need to use 4GB chunk size,\nso the number can be 32-bit. This fixes compiler failure on 32-bit systems\nwith large block devices.\n\nCc: stable@kernel.org\nSigned-off-by: Mikulas Patocka \u003cmpatocka@redhat.com\u003e\nSigned-off-by: Mike Snitzer \u003csnitzer@redhat.com\u003e\nReviewed-by: Jonathan Brassow \u003cjbrassow@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "4c6fff445d7aa753957856278d4d93bcad6e2c14",
      "tree": "56ac3d262699fe5a42f76fe9f992277a6a7a2934",
      "parents": [
        "0e8c4e4e3ebb15756ddc4170a88149a2cd323cfe"
      ],
      "author": {
        "name": "Mikulas Patocka",
        "email": "mpatocka@redhat.com",
        "time": "Fri Oct 16 23:18:16 2009 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Fri Oct 16 23:18:16 2009 +0100"
      },
      "message": "dm snapshot: lock snapshot while supplying status\n\nThis patch locks the snapshot when returning status.  It fixes a race\nwhen it could return an invalid number of free chunks if someone\nwas simultaneously modifying it.\n\nCc: stable@kernel.org\nSigned-off-by: Mikulas Patocka \u003cmpatocka@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "0e8c4e4e3ebb15756ddc4170a88149a2cd323cfe",
      "tree": "ad9b86c435b138ceeab8222c96064586b9dda7af",
      "parents": [
        "3f2412dc85260e5aae7ebb03bf50d5b1407e3083"
      ],
      "author": {
        "name": "Mikulas Patocka",
        "email": "mpatocka@redhat.com",
        "time": "Fri Oct 16 23:18:16 2009 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Fri Oct 16 23:18:16 2009 +0100"
      },
      "message": "dm exception store: fix failed set_chunk_size error path\n\nProperly close the device if failing because of an invalid chunk size.\n\nCc: stable@kernel.org\nSigned-off-by: Mikulas Patocka \u003cmpatocka@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "3f2412dc85260e5aae7ebb03bf50d5b1407e3083",
      "tree": "c736dc9a52677e29b4dfeb3061da5111edbb9454",
      "parents": [
        "f88fb981183e71daf40bbd84bc8251bbf7b59e19"
      ],
      "author": {
        "name": "Mikulas Patocka",
        "email": "mpatocka@redhat.com",
        "time": "Fri Oct 16 23:18:16 2009 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Fri Oct 16 23:18:16 2009 +0100"
      },
      "message": "dm snapshot: require non zero chunk size by end of ctr\n\nIf we are creating snapshot with memory-stored exception store, fail if\nthe user didn\u0027t specify chunk size. Zero chunk size would probably crash\na lot of places in the rest of snapshot code.\n\nCc: stable@kernel.org\nSigned-off-by: Mikulas Patocka \u003cmpatocka@redhat.com\u003e\nReviewed-by: Jonathan Brassow \u003cjbrassow@redhat.com\u003e\nReviewed-by: Mike Snitzer \u003csnitzer@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "f88fb981183e71daf40bbd84bc8251bbf7b59e19",
      "tree": "b1de0c32afb6a540624a0e53a25ce522a9935202",
      "parents": [
        "03022c54b9725026c0370a810168975c387ad04c"
      ],
      "author": {
        "name": "Kiyoshi Ueda",
        "email": "k-ueda@ct.jp.nec.com",
        "time": "Fri Oct 16 23:18:15 2009 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Fri Oct 16 23:18:15 2009 +0100"
      },
      "message": "dm: dec_pending needs locking to save error value\n\nMultiple instances of dec_pending() can run concurrently so a lock is\nneeded when it saves the first error code.\n\nI have never experienced actual problem without locking and just found\nthis during code inspection while implementing the barrier support\npatch for request-based dm.\n\nThis patch adds the locking.\nI\u0027ve done compile, boot and basic I/O testings.\n\nCc: stable@kernel.org\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": "03022c54b9725026c0370a810168975c387ad04c",
      "tree": "3d16ed7e303effca715f0ea78f022252f48e1257",
      "parents": [
        "bca915aae803cf01fde4461fc9c093cf5a86d7fc"
      ],
      "author": {
        "name": "Zdenek Kabelac",
        "email": "zkabelac@redhat.com",
        "time": "Fri Oct 16 23:18:15 2009 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Fri Oct 16 23:18:15 2009 +0100"
      },
      "message": "dm: add missing del_gendisk to alloc_dev error path\n\nAdd missing del_gendisk() to error path when creation of workqueue fails.\nOtherwice there is a resource leak and following warning is shown:\n\nWARNING: at fs/sysfs/dir.c:487 sysfs_add_one+0xc5/0x160()\nsysfs: cannot create duplicate filename \u0027/devices/virtual/block/dm-0\u0027\n\nCc: stable@kernel.org\nSigned-off-by: Zdenek Kabelac \u003czkabelac@redhat.com\u003e\nReviewed-by: Jonathan Brassow \u003cjbrassow@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "bca915aae803cf01fde4461fc9c093cf5a86d7fc",
      "tree": "d1d8c670a141a8a7fdb240eb1a89bf23e2630e50",
      "parents": [
        "034a186d29dbcef099e57ab23ec39440596be911"
      ],
      "author": {
        "name": "Andrew Morton",
        "email": "akpm@linux-foundation.org",
        "time": "Fri Oct 16 23:18:15 2009 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Fri Oct 16 23:18:15 2009 +0100"
      },
      "message": "dm log: userspace fix incorrect luid cast in userspace_ctr\n\nmips:\n\ndrivers/md/dm-log-userspace-base.c: In function `userspace_ctr\u0027:\ndrivers/md/dm-log-userspace-base.c:159: warning: cast from pointer to integer of different size\n\nCc: stable@kernel.org\nCc: Jonathan Brassow \u003cjbrassow@redhat.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "034a186d29dbcef099e57ab23ec39440596be911",
      "tree": "ab7b134d082581dd11fd9894f37d109d5d7a34b7",
      "parents": [
        "6d45d93ead319423099b82a4efd775bc0f159121"
      ],
      "author": {
        "name": "Jonathan Brassow",
        "email": "jbrassow@redhat.com",
        "time": "Fri Oct 16 23:18:14 2009 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Fri Oct 16 23:18:14 2009 +0100"
      },
      "message": "dm snapshot: free exception store on init failure\n\nWhile initializing the snapshot module, if we fail to register\nthe snapshot target then we must back-out the exception store\nmodule initialization.\n\nCc: stable@kernel.org\nSigned-off-by: Jonathan Brassow \u003cjbrassow@redhat.com\u003e\nReviewed-by: Mikulas Patocka \u003cmpatocka@redhat.com\u003e\nReviewed-by: Mike Snitzer \u003csnitzer@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "6d45d93ead319423099b82a4efd775bc0f159121",
      "tree": "6af9a92a7e9ef38aac856233d7721e3dfaefbd3e",
      "parents": [
        "012abeea669ea49636cf952d13298bb68654146a"
      ],
      "author": {
        "name": "Mikulas Patocka",
        "email": "mpatocka@redhat.com",
        "time": "Fri Oct 16 23:18:14 2009 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Fri Oct 16 23:18:14 2009 +0100"
      },
      "message": "dm snapshot: sort by chunk size to fix race\n\nAvoid a race causing corruption when snapshots of the same origin have\ndifferent chunk sizes by sorting the internal list of snapshots by chunk\nsize, largest first.\n  https://bugzilla.redhat.com/show_bug.cgi?id\u003d182659\n\nFor example, let\u0027s have two snapshots with different chunk sizes. The\nfirst snapshot (1) has small chunk size and the second snapshot (2) has\nlarge chunk size.  Let\u0027s have chunks A, B, C in these snapshots:\nsnapshot1: \u003d\u003d\u003d\u003dA\u003d\u003d\u003d\u003d   \u003d\u003d\u003d\u003dB\u003d\u003d\u003d\u003d\nsnapshot2: \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003dC\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n\n(Chunk size is a power of 2. Chunks are aligned.)\n\nA write to the origin at a position within A and C comes along. It\ntriggers reallocation of A, then reallocation of C and links them\ntogether using A as the \u0027primary\u0027 exception.\n\nThen another write to the origin comes along at a position within B and\nC.  It creates pending exception for B.  C already has a reallocation in\nprogress and it already has a primary exception (A), so nothing is done\nto it: B and C are not linked.\n\nIf the reallocation of B finishes before the reallocation of C, because\nthere is no link with the pending exception for C it does not know to\nwait for it and, the second write is dispatched to the origin and causes\ndata corruption in the chunk C in snapshot2.\n\nTo avoid this situation, we maintain snapshots sorted in descending\norder of chunk size.  This leads to a guaranteed ordering on the links\nbetween the pending exceptions and avoids the problem explained above -\nboth A and B now get linked to C.\n\nCc: stable@kernel.org\nSigned-off-by: Mikulas Patocka \u003cmpatocka@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "5dd33c9a4c29015f6d87568d33521c98931a387e",
      "tree": "a79ac38e1957580743b708410b54694f2b1cbf77",
      "parents": [
        "5e5e3e78ed9038b8f7112835d07084eefb9daa47"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Oct 16 16:40:25 2009 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Oct 16 16:40:25 2009 +1100"
      },
      "message": "md/async: don\u0027t pass a memory pointer as a page pointer.\n\nmd/raid6 passes a list of \u0027struct page *\u0027 to the async_tx routines,\nwhich then either DMA map them for offload, or take the page_address\nfor CPU based calculations.\n\nFor RAID6 we sometime leave \u0027blanks\u0027 in the list of pages.\nFor CPU based calcs, we want to treat theses as a page of zeros.\nFor offloaded calculations, we simply don\u0027t pass a page to the\nhardware.\n\nCurrently the \u0027blanks\u0027 are encoded as a pointer to\nraid6_empty_zero_page.  This is a 4096 byte memory region, not a\n\u0027struct page\u0027.  This is mostly handled correctly but is rather ugly.\n\nSo change the code to pass and expect a NULL pointer for the blanks.\nWhen taking page_address of a page, we need to check for a NULL and\nin that case use raid6_empty_zero_page.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "5e5e3e78ed9038b8f7112835d07084eefb9daa47",
      "tree": "afcefac7c0dbafb71f09d90812eecb2c6e4bc766",
      "parents": [
        "e4424fee1815f996dccd36be44d68ca160ec3e1b"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Oct 16 16:35:30 2009 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Oct 16 16:35:30 2009 +1100"
      },
      "message": "md: Fix handling of raid5 array which is being reshaped to fewer devices.\n\nWhen a raid5 (or raid6) array is being reshaped to have fewer devices,\nconf-\u003eraid_disks is the latter and hence smaller number of devices.\nHowever sometimes we want to use a number which is the total number of\ncurrently required devices - the larger of the \u0027old\u0027 and \u0027new\u0027 sizes.\nBefore we implemented reducing the number of devices, this was always\n\u0027new\u0027 i.e. -\u003eraid_disks.\nNow we need max(raid_disks, previous_raid_disks) in those places.\n\nThis particularly affects assembling an array that was shutdown while\nin the middle of a reshape to fewer devices.\n\nmd.c needs a similar fix when interpreting the md metadata.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "e4424fee1815f996dccd36be44d68ca160ec3e1b",
      "tree": "13e67731367d28451fdb1dcfbf4e085ce236f9b9",
      "parents": [
        "417b8d4ac868cf58d6c68f52d72f7648413e0edc"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Oct 16 16:27:34 2009 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Oct 16 16:27:34 2009 +1100"
      },
      "message": "md: fix problems with RAID6 calculations for DDF.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "417b8d4ac868cf58d6c68f52d72f7648413e0edc",
      "tree": "6eefb8b381fdad5235d2b29fc0054bcf537efbcc",
      "parents": [
        "dce3a7a42d585b74ce68081010b42afe81c8f4c4"
      ],
      "author": {
        "name": "Dan Williams",
        "email": "dan.j.williams@intel.com",
        "time": "Fri Oct 16 16:25:22 2009 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Oct 16 16:25:22 2009 +1100"
      },
      "message": "md/raid456: downlevel multicore operations to raid_run_ops\n\nThe percpu conversion allowed a straightforward handoff of stripe\nprocessing to the async subsytem that initially showed some modest gains\n(+4%).  However, this model is too simplistic and leads to stripes\nbouncing between raid5d and the async thread pool for every invocation\nof handle_stripe().  As reported by Holger this can fall into a\npathological situation severely impacting throughput (6x performance\nloss).\n\nBy downleveling the parallelism to raid_run_ops the pathological\nstripe_head bouncing is eliminated.  This version still exhibits an\naverage 11% throughput loss for:\n\n\tmdadm --create /dev/md0 /dev/sd[b-q] -n 16 -l 6\n\techo 1024 \u003e /sys/block/md0/md/stripe_cache_size\n\tdd if\u003d/dev/zero of\u003d/dev/md0 bs\u003d1024k count\u003d2048\n\n...but the results are at least stable and can be used as a base for\nfurther multicore experimentation.\n\nReported-by: Holger Kiehl \u003cHolger.Kiehl@dwd.de\u003e\nSigned-off-by: Dan Williams \u003cdan.j.williams@intel.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "dce3a7a42d585b74ce68081010b42afe81c8f4c4",
      "tree": "e80cd4f574aa4df481bb3000b35a49d0debc85b2",
      "parents": [
        "ae8fa2831bbc5092ee9d1b90e623af881cf27140"
      ],
      "author": {
        "name": "Vladimir Dronnikov",
        "email": "dronnikov@gmail.com",
        "time": "Fri Oct 16 16:25:19 2009 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Oct 16 16:25:19 2009 +1100"
      },
      "message": "md: drivers/md/unroll.pl replaced with awk analog\n\ndrivers/md/unroll.pl replaced by awk script to drop build-time\ndependency on perl\n\nSigned-off-by: Vladimir Dronnikov \u003cdronnikov@gmail.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "ae8fa2831bbc5092ee9d1b90e623af881cf27140",
      "tree": "1a9e1aa4192ce9a5c57ea93d777c4fec2322b9e9",
      "parents": [
        "ed9bfdf1a40952fd0f8094ec77f876b84ead69af"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Oct 16 15:56:01 2009 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Oct 16 15:56:01 2009 +1100"
      },
      "message": "md: remove clumsy usage of do_sync_mapping_range from bitmap code\n\nand replace with vfs_fsync which is much neater (but wasn\u0027t exported,\nor even in existence at the time the code was written).\n\nCc: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "ed9bfdf1a40952fd0f8094ec77f876b84ead69af",
      "tree": "2b92f23e861fa2695a55a0cd797233d032634c9d",
      "parents": [
        "f5efd45ae597c96ed017afad5662b67d55b402a0"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Oct 16 15:55:44 2009 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Oct 16 15:55:44 2009 +1100"
      },
      "message": "md: raid1/raid10: handle allocation errors during array setup.\n\nBoth raid1 and raid10 create a mempool during startup.\nIf the \u0027alloc\u0027 function for this mempool fails, unplug_slaves\nis called.\nIf that happens when the pool is being initialised, unplug_slaves\nwill try to use the \u0027conf\u0027 structure that isn\u0027t filled in yet, and\nbadness will happen.\n\nSo ensure that unplug_slaves doesn\u0027t get called unless we know\nthat the conf structure if fully initialised.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "f5efd45ae597c96ed017afad5662b67d55b402a0",
      "tree": "32ef979c6882d594890e02466003f5255af00fe3",
      "parents": [
        "1d9d52416c0445019ccc1f0fddb9a227456eb61b"
      ],
      "author": {
        "name": "Dan Williams",
        "email": "dan.j.williams@intel.com",
        "time": "Fri Oct 16 15:55:38 2009 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Oct 16 15:55:38 2009 +1100"
      },
      "message": "md/raid5: initialize conf-\u003edevice_lock earlier\n\nDeallocating a raid5_conf_t structure requires taking \u0027device_lock\u0027.\nEnsure it is initialized before it is used, i.e. initialize the lock\nbefore attempting any further initializations that might fail.\n\nSigned-off-by: Dan Williams \u003cdan.j.williams@intel.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "1d9d52416c0445019ccc1f0fddb9a227456eb61b",
      "tree": "1dc189d68babe4827e2a16d98fae6aeaa40792d7",
      "parents": [
        "1442577bf6da1a31ae6555212202be9a2cec5642"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Oct 16 15:55:32 2009 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Oct 16 15:55:32 2009 +1100"
      },
      "message": "md/raid1/raid10: add a cond_resched\n\nDuring \u0027check\u0027 of a raid1 or raid10 it is possible for the management\nthread to spend a lot of time running \u0027memcmp\u0027 on blocks from\ndifferent devices, so make sure the thread has a chance to schedule.\nraid5d already has a cond_resched (in process_stripe).\n\nReported-By: Lee Howard \u003cfaxguy@howardsilvan.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "1442577bf6da1a31ae6555212202be9a2cec5642",
      "tree": "58843618e1fe59ac6c07dd5651dbb3f4a6355106",
      "parents": [
        "7ca263cdf8cf74d0f1c6f48d07d556de92e3bec9"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Oct 16 15:55:25 2009 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Oct 16 15:55:25 2009 +1100"
      },
      "message": "Revert \"md: do not progress the resync process if the stripe was blocked\"\n\nThis reverts commit df10cfbc4d7ab93260d997df754219d390d62a9d.\n\nThis patch was based on a misunderstanding and risks introducing a busy-wait loop.\nSo revert it.\n\nAcked-by: Dan Williams \u003cdan.j.williams@intel.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "316d315bffa4026f28085f6b24ebcebede370ac7",
      "tree": "10b6b057fec2382536371d2e14f9d4c0d6cf9eea",
      "parents": [
        "23e018a1b083ecb4b8bb2fb43d58e7c19b5d7959"
      ],
      "author": {
        "name": "Nikanth Karthikesan",
        "email": "knikanth@suse.de",
        "time": "Tue Oct 06 20:16:55 2009 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Tue Oct 06 20:16:55 2009 +0200"
      },
      "message": "block: Seperate read and write statistics of in_flight requests v2\n\nCommit a9327cac440be4d8333bba975cbbf76045096275 added seperate read\nand write statistics of in_flight requests. And exported the number\nof read and write requests in progress seperately through sysfs.\n\nBut  Corrado Zoccolo \u003cczoccolo@gmail.com\u003e reported getting strange\noutput from \"iostat -kx 2\". Global values for service time and\nutilization were garbage. For interval values, utilization was always\n100%, and service time is higher than normal.\n\nSo this was reverted by commit 0f78ab9899e9d6acb09d5465def618704255963b\n\nThe problem was in part_round_stats_single(), I missed the following:\n        if (now \u003d\u003d part-\u003estamp)\n                return;\n\n-       if (part-\u003ein_flight) {\n+       if (part_in_flight(part)) {\n                __part_stat_add(cpu, part, time_in_queue,\n                                part_in_flight(part) * (now - part-\u003estamp));\n                __part_stat_add(cpu, part, io_ticks, (now - part-\u003estamp));\n\nWith this chunk included, the reported regression gets fixed.\n\nSigned-off-by: Nikanth Karthikesan \u003cknikanth@suse.de\u003e\n\n--\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "58e57fbd1c7e8833314459555e337364fe5521f3",
      "tree": "242a3859387588889c9dcc45915b0dec951f84c3",
      "parents": [
        "8a0382f6fceaf0c6479e582e1054f36333ea3d24",
        "0f78ab9899e9d6acb09d5465def618704255963b"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Oct 04 12:39:14 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Oct 04 12:39:14 2009 -0700"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.dk/linux-2.6-block\n\n* \u0027for-linus\u0027 of git://git.kernel.dk/linux-2.6-block: (41 commits)\n  Revert \"Seperate read and write statistics of in_flight requests\"\n  cfq-iosched: don\u0027t delay async queue if it hasn\u0027t dispatched at all\n  block: Topology ioctls\n  cfq-iosched: use assigned slice sync value, not default\n  cfq-iosched: rename \u0027desktop\u0027 sysfs entry to \u0027low_latency\u0027\n  cfq-iosched: implement slower async initiate and queue ramp up\n  cfq-iosched: delay async IO dispatch, if sync IO was just done\n  cfq-iosched: add a knob for desktop interactiveness\n  Add a tracepoint for block request remapping\n  block: allow large discard requests\n  block: use normal I/O path for discard requests\n  swapfile: avoid NULL pointer dereference in swapon when s_bdev is NULL\n  fs/bio.c: move EXPORT* macros to line after function\n  Add missing blk_trace_remove_sysfs to be in pair with blk_trace_init_sysfs\n  cciss: fix build when !PROC_FS\n  block: Do not clamp max_hw_sectors for stacking devices\n  block: Set max_sectors correctly for stacking devices\n  cciss: cciss_host_attr_groups should be const\n  cciss: Dynamically allocate the drive_info_struct for each logical drive.\n  cciss: Add usage_count attribute to each logical drive in /sys\n  ...\n"
    },
    {
      "commit": "0f78ab9899e9d6acb09d5465def618704255963b",
      "tree": "b92832da61ae4f4d712a33ae524c482e979be5ba",
      "parents": [
        "e00c54c36ac2024c3a8a37432e2e2698ff849594"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Sun Oct 04 21:04:38 2009 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Sun Oct 04 21:04:38 2009 +0200"
      },
      "message": "Revert \"Seperate read and write statistics of in_flight requests\"\n\nThis reverts commit a9327cac440be4d8333bba975cbbf76045096275.\n\nCorrado Zoccolo \u003cczoccolo@gmail.com\u003e reports:\n\n\"with 2.6.32-rc1 I started getting the following strange output from\n\"iostat -kx 2\":\nLinux 2.6.31bisect (et2) \t04/10/2009 \t_i686_\t(2 CPU)\n\navg-cpu:  %user   %nice %system %iowait  %steal   %idle\n          10,70    0,00    3,16   15,75    0,00   70,38\n\nDevice:         rrqm/s   wrqm/s     r/s     w/s    rkB/s    wkB/s\navgrq-sz avgqu-sz   await  svctm  %util\nsda              18,22     0,00    0,67    0,01    14,77     0,02\n43,94     0,01   10,53 39043915,03 2629219,87\nsdb              60,89     9,68   50,79    3,04  1724,43    50,52\n65,95     0,70   13,06 488437,47 2629219,87\n\navg-cpu:  %user   %nice %system %iowait  %steal   %idle\n           2,72    0,00    0,74    0,00    0,00   96,53\n\nDevice:         rrqm/s   wrqm/s     r/s     w/s    rkB/s    wkB/s\navgrq-sz avgqu-sz   await  svctm  %util\nsda               0,00     0,00    0,00    0,00     0,00     0,00\n0,00     0,00    0,00   0,00 100,00\nsdb               0,00     0,00    0,00    0,00     0,00     0,00\n0,00     0,00    0,00   0,00 100,00\n\navg-cpu:  %user   %nice %system %iowait  %steal   %idle\n           6,68    0,00    0,99    0,00    0,00   92,33\n\nDevice:         rrqm/s   wrqm/s     r/s     w/s    rkB/s    wkB/s\navgrq-sz avgqu-sz   await  svctm  %util\nsda               0,00     0,00    0,00    0,00     0,00     0,00\n0,00     0,00    0,00   0,00 100,00\nsdb               0,00     0,00    0,00    0,00     0,00     0,00\n0,00     0,00    0,00   0,00 100,00\n\navg-cpu:  %user   %nice %system %iowait  %steal   %idle\n           4,40    0,00    0,73    1,47    0,00   93,40\n\nDevice:         rrqm/s   wrqm/s     r/s     w/s    rkB/s    wkB/s\navgrq-sz avgqu-sz   await  svctm  %util\nsda               0,00     0,00    0,00    0,00     0,00     0,00\n0,00     0,00    0,00   0,00 100,00\nsdb               0,00     4,00    0,00    3,00     0,00    28,00\n18,67     0,06   19,50 333,33 100,00\n\nGlobal values for service time and utilization are garbage. For\ninterval values, utilization is always 100%, and service time is\nhigher than normal.\n\nI bisected it down to:\n[a9327cac440be4d8333bba975cbbf76045096275] Seperate read and write\nstatistics of in_flight requests\nand verified that reverting just that commit indeed solves the issue\non 2.6.32-rc1.\"\n\nSo until this is debugged, revert the bad commit.\n\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "24836479a126e02be691e073c2b6cad7e7ab836a",
      "tree": "103d866a64b43f21bcf05baec542bac0aa6a221e",
      "parents": [
        "f1489cfb173509a3c13444b46b6c989bad4f5b16"
      ],
      "author": {
        "name": "Philipp Reisner",
        "email": "philipp.reisner@linbit.com",
        "time": "Fri Oct 02 02:40:08 2009 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Fri Oct 02 10:54:10 2009 -0700"
      },
      "message": "dm/connector: Only process connector packages from privileged processes\n\nSigned-off-by: Philipp Reisner \u003cphilipp.reisner@linbit.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "18366b05a00349c1606269ba7422bf9b3a357ff2",
      "tree": "e6576e41d6812696e65c492ff512def54583de76",
      "parents": [
        "7069331dbe7155f23966f5944109f909fea0c7e4"
      ],
      "author": {
        "name": "Philipp Reisner",
        "email": "philipp.reisner@linbit.com",
        "time": "Fri Oct 02 02:40:06 2009 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Fri Oct 02 10:54:04 2009 -0700"
      },
      "message": "connector/dm: Fixed a compilation warning\n\nSigned-off-by: Philipp Reisner \u003cphilipp.reisner@linbit.com\u003e\nAcked-by: Lars Ellenberg \u003clars.ellenberg@linbit.com\u003e\nAcked-by: Evgeniy Polyakov \u003czbr@ioremap.net\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "7069331dbe7155f23966f5944109f909fea0c7e4",
      "tree": "5ea80628d1bf5e776a540ee84814f085c9adff04",
      "parents": [
        "293500a23f4b0698cb04abfecfc9a954d8ab2742"
      ],
      "author": {
        "name": "Philipp Reisner",
        "email": "philipp.reisner@linbit.com",
        "time": "Fri Oct 02 02:40:05 2009 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Fri Oct 02 10:54:01 2009 -0700"
      },
      "message": "connector: Provide the sender\u0027s credentials to the callback\n\nSigned-off-by: Philipp Reisner \u003cphilipp.reisner@linbit.com\u003e\nAcked-by: Lars Ellenberg \u003clars.ellenberg@linbit.com\u003e\nAcked-by: Evgeniy Polyakov \u003czbr@ioremap.net\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "4b3df5668c8ebaebd8d66a5a94374be3e3b2ef0c",
      "tree": "51a231742e211143f5845edf4b09d1712dcd2771",
      "parents": [
        "1ef04fefe2241087d9db7e9615c3f11b516e36cf",
        "1f6672d44c1ae7408b43c06170ec34eb0a0e9b9f"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed Sep 23 18:31:11 2009 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed Sep 23 18:31:11 2009 +1000"
      },
      "message": "Merge branch \u0027next\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/djbw/async_tx into for-linus\n"
    },
    {
      "commit": "1ef04fefe2241087d9db7e9615c3f11b516e36cf",
      "tree": "c050718dcdd9f61c698fe6c0247fa0f99b7c4f72",
      "parents": [
        "f28f4e272876317626cd399288b4030b627c4b91"
      ],
      "author": {
        "name": "Dmitry Monakhov",
        "email": "rjevskiy@gmail.com",
        "time": "Sun Sep 20 05:52:25 2009 +0400"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed Sep 23 18:20:15 2009 +1000"
      },
      "message": "md: raid-1/10: fix RW bits manipulation\n\nRecently Jens has changed bio_rw_flagged() logic by following\ncommit 1f98a13f623e0ef666690a18c1250335fc6d7ef1. Now it returns\nbool instead of int. This broke raid1/raid10 RW bits manipulation logic.\nOne of visible result is BUG_ON triggering due to empty barrier\nhere scsi_lib.c:1108 scsi_setup_fs_cmnd()\n\nSigned-off-by: Dmitry Monakhov \u003cdmonakhov@openvz.org\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "f28f4e272876317626cd399288b4030b627c4b91",
      "tree": "6d6903a86337419f5b3b1dd93bf23e2e0302f9f5",
      "parents": [
        "3fa841d7e7266f6fcc1b3885b905f5153ba897d8"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed Sep 23 18:16:31 2009 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed Sep 23 18:16:31 2009 +1000"
      },
      "message": "md: remove unnecessary memset from multipath.\n\nRecent commit bbba809e96539672f775a3d70102657d05816a5b\nreplaced mempool_create_kzalloc_pool with mempool_create_kmalloc_pool\nplus a memset.\nThis memset is not needed (and we didn\u0027t need kzalloc in the first\nplace).\nEver field of the allocated structure (struct multipath_bh) is\ninitialised immediately except retry_list, and memset does not\ninitial a list_head anyway.\n\nTo remove the memset.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "3fa841d7e7266f6fcc1b3885b905f5153ba897d8",
      "tree": "7afa971a10eddcf52787340ea43fa1e910b5805b",
      "parents": [
        "0da3c6194ec2f32617b272df4505a1cf022faea5"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed Sep 23 18:10:29 2009 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed Sep 23 18:10:29 2009 +1000"
      },
      "message": "md: report device as congested when suspended\n\nThis should writeback from coming when the device is temporarily\nsuspended.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "0da3c6194ec2f32617b272df4505a1cf022faea5",
      "tree": "5864b61b8fac2e7477668bdb9a493d2a64d0b3dd",
      "parents": [
        "ee305acef5c7841dc25cc32e84bb94f744e1e9b9"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed Sep 23 18:09:45 2009 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed Sep 23 18:09:45 2009 +1000"
      },
      "message": "md: Improve name of threads created by md_register_thread\n\nThe management thread for raid4,5,6 arrays are all called\nmdX_raid5, independent of the actual raid level, which is wrong and\ncan be confusion.\n\nSo change md_register_thread to use the name from the personality\nunless no alternate name (like \u0027resync\u0027 or \u0027reshape\u0027) is given.\n\nThis is simpler and more correct.\n\nCc: Jinzc \u003czhenchengjin@gmail.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "ee305acef5c7841dc25cc32e84bb94f744e1e9b9",
      "tree": "f952a19fce593391e5cbd4a3bb4087d214a8ddc0",
      "parents": [
        "a9f326ebf22a0de776815240fb76dabe139397ea"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed Sep 23 18:06:44 2009 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed Sep 23 18:06:44 2009 +1000"
      },
      "message": "md: remove sparse warnings about lock context.\n\nThere was a real error here on a failure path where we\nincorrectly call rcu_read_unlock.\n\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "a9f326ebf22a0de776815240fb76dabe139397ea",
      "tree": "4402ba08931cd0663aca077be4d26e66c91869bd",
      "parents": [
        "7fa07729e439a6184bd824746d06a49cca553f15"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed Sep 23 18:06:41 2009 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed Sep 23 18:06:41 2009 +1000"
      },
      "message": "md: remove sparse waring \"symbol xxx shadows an earlier one\"\n\nRename some variable and remove some duplicate definitions\nto avoid there warnings.  None of them are actual errors.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "342ff1a1b558ebbdb8cbd55ab6a63eca8b2473ca",
      "tree": "1f967f283dade6e03897169bb29513354f49f910",
      "parents": [
        "50223e486cabdcf7e540e519da1f26bab3084e5d",
        "24ed7a97464db44592495f98cff8bcee02f92bc2"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Sep 22 07:51:45 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Sep 22 07:51:45 2009 -0700"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial: (34 commits)\n  trivial: fix typo in aic7xxx comment\n  trivial: fix comment typo in drivers/ata/pata_hpt37x.c\n  trivial: typo in kernel-parameters.txt\n  trivial: fix typo in tracing documentation\n  trivial: add __init/__exit macros in drivers/gpio/bt8xxgpio.c\n  trivial: add __init macro/ fix of __exit macro location in ipmi_poweroff.c\n  trivial: remove unnecessary semicolons\n  trivial: Fix duplicated word \"options\" in comment\n  trivial: kbuild: remove extraneous blank line after declaration of usage()\n  trivial: improve help text for mm debug config options\n  trivial: doc: hpfall: accept disk device to unload as argument\n  trivial: doc: hpfall: reduce risk that hpfall can do harm\n  trivial: SubmittingPatches: Fix reference to renumbered step\n  trivial: fix typos \"man[ae]g?ment\" -\u003e \"management\"\n  trivial: media/video/cx88: add __init/__exit macros to cx88 drivers\n  trivial: fix typo in CONFIG_DEBUG_FS in gcov doc\n  trivial: fix missing printk space in amd_k7_smp_check\n  trivial: fix typo s/ketymap/keymap/ in comment\n  trivial: fix typo \"to to\" in multiple files\n  trivial: fix typos in comments s/DGBU/DBGU/\n  ...\n"
    },
    {
      "commit": "bbba809e96539672f775a3d70102657d05816a5b",
      "tree": "6cd9f7b028316f50fa3a06d78cb11ee982c3d09b",
      "parents": [
        "72ff13b7036bc7923e0f2b5f4a724ca260d49aab"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Mon Sep 21 17:02:55 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Sep 22 07:17:35 2009 -0700"
      },
      "message": "md: avoid use of broken kzalloc mempool\n\nThe kzalloc mempool does not re-zero items that have been used and then\nreturned to the pool.  Manually zero the allocated multipath_bh instead.\n\nAcked-by: Neil Brown \u003cneilb@suse.de\u003e\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "83d5cde47dedf01b6a4a4331882cbc0a7eea3c2e",
      "tree": "f8ba5e263717d35cd444fcc65898d2ed352af1ae",
      "parents": [
        "7b021967c5e1463936042c8da72b550d3cabe9ac"
      ],
      "author": {
        "name": "Alexey Dobriyan",
        "email": "adobriyan@gmail.com",
        "time": "Mon Sep 21 17:01:13 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Sep 22 07:17:25 2009 -0700"
      },
      "message": "const: make block_device_operations const\n\nSigned-off-by: Alexey Dobriyan \u003cadobriyan@gmail.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "411c94038594b2a3fd123d09bdec3fe2500e383d",
      "tree": "44b991786c7f4806b1b88f40439945b3835b6292",
      "parents": [
        "786d8ca341a30296264bc6cebac52d37b0851647"
      ],
      "author": {
        "name": "Anand Gadiyar",
        "email": "gadiyar@ti.com",
        "time": "Tue Jul 07 15:24:23 2009 +0530"
      },
      "committer": {
        "name": "Jiri Kosina",
        "email": "jkosina@suse.cz",
        "time": "Mon Sep 21 15:14:54 2009 +0200"
      },
      "message": "trivial: fix typo \"for for\" in multiple files\n\ntrivial: fix typo \"for for\" in multiple files\n\nSigned-off-by: Anand Gadiyar \u003cgadiyar@ti.com\u003e\nSigned-off-by: Jiri Kosina \u003cjkosina@suse.cz\u003e\n"
    },
    {
      "commit": "e454cea20bdcff10ee698d11b8882662a0153a47",
      "tree": "f44581fe57787aef0a4f4dc00993a90ea8e688f6",
      "parents": [
        "78f28b7c555359c67c2a0d23f7436e915329421e"
      ],
      "author": {
        "name": "Kay Sievers",
        "email": "kay.sievers@vrfy.org",
        "time": "Fri Sep 18 23:01:12 2009 +0200"
      },
      "committer": {
        "name": "Live-CD User",
        "email": "linux@linux.site",
        "time": "Sat Sep 19 12:50:38 2009 -0700"
      },
      "message": "Driver-Core: extend devnode callbacks to provide permissions\n\nThis allows subsytems to provide devtmpfs with non-default permissions\nfor the device node. Instead of the default mode of 0600, null, zero,\nrandom, urandom, full, tty, ptmx now have a mode of 0666, which allows\nnon-privileged processes to access standard device nodes in case no\nother userspace process applies the expected permissions.\n\nThis also fixes a wrong assignment in pktcdvd and a checkpatch.pl complain.\n\nSigned-off-by: Kay Sievers \u003ckay.sievers@vrfy.org\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@suse.de\u003e\n"
    },
    {
      "commit": "6c910a78e495b4c1778a8b136b37fe3c05712730",
      "tree": "46bb72265a9ea354e1bb6b043318e93dbf07df5e",
      "parents": [
        "2d6e4ecc87d20299bcb249dd62efbd73496744c3"
      ],
      "author": {
        "name": "Dan Williams",
        "email": "dan.j.williams@intel.com",
        "time": "Wed Sep 16 12:24:54 2009 -0700"
      },
      "committer": {
        "name": "Dan Williams",
        "email": "dan.j.williams@intel.com",
        "time": "Wed Sep 16 12:24:54 2009 -0700"
      },
      "message": "md/raid6: cleanup ops_run_compute6_2\n\nNeil says:\n\t\"It is correct as it stands, but the fact that every branch in\n\t the \u0027if\u0027 part ends with a \u0027return\u0027 isn\u0027t immediately obvious,\n\t so it is clearer if we are explicit about the if / then / else\n\t structure.\"\n\nSigned-off-by: Dan Williams \u003cdan.j.williams@intel.com\u003e\n"
    },
    {
      "commit": "2d6e4ecc87d20299bcb249dd62efbd73496744c3",
      "tree": "943c2a81e5a7996129978169c2f431b3b0c9f282",
      "parents": [
        "084dac53adcfb910792a66bc0bae720cdde971de"
      ],
      "author": {
        "name": "Dan Williams",
        "email": "dan.j.williams@intel.com",
        "time": "Wed Sep 16 12:11:54 2009 -0700"
      },
      "committer": {
        "name": "Dan Williams",
        "email": "dan.j.williams@intel.com",
        "time": "Wed Sep 16 12:11:54 2009 -0700"
      },
      "message": "md/raid6: eliminate BUG_ON with side effect\n\nAs pointed out by Neil it should be possible to build a driver with all\nBUG_ON statements deleted.  It\u0027s bad form to have a BUG_ON with a side\neffect.\n\nSigned-off-by: Dan Williams \u003cdan.j.williams@intel.com\u003e\n"
    },
    {
      "commit": "355bbd8cb82e60a592f6cd86ce6dbe5677615cf4",
      "tree": "23678e50ad4687f1656edc972388ee8014e7b89d",
      "parents": [
        "39695224bd84dc4be29abad93a0ec232a16fc519",
        "746cd1e7e4a555ddaee53b19a46e05c9c61eaf09"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Sep 14 17:55:15 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Sep 14 17:55:15 2009 -0700"
      },
      "message": "Merge branch \u0027for-2.6.32\u0027 of git://git.kernel.dk/linux-2.6-block\n\n* \u0027for-2.6.32\u0027 of git://git.kernel.dk/linux-2.6-block: (29 commits)\n  block: use blkdev_issue_discard in blk_ioctl_discard\n  Make DISCARD_BARRIER and DISCARD_NOBARRIER writes instead of reads\n  block: don\u0027t assume device has a request list backing in nr_requests store\n  block: Optimal I/O limit wrapper\n  cfq: choose a new next_req when a request is dispatched\n  Seperate read and write statistics of in_flight requests\n  aoe: end barrier bios with EOPNOTSUPP\n  block: trace bio queueing trial only when it occurs\n  block: enable rq CPU completion affinity by default\n  cfq: fix the log message after dispatched a request\n  block: use printk_once\n  cciss: memory leak in cciss_init_one()\n  splice: update mtime and atime on files\n  block: make blk_iopoll_prep_sched() follow normal 0/1 return convention\n  cfq-iosched: get rid of must_alloc flag\n  block: use interrupts disabled version of raise_softirq_irqoff()\n  block: fix comment in blk-iopoll.c\n  block: adjust default budget for blk-iopoll\n  block: fix long lines in block/blk-iopoll.c\n  block: add blk-iopoll, a NAPI like approach for block devices\n  ...\n"
    },
    {
      "commit": "39695224bd84dc4be29abad93a0ec232a16fc519",
      "tree": "2bfa5cb50788a4c8be9f2e9f4412e47a565f4508",
      "parents": [
        "a9bbd210a44102cc50b30a5f3d111dbf5f2f9cd4",
        "ea038f63ac52439e7816295fa6064fe95e6c1f51"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Sep 14 17:53:36 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Sep 14 17:53:36 2009 -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: (209 commits)\n  [SCSI] fix oops during scsi scanning\n  [SCSI] libsrp: fix memory leak in srp_ring_free()\n  [SCSI] libiscsi, bnx2i: make bound ep check common\n  [SCSI] libiscsi: add completion function for drivers that do not need pdu processing\n  [SCSI] scsi_dh_rdac: changes for rdac debug logging\n  [SCSI] scsi_dh_rdac: changes to collect the rdac debug information during the initialization\n  [SCSI] scsi_dh_rdac: move the init code from rdac_activate to rdac_bus_attach\n  [SCSI] sg: fix oops in the error path in sg_build_indirect()\n  [SCSI] mptsas : Bump version to 3.04.12\n  [SCSI] mptsas : FW event thread and scsi mid layer deadlock in SYNCHRONIZE CACHE command\n  [SCSI] mptsas : Send DID_NO_CONNECT for pending IOs of removed device\n  [SCSI] mptsas : PAE Kernel more than 4 GB kernel panic\n  [SCSI] mptsas : NULL pointer on big endian systems causing Expander not to tear off\n  [SCSI] mptsas : Sanity check for phyinfo is added\n  [SCSI] scsi_dh_rdac: Add support for Sun StorageTek ST2500, ST2510 and ST2530\n  [SCSI] pmcraid: PMC-Sierra MaxRAID driver to support 6Gb/s SAS RAID controller\n  [SCSI] qla2xxx: Update version number to 8.03.01-k6.\n  [SCSI] qla2xxx: Properly delete rports attached to a vport.\n  [SCSI] qla2xxx: Correct various NPIV issues.\n  [SCSI] qla2xxx: Correct qla2x00_eh_wait_on_command() to wait correctly.\n  ...\n"
    },
    {
      "commit": "3c5820c743479285ce2678fd3c12b1fd39fe998f",
      "tree": "8f6b3980f5e8da4912b44eee4688d51ce12c97a3",
      "parents": [
        "06d2188644c85c56d243efab914f368d1d23c4a3"
      ],
      "author": {
        "name": "Martin K. Petersen",
        "email": "martin.petersen@oracle.com",
        "time": "Fri Sep 11 21:54:52 2009 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Mon Sep 14 08:24:52 2009 +0200"
      },
      "message": "block: Optimal I/O limit wrapper\n\nImplement blk_limits_io_opt() and make blk_queue_io_opt() a wrapper\naround it. DM needs this to avoid poking at the queue_limits directly.\n\nSigned-off-by: Martin K. Petersen \u003cmartin.petersen@oracle.com\u003e\nSigned-off-by: Mike Snitzer \u003csnitzer@redhat.com\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "a9327cac440be4d8333bba975cbbf76045096275",
      "tree": "83fd5dc45dc925c5b4eb0264c3add96cfaa4cae6",
      "parents": [
        "18d8217bc441630c3c5ec7416c5a65c69e8a0979"
      ],
      "author": {
        "name": "Nikanth Karthikesan",
        "email": "knikanth@suse.de",
        "time": "Fri Sep 11 09:18:54 2009 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Mon Sep 14 08:24:52 2009 +0200"
      },
      "message": "Seperate read and write statistics of in_flight requests\n\nCurrently, there is a single in_flight counter measuring the number of\nrequests in the request_queue. But some monitoring tools would like to\nknow how many read requests and write requests are in progress. Split the\ncurrent in_flight counter into two seperate counters for read and write.\n\nThis information is exported as a sysfs attribute, as changing the\ncurrently available stat files would break the existing tools.\n\nSigned-off-by: Nikanth Karthikesan \u003cknikanth@suse.de\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "1f98a13f623e0ef666690a18c1250335fc6d7ef1",
      "tree": "15ca2dddffaa18a0d1844957f4f8cc707cbb8117",
      "parents": [
        "e7e503aedb1f4d165081cb8d47a58c38f80f0cb4"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Fri Sep 11 14:32:04 2009 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Fri Sep 11 14:33:31 2009 +0200"
      },
      "message": "bio: first step in sanitizing the bio-\u003ebi_rw flag testing\n\nGet rid of any functions that test for these bits and make callers\nuse bio_rw_flagged() directly. Then it is at least directly apparent\nwhat variable and flag they check.\n\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "0d03d59d9b31cd1e33b7e46a80b6fef66244b1f2",
      "tree": "fab3cfc08a242b4744982b40cce837879ffa0272",
      "parents": [
        "526b678093a8a4bcf1ffffbe17bcf21c057eddf5"
      ],
      "author": {
        "name": "Geert Uytterhoeven",
        "email": "geert@linux-m68k.org",
        "time": "Thu Sep 10 23:13:28 2009 +0200"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Sep 10 14:55:01 2009 -0700"
      },
      "message": "md: Fix \"strchr\" [drivers/md/dm-log-userspace.ko] undefined!\n\nCommit b8313b6da7e2e7c7f47d93d8561969a3ff9ba0ea (\"dm log: remove incorrect\nfield from userspace table output\") added a call to strstr() with a\nsingle-character \"needle\" string parameter.\n\nUnfortunately some versions of gcc replace such calls to strstr() by calls\nto strchr() behind our back.  This causes linking errors if strchr() is\ndefined as an inline function in \u003casm/string.h\u003e (e.g. on m68k):\n\n| WARNING: \"strchr\" [drivers/md/dm-log-userspace.ko] undefined!\n\nAvoid this by explicitly calling strchr() instead.\n\nSigned-off-by: Geert Uytterhoeven \u003cgeert@linux-m68k.org\u003e\nCc: stable@kernel.org\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "9134d02bc0af4a8747d448d1f811ec5f8eb96df6",
      "tree": "704c3e5dcc10f360815c4868a74711f82fb62e27",
      "parents": [
        "bbb20089a3275a19e475dbc21320c3742e3ca423",
        "80ffb3cceaefa405f2ecd46d66500ed8d53efe74"
      ],
      "author": {
        "name": "Dan Williams",
        "email": "dan.j.williams@intel.com",
        "time": "Tue Sep 08 17:55:54 2009 -0700"
      },
      "committer": {
        "name": "Dan Williams",
        "email": "dan.j.williams@intel.com",
        "time": "Tue Sep 08 17:55:54 2009 -0700"
      },
      "message": "Merge commit \u0027md/for-linus\u0027 into async-tx-next\n\nConflicts:\n\tdrivers/md/raid5.c\n"
    },
    {
      "commit": "bbb20089a3275a19e475dbc21320c3742e3ca423",
      "tree": "216fdc1cbef450ca688135c5b8969169482d9a48",
      "parents": [
        "3e48e656903e9fd8bc805c6a2c4264d7808d315b",
        "657a77fa7284d8ae28dfa48f1dc5d919bf5b2843"
      ],
      "author": {
        "name": "Dan Williams",
        "email": "dan.j.williams@intel.com",
        "time": "Tue Sep 08 17:55:21 2009 -0700"
      },
      "committer": {
        "name": "Dan Williams",
        "email": "dan.j.williams@intel.com",
        "time": "Tue Sep 08 17:55:21 2009 -0700"
      },
      "message": "Merge branch \u0027dmaengine\u0027 into async-tx-next\n\nConflicts:\n\tcrypto/async_tx/async_xor.c\n\tdrivers/dma/ioat/dma_v2.h\n\tdrivers/dma/ioat/pci.c\n\tdrivers/md/raid5.c\n"
    },
    {
      "commit": "0403e3827788d878163f9ef0541b748b0f88ca5d",
      "tree": "2dc73744bd92c268a1310f24668167f130877278",
      "parents": [
        "f9dd2134374c8de6b911e2b8652c6c9622eaa658"
      ],
      "author": {
        "name": "Dan Williams",
        "email": "dan.j.williams@intel.com",
        "time": "Tue Sep 08 17:42:50 2009 -0700"
      },
      "committer": {
        "name": "Dan Williams",
        "email": "dan.j.williams@intel.com",
        "time": "Tue Sep 08 17:42:50 2009 -0700"
      },
      "message": "dmaengine: add fence support\n\nSome engines optimize operation by reading ahead in the descriptor chain\nsuch that descriptor2 may start execution before descriptor1 completes.\nIf descriptor2 depends on the result from descriptor1 then a fence is\nrequired (on descriptor2) to disable this optimization.  The async_tx\napi could implicitly identify dependencies via the \u0027depend_tx\u0027\nparameter, but that would constrain cases where the dependency chain\nonly specifies a completion order rather than a data dependency.  So,\nprovide an ASYNC_TX_FENCE to explicitly identify data dependencies.\n\nSigned-off-by: Dan Williams \u003cdan.j.williams@intel.com\u003e\n"
    },
    {
      "commit": "f9dd2134374c8de6b911e2b8652c6c9622eaa658",
      "tree": "c1b8f8d622941606b9e7247ab31d811ba4295011",
      "parents": [
        "4b652f0db3be891c7b76b109c3b55003b920fc96",
        "07a3b417dc3d00802bd7b4874c3e811f0b015a7d"
      ],
      "author": {
        "name": "Dan Williams",
        "email": "dan.j.williams@intel.com",
        "time": "Tue Sep 08 17:42:29 2009 -0700"
      },
      "committer": {
        "name": "Dan Williams",
        "email": "dan.j.williams@intel.com",
        "time": "Tue Sep 08 17:42:29 2009 -0700"
      },
      "message": "Merge branch \u0027md-raid6-accel\u0027 into ioat3.2\n\nConflicts:\n\tinclude/linux/dmaengine.h\n"
    },
    {
      "commit": "ae0b7448e91353ea5f821601a055aca6b58042cd",
      "tree": "a5c5d0532c808fb1eb2c01414edfcd2d0c039a7e",
      "parents": [
        "2defcc3fb4661e7351cb2ac48d843efc4c64db13"
      ],
      "author": {
        "name": "Mikulas Patocka",
        "email": "mpatocka@redhat.com",
        "time": "Fri Sep 04 20:40:43 2009 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Fri Sep 04 20:40:43 2009 +0100"
      },
      "message": "dm snapshot: fix on disk chunk size validation\n\nFix some problems seen in the chunk size processing when activating a\npre-existing snapshot.\n\nFor a new snapshot, the chunk size can either be supplied by the creator\nor a default value can be used.  For an existing snapshot, the\nchunk size in the snapshot header on disk should always be used.\n\nIf someone attempts to load an existing snapshot and has the \u0027default\nchunk size\u0027 option set, the kernel uses its default value even when it\nis incorrect for the snapshot being loaded.  This patch ensures the\ncorrect on-disk value is always used.\n\nSecondly, when the code does use the chunk size stored on the disk it is\nprudent to revalidate it, so the code can exit cleanly if it got\ncorrupted as happened in\nhttps://bugzilla.redhat.com/show_bug.cgi?id\u003d461506 .\n\nCc: stable@kernel.org\nSigned-off-by: Mikulas Patocka \u003cmpatocka@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "2defcc3fb4661e7351cb2ac48d843efc4c64db13",
      "tree": "18be3f5f6c38f8b8b535f05e6004090cd9143af6",
      "parents": [
        "61578dcd3fafe6babd72e8db32110cc0b630a432"
      ],
      "author": {
        "name": "Mikulas Patocka",
        "email": "mpatocka@redhat.com",
        "time": "Fri Sep 04 20:40:41 2009 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Fri Sep 04 20:40:41 2009 +0100"
      },
      "message": "dm exception store: split set_chunk_size\n\nBreak the function set_chunk_size to two functions in preparation for\nthe fix in the following patch.\n\nCc: stable@kernel.org\nSigned-off-by: Mikulas Patocka \u003cmpatocka@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "61578dcd3fafe6babd72e8db32110cc0b630a432",
      "tree": "8e5bb9e66ec43666dd5079cc9203fc56c233b469",
      "parents": [
        "02d2fd31defce6ff77146ad0fef4f19006055d86"
      ],
      "author": {
        "name": "Mikulas Patocka",
        "email": "mpatocka@redhat.com",
        "time": "Fri Sep 04 20:40:39 2009 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Fri Sep 04 20:40:39 2009 +0100"
      },
      "message": "dm snapshot: fix header corruption race on invalidation\n\nIf a persistent snapshot fills up, a race can corrupt the on-disk header\nwhich causes a crash on any future attempt to activate the snapshot\n(typically while booting).  This patch fixes the race.\n\nWhen the snapshot overflows, __invalidate_snapshot is called, which calls\nsnapshot store method drop_snapshot. It goes to persistent_drop_snapshot that\ncalls write_header. write_header constructs the new header in the \"area\"\nlocation.\n\nConcurrently, an existing kcopyd job may finish, call copy_callback\nand commit_exception method, that goes to persistent_commit_exception.\npersistent_commit_exception doesn\u0027t do locking, relying on the fact that\ncallbacks are single-threaded, but it can race with snapshot invalidation and\noverwrite the header that is just being written while the snapshot is being\ninvalidated.\n\nThe result of this race is a corrupted header being written that can\nlead to a crash on further reactivation (if chunk_size is zero in the\ncorrupted header).\n\nThe fix is to use separate memory areas for each.\n\nSee the bug: https://bugzilla.redhat.com/show_bug.cgi?id\u003d461506\n\nCc: stable@kernel.org\nSigned-off-by: Mikulas Patocka \u003cmpatocka@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "02d2fd31defce6ff77146ad0fef4f19006055d86",
      "tree": "de8103e62595fbc1efcd39ff83bf146018e5180b",
      "parents": [
        "7ec23d50949d5062b5b749638dd9380ed75e58e5"
      ],
      "author": {
        "name": "Mikulas Patocka",
        "email": "mpatocka@redhat.com",
        "time": "Fri Sep 04 20:40:37 2009 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Fri Sep 04 20:40:37 2009 +0100"
      },
      "message": "dm snapshot: refactor zero_disk_area to use chunk_io\n\nRefactor chunk_io to prepare for the fix in the following patch.\n\nPass an area pointer to chunk_io and simplify zero_disk_area to use\nchunk_io.  No functional change.\n\nCc: stable@kernel.org\nSigned-off-by: Mikulas Patocka \u003cmpatocka@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "7ec23d50949d5062b5b749638dd9380ed75e58e5",
      "tree": "28183b6468683cf28abd63b9c322b9f31bcddc5e",
      "parents": [
        "d2b698644c97cb033261536a4f2010924a00eac9"
      ],
      "author": {
        "name": "Jonathan Brassow",
        "email": "jbrassow@redhat.com",
        "time": "Fri Sep 04 20:40:34 2009 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Fri Sep 04 20:40:34 2009 +0100"
      },
      "message": "dm log: userspace add luid to distinguish between concurrent log instances\n\nDevice-mapper userspace logs (like the clustered log) are\nidentified by a universally unique identifier (UUID).  This\nidentifier is used to associate requests from the kernel to\na specific log in userspace.  The UUID must be unique everywhere,\nsince multiple machines may use this identifier when communicating\nabout a particular log, as is the case for cluster logs.\n\nSometimes, device-mapper/LVM may re-use a UUID.  This is the\ncase during pvmoves, when moving from one segment of an LV\nto another, or when resizing a mirror, etc.  In these cases,\na new log is created with the same UUID and loaded in the\n\"inactive\" slot.  When a device-mapper \"resume\" is issued,\nthe \"live\" table is deactivated and the new \"inactive\" table\nbecomes \"live\".  (The \"inactive\" table can also be removed\nvia a device-mapper \u0027clear\u0027 command.)\n\nThe above two issues were colliding.  More than one log was being\ncreated with the same UUID, and there was no way to distinguish\nbetween them.  So, sometimes the wrong log would be swapped\nout during the exchange.\n\nThe solution is to create a locally unique identifier,\n\u0027luid\u0027, to go along with the UUID.  This new identifier is used\nto determine exactly which log is being referenced by the kernel\nwhen the log exchange is made.  The identifier is not\nuniversally safe, but it does not need to be, since\ncreate/destroy/suspend/resume operations are bound to a specific\nmachine; and these are the operations that make up the exchange.\n\nSigned-off-by: Jonathan Brassow \u003cjbrassow@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "d2b698644c97cb033261536a4f2010924a00eac9",
      "tree": "32192650a01c913a85953c0a756fca06320fef46",
      "parents": [
        "b8313b6da7e2e7c7f47d93d8561969a3ff9ba0ea"
      ],
      "author": {
        "name": "Jonathan Brassow",
        "email": "jbrassow@redhat.com",
        "time": "Fri Sep 04 20:40:32 2009 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Fri Sep 04 20:40:32 2009 +0100"
      },
      "message": "dm raid1: do not allow log_failure variable to unset after being set\n\nThis patch fixes a bug which was triggering a case where the primary leg\ncould not be changed on failure even when the mirror was in-sync.\n\nThe case involves the failure of the primary device along with\nthe transient failure of the log device.  The problem is that\nbios can be put on the \u0027failures\u0027 list (due to log failure)\nbefore \u0027fail_mirror\u0027 is called due to the primary device failure.\nNormally, this is fine, but if the log device failure is transient,\na subsequent iteration of the work thread, \u0027do_mirror\u0027, will\nreset \u0027log_failure\u0027.  The \u0027do_failures\u0027 function then resets\nthe \u0027in_sync\u0027 variable when processing bios on the failures list.\nThe \u0027in_sync\u0027 variable is what is used to determine if the\nprimary device can be switched in the event of a failure.  Since\nthis has been reset, the primary device is incorrectly assumed\nto be not switchable.\n\nThe case has been seen in the cluster mirror context, where one\nmachine realizes the log device is dead before the other machines.\nAs the responsibilities of the server migrate from one node to\nanother (because the mirror is being reconfigured due to the failure),\nthe new server may think for a moment that the log device is fine -\nthus resetting the \u0027log_failure\u0027 variable.\n\nIn any case, it is inappropiate for us to reset the \u0027log_failure\u0027\nvariable.  The above bug simply illustrates that it can actually\nhurt us.\n\nCc: stable@kernel.org\nSigned-off-by: Jonathan Brassow \u003cjbrassow@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "b8313b6da7e2e7c7f47d93d8561969a3ff9ba0ea",
      "tree": "c605b02cb6ad5c4b68d4066eca4aac6c4747e839",
      "parents": [
        "4142a969175302bc843d1505133488bfdbfa4732"
      ],
      "author": {
        "name": "Jonathan Brassow",
        "email": "jbrassow@redhat.com",
        "time": "Fri Sep 04 20:40:30 2009 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Fri Sep 04 20:40:30 2009 +0100"
      },
      "message": "dm log: remove incorrect field from userspace table output\n\nThe output of \u0027dmsetup table\u0027 includes an internal field that should not\nbe there.  This patch removes it.  To make the fix simpler, we first\nreorder a constructor argument\n\nThe \u0027device size\u0027 argument is generated internally.  Currently it is\nplaced as the last space-separated word of the constructor string.\nHowever, we need to use a version of the string without this word, so we\nmove it to the beginning instead so it is trivial to skip past it.\n\nWe keep a copy of the arguments passed to userspace for creating a log,\njust in case we need to resend them.  These are the same arguments that\nare desired in the STATUSTYPE_TABLE request, except for one.  When\ncreating the userspace log, the userspace daemon must know the size of\nthe mirror, so that is added to the arguments given in the constructor\ntable.  We were printing this extra argument out as well, which is a\nmistake.\n\nSigned-off-by: Jonathan Brassow \u003cjbrassow@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "4142a969175302bc843d1505133488bfdbfa4732",
      "tree": "737cce5d0dc543dacefd7bc2fa27fc43b118318a",
      "parents": [
        "40bea431274c247425e7f5970d796ff7b37a2b22"
      ],
      "author": {
        "name": "Jonathan Brassow",
        "email": "jbrassow@redhat.com",
        "time": "Fri Sep 04 20:40:28 2009 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Fri Sep 04 20:40:28 2009 +0100"
      },
      "message": "dm log: fix userspace status output\n\nFix \u0027dmsetup table\u0027 output.\n\nThere is a missing \u0027 \u0027 at the end of the string causing two\nwords to run together.\n\nSigned-off-by: Jonathan Brassow \u003cjbrassow@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "40bea431274c247425e7f5970d796ff7b37a2b22",
      "tree": "cc9791861c01605d2dca28d3eac9182c301a832c",
      "parents": [
        "a963a956225eb0f8c4d3537f428153c30adf54b8"
      ],
      "author": {
        "name": "Mike Snitzer",
        "email": "snitzer@redhat.com",
        "time": "Fri Sep 04 20:40:25 2009 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Fri Sep 04 20:40:25 2009 +0100"
      },
      "message": "dm stripe: expose correct io hints\n\nSet sensible I/O hints for striped DM devices in the topology\ninfrastructure added for 2.6.31 for userspace tools to\nobtain via sysfs.\n\nAdd .io_hints to \u0027struct target_type\u0027 to allow the I/O hints portion\n(io_min and io_opt) of the \u0027struct queue_limits\u0027 to be set by each\ntarget and implement this for dm-stripe.\n\nSigned-off-by: Mike Snitzer \u003csnitzer@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "a963a956225eb0f8c4d3537f428153c30adf54b8",
      "tree": "d4204f64aaf23b7a1615f4f293358eca5125c748",
      "parents": [
        "f6a1ed10864b7540fa758bbccf3433fe17070329"
      ],
      "author": {
        "name": "Mike Snitzer",
        "email": "snitzer@redhat.com",
        "time": "Fri Sep 04 20:40:24 2009 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Fri Sep 04 20:40:24 2009 +0100"
      },
      "message": "dm table: add more context to terse warning messages\n\nA couple of recent warning messages make it difficult for the reader to\ndetermine exactly what is wrong.  This patch adds more information to\nthose messages.\n\nThe messages were added by these commits:\n  5dea271b6d87bd1d79a59c1d5baac2596a841c37 (\"dm table: pass correct dev area size\nto device_area_is_valid\")\n  ea9df47cc92573b159ef3b4fda516c32cba9c4fd (\"dm table: fix blk_stack_limits arg\nto use bytes not sectors\")\n\nThe patch also corrects references to logical_block_size in printk format\nstrings from %hu to %u.\n\nSigned-off-by: Mike Snitzer \u003csnitzer@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "f6a1ed10864b7540fa758bbccf3433fe17070329",
      "tree": "e0b8f1c02f0527e0870dee2977f311695856f8a5",
      "parents": [
        "8811f46c1f9386fc7017150de9d52359e5b1826e"
      ],
      "author": {
        "name": "Mikulas Patocka",
        "email": "mpatocka@redhat.com",
        "time": "Fri Sep 04 20:40:22 2009 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Fri Sep 04 20:40:22 2009 +0100"
      },
      "message": "dm table: fix queue_limit checking device iterator\n\nThe logic to check for valid device areas is inverted relative to proper\nuse with iterate_devices.\n\nThe iterate_devices method calls its callback for every underlying\ndevice in the target.  If any callback returns non-zero, iterate_devices\nexits immediately.  But the callback device_area_is_valid() returns 0 on\nerror and 1 on success.  The overall effect without is that an error is\nissued only if every device is invalid.\n\nThis patch renames device_area_is_valid to device_area_is_invalid and\ninverts the logic so that one invalid device is sufficient to raise\nan error.\n\nSigned-off-by: Mikulas Patocka \u003cmpatocka@redhat.com\u003e\nSigned-off-by: Mike Snitzer \u003csnitzer@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "8811f46c1f9386fc7017150de9d52359e5b1826e",
      "tree": "d7ff12ec29d2911801e81b50440f160d58b0f9a8",
      "parents": [
        "a77e28c7e1dc1a6a035c7627d4a88ecf3ea09aea"
      ],
      "author": {
        "name": "Mike Snitzer",
        "email": "snitzer@redhat.com",
        "time": "Fri Sep 04 20:40:19 2009 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Fri Sep 04 20:40:19 2009 +0100"
      },
      "message": "dm snapshot: implement iterate devices\n\nImplement the .iterate_devices for the origin and snapshot targets.\ndm-snapshot\u0027s lack of .iterate_devices resulted in the inability to\nproperly establish queue_limits for both targets.\n\nWith 4K sector drives: an unfortunate side-effect of not establishing\nproper limits in either targets\u0027 DM device was that IO to the devices\nwould fail even though both had been created without error.\n\nCommit af4874e03ed82f050d5872d8c39ce64bf16b5c38 (\"dm target:s introduce\niterate devices fn\") in 2.6.31-rc1 should have implemented .iterate_devices\nfor dm-snap.c\u0027s origin and snapshot targets.\n\nSigned-off-by: Mike Snitzer \u003csnitzer@redhat.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "a77e28c7e1dc1a6a035c7627d4a88ecf3ea09aea",
      "tree": "0d481ef49120eda629409cbac9dbe63ba472f873",
      "parents": [
        "37d0892c5a94e208cf863e3b7bac014edee4346d"
      ],
      "author": {
        "name": "Kiyoshi Ueda",
        "email": "k-ueda@ct.jp.nec.com",
        "time": "Fri Sep 04 20:40:16 2009 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Fri Sep 04 20:40:16 2009 +0100"
      },
      "message": "dm multipath: fix oops when request based io fails when no paths\n\nThe patch posted at http://marc.info/?l\u003ddm-devel\u0026m\u003d124539787228784\u0026w\u003d2\nwhich was merged into cec47e3d4a861e1d942b3a580d0bbef2700d2bb2 (\"dm:\nprepare for request based option\") introduced a regression in\nrequest-based dm.\n\nIf map_request() calls dm_kill_unmapped_request() to complete a cloned\nbio without dispatching it, clone-\u003ebio is still set when\ndm_end_request() is called and the BUG_ON(clone-\u003ebio) is incorrect.\n\nThe patch fixes this bug by freeing bio in dm_end_request() if the clone\nhas bio.  I\u0027ve redone my tests to cover all I/O paths and confirmed\nthere\u0027s no other regression.\n\nHere is the oops I hit in request-based dm when I do I/O to a multipath\ndevice which doesn\u0027t have any active path nor queue_if_no_path setting:\n\n------------[ cut here ]------------\nkernel BUG at /root/2.6.31-rc4.rqdm/drivers/md/dm.c:828!\ninvalid opcode: 0000 [#1] SMP\nlast sysfs file: /sys/devices/system/cpu/cpu3/cache/index2/shared_cpu_map\nCPU 1\nModules linked in: autofs4 sunrpc cpufreq_ondemand acpi_cpufreq dm_mirror dm_region_hash dm_log dm_service_time dm_multipath scsi_dh dm_mod video output sbs sbshc battery ac sg sr_mod e1000e button cdrom serio_raw rtc_cmos rtc_core rtc_lib piix lpfc scsi_transport_fc ata_piix libata megaraid_sas sd_mod scsi_mod crc_t10dif ext3 jbd uhci_hcd ohci_hcd ehci_hcd [last unloaded: microcode]\nPid: 7, comm: ksoftirqd/1 Not tainted 2.6.31-rc4.rqdm #1 Express5800/120Lj [N8100-1417]\nRIP: 0010:[\u003cffffffffa023629d\u003e]  [\u003cffffffffa023629d\u003e] dm_softirq_done+0xbd/0x100 [dm_mod]\nRSP: 0018:ffff8800280a1f08  EFLAGS: 00010282\nRAX: ffffffffa02544e0 RBX: ffff8802aa1111d0 RCX: ffff8802aa1111e0\nRDX: ffff8802ab913e70 RSI: 0000000000000000 RDI: ffff8802ab913e70\nRBP: ffff8800280a1f28 R08: ffffc90005457040 R09: 0000000000000000\nR10: 0000000000000001 R11: 0000000000000000 R12: 00000000fffffffb\nR13: ffff8802ab913e88 R14: ffff8802ab9c1438 R15: 0000000000000100\nFS:  0000000000000000(0000) GS:ffff88002809e000(0000) knlGS:0000000000000000\nCS:  0010 DS: 0018 ES: 0018 CR0: 000000008005003b\nCR2: 0000003d54a98640 CR3: 000000029f0a1000 CR4: 00000000000006e0\nDR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000\nDR3: 0000000000000000 DR6: 00000000ffff0ff0 DR7: 0000000000000400\nProcess ksoftirqd/1 (pid: 7, threadinfo ffff8802ae50e000, task ffff8802ae4f8040)\nStack:\n ffff8800280a1f38 0000000000000020 ffffffff814f30a0 0000000000000004\n\u003c0\u003e ffff8800280a1f58 ffffffff8116b245 ffff8800280a1f38 ffff8800280a1f38\n\u003c0\u003e ffff8800280a1f58 0000000000000001 ffff8800280a1fa8 ffffffff810477bc\nCall Trace:\n \u003cIRQ\u003e\n [\u003cffffffff8116b245\u003e] blk_done_softirq+0x75/0x90\n [\u003cffffffff810477bc\u003e] __do_softirq+0xcc/0x210\n [\u003cffffffff81047170\u003e] ? ksoftirqd+0x0/0x110\n [\u003cffffffff8100ce7c\u003e] call_softirq+0x1c/0x50\n \u003cEOI\u003e\n [\u003cffffffff8100e785\u003e] do_softirq+0x65/0xa0\n [\u003cffffffff81047170\u003e] ? ksoftirqd+0x0/0x110\n [\u003cffffffff810471e0\u003e] ksoftirqd+0x70/0x110\n [\u003cffffffff81059559\u003e] kthread+0x99/0xb0\n [\u003cffffffff8100cd7a\u003e] child_rip+0xa/0x20\n [\u003cffffffff8100c73c\u003e] ? restore_args+0x0/0x30\n [\u003cffffffff810594c0\u003e] ? kthread+0x0/0xb0\n [\u003cffffffff8100cd70\u003e] ? child_rip+0x0/0x20\nCode: 44 89 e6 48 89 df e8 23 fb f2 e0 be 01 00 00 00 4c 89 f7 e8 f6 fd ff ff 5b 41 5c 41 5d 41 5e c9 c3 4c 89 ef e8 85 fe ff ff eb ed \u003c0f\u003e 0b eb fe 41 8b 85 dc 00 00 00 48 83 bb 10 01 00 00 00 89 83\nRIP  [\u003cffffffffa023629d\u003e] dm_softirq_done+0xbd/0x100 [dm_mod]\n RSP \u003cffff8800280a1f08\u003e\n---[ end trace 16af0a1d8542da55 ]---\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": "07a3b417dc3d00802bd7b4874c3e811f0b015a7d",
      "tree": "b3b484067f700a70f3e7d575bad6e7e4ae2742cc",
      "parents": [
        "b774ef491b4edf6876077014ecbb87f10c69c10f"
      ],
      "author": {
        "name": "Dan Williams",
        "email": "dan.j.williams@intel.com",
        "time": "Sat Aug 29 19:13:13 2009 -0700"
      },
      "committer": {
        "name": "Dan Williams",
        "email": "dan.j.williams@intel.com",
        "time": "Sat Aug 29 19:13:13 2009 -0700"
      },
      "message": "md/raid456: distribute raid processing over multiple cores\n\nNow that the resources to handle stripe_head operations are allocated\npercpu it is possible for raid5d to distribute stripe handling over\nmultiple cores.  This conversion also adds a call to cond_resched() in\nthe non-multicore case to prevent one core from getting monopolized for\nraid operations.\n\nCc: Arjan van de Ven \u003carjan@linux.intel.com\u003e\nSigned-off-by: Dan Williams \u003cdan.j.williams@intel.com\u003e\n"
    },
    {
      "commit": "b774ef491b4edf6876077014ecbb87f10c69c10f",
      "tree": "a4132f50e29b43c0b23e478001220b3e90ea4731",
      "parents": [
        "6c0069c0ae9659e3a91b68eaed06a5c6c37f45c8"
      ],
      "author": {
        "name": "Yuri Tikhonov",
        "email": "yur@emcraft.com",
        "time": "Sat Aug 29 19:13:13 2009 -0700"
      },
      "committer": {
        "name": "Dan Williams",
        "email": "dan.j.williams@intel.com",
        "time": "Sat Aug 29 19:13:13 2009 -0700"
      },
      "message": "md/raid6: remove synchronous infrastructure\n\nThese routines have been replaced by there asynchronous counterparts.\n\nSigned-off-by: Yuri Tikhonov \u003cyur@emcraft.com\u003e\nSigned-off-by: Ilya Yanok \u003cyanok@emcraft.com\u003e\nSigned-off-by: Dan Williams \u003cdan.j.williams@intel.com\u003e\n\n"
    },
    {
      "commit": "6c0069c0ae9659e3a91b68eaed06a5c6c37f45c8",
      "tree": "97b01fc8602e7b6d4c495d0f0562ae901d78f58b",
      "parents": [
        "d82dfee0ad8f240fef1b28e2258891c07da57367"
      ],
      "author": {
        "name": "Yuri Tikhonov",
        "email": "yur@emcraft.com",
        "time": "Sat Aug 29 19:13:13 2009 -0700"
      },
      "committer": {
        "name": "Dan Williams",
        "email": "dan.j.williams@intel.com",
        "time": "Sat Aug 29 19:13:13 2009 -0700"
      },
      "message": "md/raid6: asynchronous handle_stripe6\n\n1/ Use STRIPE_OP_BIOFILL to offload completion of read requests to\n   raid_run_ops\n2/ Implement a handler for sh-\u003ereconstruct_state similar to the raid5 case\n   (adds handling of Q parity)\n3/ Prevent handle_parity_checks6 from running concurrently with \u0027compute\u0027\n   operations\n4/ Hook up raid_run_ops\n\nSigned-off-by: Yuri Tikhonov \u003cyur@emcraft.com\u003e\nSigned-off-by: Ilya Yanok \u003cyanok@emcraft.com\u003e\nSigned-off-by: Dan Williams \u003cdan.j.williams@intel.com\u003e\n\n\n"
    },
    {
      "commit": "d82dfee0ad8f240fef1b28e2258891c07da57367",
      "tree": "44431399bef701c52f413c364f80751c18ff1179",
      "parents": [
        "a9b39a741a7e3b262b9f51fefb68e17b32756999"
      ],
      "author": {
        "name": "Dan Williams",
        "email": "dan.j.williams@intel.com",
        "time": "Tue Jul 14 13:40:57 2009 -0700"
      },
      "committer": {
        "name": "Dan Williams",
        "email": "dan.j.williams@intel.com",
        "time": "Sat Aug 29 19:13:13 2009 -0700"
      },
      "message": "md/raid6: asynchronous handle_parity_check6\n\n[ Based on an original patch by Yuri Tikhonov ]\n\nImplement the state machine for handling the RAID-6 parities check and\nrepair functionality.  Note that the raid6 case does not need to check\nfor new failures, like raid5, as it will always writeback the correct\ndisks.  The raid5 case can be updated to check zero_sum_result to avoid\ngetting confused by new failures rather than retrying the entire check\noperation.\n\nSigned-off-by: Yuri Tikhonov \u003cyur@emcraft.com\u003e\nSigned-off-by: Ilya Yanok \u003cyanok@emcraft.com\u003e\nSigned-off-by: Dan Williams \u003cdan.j.williams@intel.com\u003e\n\n\n\n"
    },
    {
      "commit": "a9b39a741a7e3b262b9f51fefb68e17b32756999",
      "tree": "659f32a0377ff241627eedb60816bda283e2233f",
      "parents": [
        "5599becca4bee7badf605e41fd5bcde76d51f2a4"
      ],
      "author": {
        "name": "Yuri Tikhonov",
        "email": "yur@emcraft.com",
        "time": "Sat Aug 29 19:13:12 2009 -0700"
      },
      "committer": {
        "name": "Dan Williams",
        "email": "dan.j.williams@intel.com",
        "time": "Sat Aug 29 19:13:12 2009 -0700"
      },
      "message": "md/raid6: asynchronous handle_stripe_dirtying6\n\nIn the synchronous implementation of stripe dirtying we processed a\ndegraded stripe with one call to handle_stripe_dirtying6().  I.e.\ncompute the missing blocks from the other drives, then copy in the new\ndata and reconstruct the parities.\n\nIn the asynchronous case we do not perform stripe operations directly.\nInstead, operations are scheduled with flags to be later serviced by\nraid_run_ops.  So, for the degraded case the final reconstruction step\ncan only be carried out after all blocks have been brought up to date by\nbeing read, or computed.  Like the raid5 case schedule_reconstruction()\nsets STRIPE_OP_RECONSTRUCT to request a parity generation pass and\nthrough operation chaining can handle compute and reconstruct in a\nsingle raid_run_ops pass.\n\n[dan.j.williams@intel.com: fixup handle_stripe_dirtying6 gating]\nSigned-off-by: Yuri Tikhonov \u003cyur@emcraft.com\u003e\nSigned-off-by: Ilya Yanok \u003cyanok@emcraft.com\u003e\nSigned-off-by: Dan Williams \u003cdan.j.williams@intel.com\u003e\n\n"
    },
    {
      "commit": "5599becca4bee7badf605e41fd5bcde76d51f2a4",
      "tree": "c2d231dfb073dc19bd9ac7cdbac20e07280b9fb0",
      "parents": [
        "c0f7bddbe60f43578dccf4ffb8d4bff88f625ea7"
      ],
      "author": {
        "name": "Yuri Tikhonov",
        "email": "yur@emcraft.com",
        "time": "Sat Aug 29 19:13:12 2009 -0700"
      },
      "committer": {
        "name": "Dan Williams",
        "email": "dan.j.williams@intel.com",
        "time": "Sat Aug 29 19:13:12 2009 -0700"
      },
      "message": "md/raid6: asynchronous handle_stripe_fill6\n\nModify handle_stripe_fill6 to work asynchronously by introducing\nfetch_block6 as the raid6 analog of fetch_block5 (schedule compute\noperations for missing/out-of-sync disks).\n\n[dan.j.williams@intel.com: compute D+Q in one pass]\nSigned-off-by: Yuri Tikhonov \u003cyur@emcraft.com\u003e\nSigned-off-by: Ilya Yanok \u003cyanok@emcraft.com\u003e\nSigned-off-by: Dan Williams \u003cdan.j.williams@intel.com\u003e\n\n"
    },
    {
      "commit": "c0f7bddbe60f43578dccf4ffb8d4bff88f625ea7",
      "tree": "4100908f0a90821b6b1e42b725f25d279525799f",
      "parents": [
        "ac6b53b6e6acab27e4f3e2383f9ac1f0d7c6200b"
      ],
      "author": {
        "name": "Yuri Tikhonov",
        "email": "yur@emcraft.com",
        "time": "Sat Aug 29 19:13:12 2009 -0700"
      },
      "committer": {
        "name": "Dan Williams",
        "email": "dan.j.williams@intel.com",
        "time": "Sat Aug 29 19:13:12 2009 -0700"
      },
      "message": "md/raid5,6: common schedule_reconstruction for raid5/6\n\nExtend schedule_reconstruction5 for reuse by the raid6 path.  Add\nsupport for generating Q and BUG() if a request is made to perform\n\u0027prexor\u0027.\n\nSigned-off-by: Yuri Tikhonov \u003cyur@emcraft.com\u003e\nSigned-off-by: Ilya Yanok \u003cyanok@emcraft.com\u003e\nSigned-off-by: Dan Williams \u003cdan.j.williams@intel.com\u003e\n\n"
    },
    {
      "commit": "ac6b53b6e6acab27e4f3e2383f9ac1f0d7c6200b",
      "tree": "e9c67502fd32a9eea4902ea382e51eecb09f2a54",
      "parents": [
        "4e7d2c0aefb77f7b24942e5af042a083be4d60bb"
      ],
      "author": {
        "name": "Dan Williams",
        "email": "dan.j.williams@intel.com",
        "time": "Tue Jul 14 13:40:19 2009 -0700"
      },
      "committer": {
        "name": "Dan Williams",
        "email": "dan.j.williams@intel.com",
        "time": "Sat Aug 29 19:13:12 2009 -0700"
      },
      "message": "md/raid6: asynchronous raid6 operations\n\n[ Based on an original patch by Yuri Tikhonov ]\n\nThe raid_run_ops routine uses the asynchronous offload api and\nthe stripe_operations member of a stripe_head to carry out xor+pq+copy\noperations asynchronously, outside the lock.\n\nThe operations performed by RAID-6 are the same as in the RAID-5 case\nexcept for no support of STRIPE_OP_PREXOR operations. All the others\nare supported:\nSTRIPE_OP_BIOFILL\n - copy data into request buffers to satisfy a read request\nSTRIPE_OP_COMPUTE_BLK\n - generate missing blocks (1 or 2) in the cache from the other blocks\nSTRIPE_OP_BIODRAIN\n - copy data out of request buffers to satisfy a write request\nSTRIPE_OP_RECONSTRUCT\n - recalculate parity for new data that has entered the cache\nSTRIPE_OP_CHECK\n - verify that the parity is correct\n\nThe flow is the same as in the RAID-5 case, and reuses some routines, namely:\n1/ ops_complete_postxor (renamed to ops_complete_reconstruct)\n2/ ops_complete_compute (updated to set up to 2 targets uptodate)\n3/ ops_run_check (renamed to ops_run_check_p for xor parity checks)\n\n[neilb@suse.de: fixes to get it to pass mdadm regression suite]\nReviewed-by: Andre Noll \u003cmaan@systemlinux.org\u003e\nSigned-off-by: Yuri Tikhonov \u003cyur@emcraft.com\u003e\nSigned-off-by: Ilya Yanok \u003cyanok@emcraft.com\u003e\nSigned-off-by: Dan Williams \u003cdan.j.williams@intel.com\u003e\n\n\n\n\n"
    },
    {
      "commit": "4e7d2c0aefb77f7b24942e5af042a083be4d60bb",
      "tree": "59d127eac9d9c0ff5feea9d741739ccc6fae65c3",
      "parents": [
        "cb3c82992f62f838e6476a0bff12909158007fc6"
      ],
      "author": {
        "name": "Dan Williams",
        "email": "dan.j.williams@intel.com",
        "time": "Sat Aug 29 19:13:11 2009 -0700"
      },
      "committer": {
        "name": "Dan Williams",
        "email": "dan.j.williams@intel.com",
        "time": "Sat Aug 29 19:13:11 2009 -0700"
      },
      "message": "md/raid5: factor out mark_uptodate from ops_complete_compute5\n\nops_complete_compute5 can be reused in the raid6 path if it is updated to\ngenerically handle a second target.\n\nSigned-off-by: Dan Williams \u003cdan.j.williams@intel.com\u003e\n\n"
    },
    {
      "commit": "cb3c82992f62f838e6476a0bff12909158007fc6",
      "tree": "d6ced15a81340b9b8343c369fea22940f31f06eb",
      "parents": [
        "58691d64c44ae41ddf098ecb31e9a994026e3cff"
      ],
      "author": {
        "name": "Dan Williams",
        "email": "dan.j.williams@intel.com",
        "time": "Tue Jul 14 12:20:37 2009 -0700"
      },
      "committer": {
        "name": "Dan Williams",
        "email": "dan.j.williams@intel.com",
        "time": "Sat Aug 29 19:09:28 2009 -0700"
      },
      "message": "async_tx: raid6 recovery self test\n\nPort drivers/md/raid6test/test.c to use the async raid6 recovery\nroutines.  This is meant as a unit test for raid6 acceleration drivers.  In\naddition to the 16-drive test case this implements tests for the 4-disk and\n5-disk special cases (dma devices can not generically handle less than 2\nsources), and adds a test for the D+Q case.\n\nReviewed-by: Andre Noll \u003cmaan@systemlinux.org\u003e\nAcked-by: Maciej Sosnowski \u003cmaciej.sosnowski@intel.com\u003e\nSigned-off-by: Dan Williams \u003cdan.j.williams@intel.com\u003e\n\n\n"
    },
    {
      "commit": "ad283ea4a3ce82cda2efe33163748a397b31b1eb",
      "tree": "11cd739195f336895abe9e4a62d824e49a41c24f",
      "parents": [
        "d6f38f31f3ad4b0dd33fe970988f14e7c65ef702"
      ],
      "author": {
        "name": "Dan Williams",
        "email": "dan.j.williams@intel.com",
        "time": "Sat Aug 29 19:09:26 2009 -0700"
      },
      "committer": {
        "name": "Dan Williams",
        "email": "dan.j.williams@intel.com",
        "time": "Sat Aug 29 19:09:26 2009 -0700"
      },
      "message": "async_tx: add sum check flags\n\nReplace the flat zero_sum_result with a collection of flags to contain\nthe P (xor) zero-sum result, and the soon to be utilized Q (raid6 reed\nsolomon syndrome) zero-sum result.  Use the SUM_CHECK_ namespace instead\nof DMA_ since these flags will be used on non-dma-zero-sum enabled\nplatforms.\n\nReviewed-by: Andre Noll \u003cmaan@systemlinux.org\u003e\nAcked-by: Maciej Sosnowski \u003cmaciej.sosnowski@intel.com\u003e\nSigned-off-by: Dan Williams \u003cdan.j.williams@intel.com\u003e\n\n"
    },
    {
      "commit": "d6f38f31f3ad4b0dd33fe970988f14e7c65ef702",
      "tree": "0b881c68e676376f2f0eccb2eb377dc3561d395f",
      "parents": [
        "36d1c6476be51101778882897b315bd928c8c7b5"
      ],
      "author": {
        "name": "Dan Williams",
        "email": "dan.j.williams@intel.com",
        "time": "Tue Jul 14 11:50:52 2009 -0700"
      },
      "committer": {
        "name": "Dan Williams",
        "email": "dan.j.williams@intel.com",
        "time": "Sat Aug 29 19:09:26 2009 -0700"
      },
      "message": "md/raid5,6: add percpu scribble region for buffer lists\n\nUse percpu memory rather than stack for storing the buffer lists used in\nparity calculations.  Include space for dma address conversions and pass\nthat to async_tx via the async_submit_ctl.scribble pointer.\n\n[ Impact: move memory pressure from stack to heap ]\n\nSigned-off-by: Dan Williams \u003cdan.j.williams@intel.com\u003e\n\n\n\n"
    },
    {
      "commit": "36d1c6476be51101778882897b315bd928c8c7b5",
      "tree": "55b4ecd93ce9c22722c9c9da0dd28a2d2f7c082d",
      "parents": [
        "a11034b4282515fd7d9f6fdc0a1380781da461c3"
      ],
      "author": {
        "name": "Dan Williams",
        "email": "dan.j.williams@intel.com",
        "time": "Tue Jul 14 11:48:22 2009 -0700"
      },
      "committer": {
        "name": "Dan Williams",
        "email": "dan.j.williams@intel.com",
        "time": "Sat Aug 29 19:09:26 2009 -0700"
      },
      "message": "md/raid6: move the spare page to a percpu allocation\n\nIn preparation for asynchronous handling of raid6 operations move the\nspare page to a percpu allocation to allow multiple simultaneous\nsynchronous raid6 recovery operations.\n\nMake this allocation cpu hotplug aware to maximize allocation\nefficiency.\n\nSigned-off-by: Dan Williams \u003cdan.j.williams@intel.com\u003e\n\n\n\n"
    },
    {
      "commit": "2bfd2e1337f0d8bb6ff45ce12934c45b83d70ee0",
      "tree": "2d5c570e8068e2bd8ec0491d37c812a0846e10c4",
      "parents": [
        "14d9cb5f760c86b3a8f686909465982231c06627"
      ],
      "author": {
        "name": "Chandra Seetharaman",
        "email": "sekharan@us.ibm.com",
        "time": "Mon Aug 03 12:42:45 2009 -0700"
      },
      "committer": {
        "name": "James Bottomley",
        "email": "James.Bottomley@suse.de",
        "time": "Sat Aug 22 17:52:15 2009 -0500"
      },
      "message": "[SCSI] scsi_dh: Use scsi_dh_set_params() in multipath.\n\nUse scsi_dh_set_params() set parameters provided. Save the parameters in\nparse_hw_handler() and use it in parse_path().\n\nReported-by: Eddie Williams \u003cEddie.Williams@steeleye.com\u003e\nSigned-off-by: Chandra Seetharaman \u003csekharan@us.ibm.com\u003e\nTested-by: Eddie Williams \u003cEddie.Williams@steeleye.com\u003e\nCc: Alasdair G Kergon \u003cagk@redhat.com\u003e\nSigned-off-by: James Bottomley \u003cJames.Bottomley@HansenPartnership.com\u003e\nSigned-off-by: James Bottomley \u003cJames.Bottomley@suse.de\u003e\n"
    },
    {
      "commit": "435a71d9ef68b03343949c814986e01dae849763",
      "tree": "04fb8dee9d5bd751da1cc8cbeb0e5a5f91c72ffc",
      "parents": [
        "df4ecf1524c7793de3121b2d4e5fc6bcc0da3bfb",
        "80ffb3cceaefa405f2ecd46d66500ed8d53efe74"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Aug 18 13:54:08 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Aug 18 13:54:08 2009 -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  Fix new incorrect error return from do_md_stop.\n"
    },
    {
      "commit": "80ffb3cceaefa405f2ecd46d66500ed8d53efe74",
      "tree": "867d6ec951663255076ea42fab29a31eac4e51c0",
      "parents": [
        "4d484a4a7a5126410eed5f8dd329a33f6eeed068"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Aug 18 10:35:26 2009 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Aug 18 10:35:26 2009 +1000"
      },
      "message": "Fix new incorrect error return from do_md_stop.\n\nRecent commit c8c00a6915a2e3d10416e8bdd3138429beb96210\nchanged the exit paths in do_md_stop and was not quite\ncareful enough.  There is one path were \u0027err\u0027 now needs\nto be cleared but it isn\u0027t.\nSo setting an array to readonly (with mdadm --readonly) will\nwork, but will incorrectly report and error: ENXIO.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "894ef820b10d77e2d6d717342fc408bdd9825139",
      "tree": "4d79204fdee6bc23a555503fc224f7e13a10e304",
      "parents": [
        "b2add73dbf93fd50f00564d7abc3e2b9aa9dd20c"
      ],
      "author": {
        "name": "Randy Dunlap",
        "email": "randy.dunlap@oracle.com",
        "time": "Sun Aug 16 07:33:30 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Aug 16 08:35:58 2009 -0700"
      },
      "message": "dm-log-userspace: fix printk format warning\n\ndrivers/md/dm-log-userspace-transfer.c:110: warning: format \u0027%lu\u0027 expects type \u0027long unsigned int\u0027, but argument 4 has type \u0027size_t\u0027\n\nPreviously posted and acked, but apparently lost.\nhttp://lkml.indiana.edu/hypermail/linux/kernel/0906.2/02074.html\n\nSigned-off-by: Randy Dunlap \u003crandy.dunlap@oracle.com\u003e\nCc: dm-devel@redhat.com\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "4d484a4a7a5126410eed5f8dd329a33f6eeed068",
      "tree": "9fe49a23117adc2d475711f39a16c1718bab4b7f",
      "parents": [
        "1a67dde0abba36421a1257d01ba9de2f6d1c160a"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Aug 13 10:41:50 2009 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Aug 13 10:41:50 2009 +1000"
      },
      "message": "md: allow upper limit for resync/reshape to be set when array is read-only\n\nNormally we only allow the upper limit for a reshape to be decreased\nwhen the array not performing a sync/recovery/reshape, otherwise there\ncould be races.  But if an array is part-way through a reshape when it\nis assembled the reshape is started immediately leaving no window\nto set an upper bound.\n\nIf the array is started read-only, the reshape will be suspended until\nthe array becomes writable, so that provides a window during which it\nis perfectly safe to reduce the upper limit of a reshape.\n\nSo: allow the upper limit (sync_max) to be reduced even if the reshape\nthread is running, as long as the array is still read-only.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "1a67dde0abba36421a1257d01ba9de2f6d1c160a",
      "tree": "c182c31207c46824097be7ce6b8813f05db4eb65",
      "parents": [
        "a639755cf885e437b2fe4168d35157fa90d530ab"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Aug 13 10:41:49 2009 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Aug 13 10:41:49 2009 +1000"
      },
      "message": "md/raid5: Properly remove excess drives after shrinking a raid5/6\n\nWe were removing the drives, from the array, but not\nremoving symlinks from /sys/.... and not marking the device\nas having been removed.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "a639755cf885e437b2fe4168d35157fa90d530ab",
      "tree": "01d9a04a1c1c0b16863a51ec389470e436e9fb13",
      "parents": [
        "67ac6011db5d2b0c853d573ff474b25c85dfb644"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Aug 13 10:13:00 2009 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Aug 13 10:13:00 2009 +1000"
      },
      "message": "md/raid5: make sure a reshape restarts at the correct address.\n\nThis \"if\" don\u0027t allow for the possibility that the number of devices\ndoesn\u0027t change, and so sector_nr isn\u0027t set correctly in that case.\nSo change \u0027\u003e\u0027 to \u0027\u003e\u003d\u0027.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "67ac6011db5d2b0c853d573ff474b25c85dfb644",
      "tree": "29b30e5e4eac0564c34e0b0b3d655383ba9c783f",
      "parents": [
        "51d5668cb2e3fd1827a55184e48606fff054c5be"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Aug 13 10:06:24 2009 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Aug 13 10:06:24 2009 +1000"
      },
      "message": "md/raid5: allow new reshape modes to be restarted in the middle.\n\nmd/raid5 doesn\u0027t allow a reshape to restart if it involves writing\nover the same part of disk that it would be reading from.\nThis happens at the beginning of a reshape that increases the number\nof devices, at the end of a reshape that decreases the number of\ndevices, and continuously for a reshape that does not change the\nnumber of devices.\n\nThe current code is correct for the \"increase number of devices\"\ncase as the critical section at the start is handled by userspace\nperforming a backup.\n\nIt does not work for reducing the number of devices, or the\nno-change case.\nFor \u0027reducing\u0027, we need to invert the test.  For no-change we cannot\nreally be sure things will be safe, so simply require the array\nto be read-only, which is how the user-space code which carefully\nstarts such arrays works.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "51d5668cb2e3fd1827a55184e48606fff054c5be",
      "tree": "117824cc3a25c04c939856578105c6c93af6ac8b",
      "parents": [
        "c8c00a6915a2e3d10416e8bdd3138429beb96210"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Aug 13 09:54:02 2009 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Aug 13 09:54:02 2009 +1000"
      },
      "message": "md: never advance \u0027events\u0027 counter by more than 1.\n\nWhen assembling arrays, md allows two devices to have different event\ncounts as long as the difference is only \u00271\u0027.  This is to cope with\na system failure between updating the metadata on two difference\ndevices.\n\nHowever there are currently times when we update the event count by\n2.  This was done to keep the event count even when the array is clean\nand odd when it is dirty, which allows us to avoid writing common\nupdate to spare devices and so allow those spares to go to sleep.\n\nThis is bad for the above reason.  So change it to never increase by\ntwo.  This means that the alignment between \u0027odd/even\u0027 and\n\u0027clean/dirty\u0027 might take a little longer to attain, but that is only a\nsmall cost.  The spares will get a few more updates but that will\nstill be spared (;-) most updates and can still go to sleep.\n\nPrior to this patch there was a small chance that after a crash an\narray would fail to assemble due to the overly large event count\nmismatch.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "c8c00a6915a2e3d10416e8bdd3138429beb96210",
      "tree": "ecf06a9e2b08edefe707da450b52a69f818ec7d6",
      "parents": [
        "7b2aa037e878c939676675969983284a02958ae3"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Aug 10 12:50:52 2009 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Aug 10 12:50:52 2009 +1000"
      },
      "message": "Remove deadlock potential in md_open\n\nA recent commit:\n  commit 449aad3e25358812c43afc60918c5ad3819488e7\n\nintroduced the possibility of an A-B/B-A deadlock between\nbd_mutex and reconfig_mutex.\n\n__blkdev_get holds bd_mutex while calling md_open which takes\n   reconfig_mutex,\ndo_md_run is always called with reconfig_mutex held, and it now\n   takes bd_mutex in the call the revalidate_disk.\n\nThis potential deadlock was not caught by lockdep due to the\nuse of mutex_lock_interruptible_nexted which was introduced\nby\n   commit d63a5a74dee87883fda6b7d170244acaac5b05e8\ndo avoid a warning of an impossible deadlock.\n\nIt is quite possible to split reconfig_mutex in to two locks.\nOne protects the array data structures while it is being\nreconfigured, the other ensures that an array is never even partially\nopen while it is being deactivated.\nIn particular, the second lock prevents an open from completing\nbetween the time when do_md_stop checks if there are any active opens,\nand the time when the array is either set read-only, or when -\u003epers is\nset to NULL.  So we can be certain that no IO is in flight as the\narray is being destroyed.\n\nSo create a new lock, open_mutex, just to ensure exclusion between\n\u0027open\u0027 and \u0027stop\u0027.\n\nThis avoids the deadlock and also avoids the lockdep warning mentioned\nin commit d63a5a74d\n\nReported-by: \"Mike Snitzer\" \u003csnitzer@gmail.com\u003e\nReported-by: \"H. Peter Anvin\" \u003chpa@zytor.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "449aad3e25358812c43afc60918c5ad3819488e7",
      "tree": "45fab3b82fc1ed06959537a0801319045cf4c102",
      "parents": [
        "64bd660b51b2da92e99a5e97349f6558349f11c5"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Aug 03 10:59:58 2009 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Aug 03 10:59:58 2009 +1000"
      },
      "message": "md: Use revalidate_disk to effect changes in size of device.\n\nAs revalidate_disk calls check_disk_size_change, it will cause\nany capacity change of a gendisk to be propagated to the blockdev\ninode.  So use that instead of mucking about with locks and\ni_size_write.\n\nAlso add a call to revalidate_disk in do_md_run and a few other places\nwhere the gendisk capacity is changed.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "64bd660b51b2da92e99a5e97349f6558349f11c5",
      "tree": "d35be79528dc8730b908e9d78357454ff22aee72",
      "parents": [
        "e516402c0d4fc02be4af9fa8c18954d4f9deb44e"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Aug 03 10:59:58 2009 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Aug 03 10:59:58 2009 +1000"
      },
      "message": "md: allow raid5_quiesce to work properly when reshape is happening.\n\nThe -\u003equiesce method is not supposed to stop resync/recovery/reshape,\njust normal IO.\nBut in raid5 we don\u0027t have a way to know which stripes are being\nused for normal IO and which for resync etc, so we need to wait for\nall stripes to be idle to be sure that all writes have completed.\n\nHowever reshape keeps at least some stripe busy for an extended period\nof time, so a call to raid5_quiesce can block for several seconds\nneedlessly.\nSo arrange for reshape etc to pause briefly while raid5_quiesce is\ntrying to quiesce the array so that the active_stripes count can\ndrop to zero.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "e516402c0d4fc02be4af9fa8c18954d4f9deb44e",
      "tree": "8fa40d8f835d643ed903e1a89567a53256acc395",
      "parents": [
        "70471dafe3390243c598a3165dfb86b8b8b3f4fe"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Aug 03 10:59:57 2009 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Aug 03 10:59:57 2009 +1000"
      },
      "message": "md/raid5: set reshape_position correctly when reshape starts.\n\nAs the internal reshape_progress counter is the main driver\nfor reshape, the fact that reshape_position sometimes starts with the\nwrong value has minimal effect.  It is visible in sysfs and that\nis all.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "70471dafe3390243c598a3165dfb86b8b8b3f4fe",
      "tree": "febb8dfdbbb981370e1ea046714628bf6b790e5a",
      "parents": [
        "3673f305faf1bc66ead751344f8262ace851ff44"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Aug 03 10:59:57 2009 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Aug 03 10:59:57 2009 +1000"
      },
      "message": "md: Handle growth of v1.x metadata correctly.\n\nThe v1.x metadata does not have a fixed size and can grow\nwhen devices are added.\nIf it grows enough to require an extra sector of storage,\nwe need to update the \u0027sb_size\u0027 to match.\n\nWithout this, md can write out an incomplete superblock with a\nbad checksum, which will be rejected when trying to re-assemble\nthe array.\n\nCc: stable@kernel.org\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "3673f305faf1bc66ead751344f8262ace851ff44",
      "tree": "4cbdd23d9af20632678e95b3e8f02ede241a3917",
      "parents": [
        "3a981b03f38dc3b8a69b77cbc679e66c1318a44a"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Aug 03 10:59:56 2009 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Aug 03 10:59:56 2009 +1000"
      },
      "message": "md: avoid array overflow with bad v1.x metadata\n\nWe trust the \u0027desc_nr\u0027 field in v1.x metadata enough to use it\nas an index in an array.  This isn\u0027t really safe.\nSo range-check the value first.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    }
  ],
  "next": "3a981b03f38dc3b8a69b77cbc679e66c1318a44a"
}
