)]}'
{
  "log": [
    {
      "commit": "c80ddb526331a72c9e9d1480f85f6fd7c74e3d2d",
      "tree": "0212803a009f171990032abb94fad84156baa153",
      "parents": [
        "2c13bc0f8f0d3e13b42be70bf74fec8e56b58324",
        "1dff2b87a34a1ac1d1898ea109bf97ed396aca53"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed May 23 17:08:40 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed May 23 17:08:40 2012 -0700"
      },
      "message": "Merge tag \u0027md-3.5\u0027 of git://neil.brown.name/md\n\nPull md updates from NeilBrown:\n \"It\u0027s been a busy cycle for md - lots of fun stuff here..  if you like\n  this kind of thing :-)\n\n  Main features:\n   - RAID10 arrays can be reshaped - adding and removing devices and\n     changing chunks (not \u0027far\u0027 array though)\n   - allow RAID5 arrays to be reshaped with a backup file (not tested\n     yet, but the priciple works fine for RAID10).\n   - arrays can be reshaped while a bitmap is present - you no longer\n     need to remove it first\n   - SSSE3 support for RAID6 syndrome calculations\n\n  and of course a number of minor fixes etc.\"\n\n* tag \u0027md-3.5\u0027 of git://neil.brown.name/md: (56 commits)\n  md/bitmap: record the space available for the bitmap in the superblock.\n  md/raid10: Remove extras after reshape to smaller number of devices.\n  md/raid5: improve removal of extra devices after reshape.\n  md: check the return of mddev_find()\n  MD RAID1: Further conditionalize \u0027fullsync\u0027\n  DM RAID: Use md_error() in place of simply setting Faulty bit\n  DM RAID: Record and handle missing devices\n  DM RAID: Set recovery flags on resume\n  md/raid5: Allow reshape while a bitmap is present.\n  md/raid10: resize bitmap when required during reshape.\n  md: allow array to be resized while bitmap is present.\n  md/bitmap: make sure reshape request are reflected in superblock.\n  md/bitmap: add bitmap_resize function to allow bitmap resizing.\n  md/bitmap: use DIV_ROUND_UP instead of open-code\n  md/bitmap: create a \u0027struct bitmap_counts\u0027 substructure of \u0027struct bitmap\u0027\n  md/bitmap: make bitmap bitops atomic.\n  md/bitmap: make _page_attr bitops atomic.\n  md/bitmap: merge bitmap_file_unmap and bitmap_file_put.\n  md/bitmap: remove async freeing of bitmap file.\n  md/bitmap: convert some spin_lock_irqsave to spin_lock_irq\n  ...\n"
    },
    {
      "commit": "1dff2b87a34a1ac1d1898ea109bf97ed396aca53",
      "tree": "041386083d0b7242aa802d6545dd86c51c2a405e",
      "parents": [
        "63aced61023a054825ffd6e33ac1ab99036dadd2"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue May 22 13:55:34 2012 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue May 22 13:55:34 2012 +1000"
      },
      "message": "md/bitmap: record the space available for the bitmap in the superblock.\n\nNow that bitmaps can grow and shrink it is best if we record\nhow much space is available.  This means that when\nwe reduce the size of the bitmap we won\u0027t \"lose\" the space\nfor late when we might want to increase the size of the bitmap\nagain.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "63aced61023a054825ffd6e33ac1ab99036dadd2",
      "tree": "b41a4cde223c78ec787df3b02d839e1242d2a9e5",
      "parents": [
        "da7613b8b042ab1d3ea55459ed97301e4a2097bb"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue May 22 13:55:33 2012 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue May 22 13:55:33 2012 +1000"
      },
      "message": "md/raid10: Remove extras after reshape to smaller number of devices.\n\nWhen a reshape which reduced the number of devices finishes\nwe must remove the extra devices.\n\nSo ensure  that raid10_remove_disk won\u0027t try to keep them, and\nhave raid10_finish_reshape clear the \u0027in_sync\u0027 flag.  Then\nremove_and_add_spares will be able to remove them.\n\nReported-by: Hannes Reinecke \u003chare@suse.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "da7613b8b042ab1d3ea55459ed97301e4a2097bb",
      "tree": "5a6fe23c5fbbb15f3ff459752807a00ddf121c55",
      "parents": [
        "0c098220e2320c1f0c9339d0ff05c5e04672133a"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue May 22 13:55:33 2012 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue May 22 13:55:33 2012 +1000"
      },
      "message": "md/raid5: improve removal of extra devices after reshape.\n\nAfter a reshape which reduced the number of devices we need\nto disconnect the extra devices.\nThe code for this doesn\u0027t currently handle \u0027replacement\u0027 devices.\nIt is very unlikely that such devices will be present, but it is\nsafest to handle them anyway.\n\nSo simplify the handling.  Just clear In_sync and leave it\nto remove_and_add_spaces (which will be called soon) to do\nthe real works.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "0c098220e2320c1f0c9339d0ff05c5e04672133a",
      "tree": "5dfe163da6707f93b5bbc77ccb0ec4ee98227591",
      "parents": [
        "4f0a5e012cf41321d611e7cad63e1017d143d138"
      ],
      "author": {
        "name": "Yuanhan Liu",
        "email": "yuanhan.liu@linux.intel.com",
        "time": "Tue May 22 13:55:32 2012 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue May 22 13:55:32 2012 +1000"
      },
      "message": "md: check the return of mddev_find()\n\nCheck the return of mddev_find(), since it may fail due to out of\nmemeory or out of usable minor number.\n\nThe reason I chose -ENODEV instead of -ENOMEM or something else is\nmd_alloc() function chose that ;)\n\nSigned-off-by: Yuanhan Liu \u003cyuanhan.liu@linux.intel.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "4f0a5e012cf41321d611e7cad63e1017d143d138",
      "tree": "3018a9cb99e99d683174dc6ab2d2223a53b2a124",
      "parents": [
        "c32fb9e7ecee25a5b6a45bf968dfef76f323e185"
      ],
      "author": {
        "name": "Jonathan Brassow",
        "email": "jbrassow@redhat.com",
        "time": "Tue May 22 13:55:31 2012 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue May 22 13:55:31 2012 +1000"
      },
      "message": "MD RAID1: Further conditionalize \u0027fullsync\u0027\n\nA RAID1 device does not necessarily need a fullsync if the bitmap can be used instead.\n\nSimilar to commit d6b212f4b19da5301e6b6eca562e5c7a2a6e8c8d in raid5.c, if a raid1\ndevice can be brought back (i.e. from a transient failure) it shouldn\u0027t need a\ncomplete resync.  Provided the bitmap is not to old, it will have recorded the areas\nof the disk that need recovery.\n\nSigned-off-by: Jonathan Brassow \u003cjbrassow@redhat.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "c32fb9e7ecee25a5b6a45bf968dfef76f323e185",
      "tree": "5de381a4d0c926c480d0e7244975a81450f8ecce",
      "parents": [
        "81f382f9e0b25ef56b1c0283c900b86b91a5e4c7"
      ],
      "author": {
        "name": "Jonathan Brassow",
        "email": "jbrassow@redhat.com",
        "time": "Tue May 22 13:55:31 2012 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue May 22 13:55:31 2012 +1000"
      },
      "message": "DM RAID: Use md_error() in place of simply setting Faulty bit\n\nWhen encountering an error while reading the superblock, call md_error.\n\nWe are currently setting the \u0027Faulty\u0027 bit on one of the array devices when an\nerror is encountered while reading the superblock of a dm-raid array.  We should\nbe calling md_error(), as it handles the error more completely.\n\nSigned-off-by: Jonathan Brassow \u003cjbrassow@redhat.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "81f382f9e0b25ef56b1c0283c900b86b91a5e4c7",
      "tree": "992f754485b3f78503b7e4f68835da4438786c09",
      "parents": [
        "47525e59e40ffb8cbc944c0055e9c4902cd3ee99"
      ],
      "author": {
        "name": "Jonathan Brassow",
        "email": "jbrassow@redhat.com",
        "time": "Tue May 22 13:55:30 2012 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue May 22 13:55:30 2012 +1000"
      },
      "message": "DM RAID: Record and handle missing devices\n\nMissing dm-raid devices should be recorded in the superblock\n\nWhen specifying the devices that compose a DM RAID array, it is possible to denote\nfailed or missing devices with \u0027-\u0027s.  When this occurs, we must record this in the\nsuperblock.  We do this by checking if the array position\u0027s data device is missing\nand then forcing MD to record the superblock by setting \u0027MD_CHANGE_DEVS\u0027 in\n\u0027raid_resume\u0027.  If we do not cause the superblock to be rewritten by the resume\nfunction, it is possible for a stale superblock to be written by an out-going\nin-active table (during \u0027raid_dtr\u0027).\n\nSigned-off-by: Jonathan Brassow \u003cjbrassow@redhat.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "47525e59e40ffb8cbc944c0055e9c4902cd3ee99",
      "tree": "1ca2a32689ee756c4aa542f3b8fe0afee796e2a9",
      "parents": [
        "30b67645faadcdc32072f999796b99bd0a20f2d5"
      ],
      "author": {
        "name": "Jonathan Brassow",
        "email": "jbrassow@redhat.com",
        "time": "Tue May 22 13:55:29 2012 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue May 22 13:55:29 2012 +1000"
      },
      "message": "DM RAID: Set recovery flags on resume\n\nProperly initialize MD recovery flags when resuming device-mapper devices.\n\nWhen a device-mapper device is suspended, all I/O must stop.  This is done by\ncalling \u0027md_stop_writes\u0027 and \u0027mddev_suspend\u0027.  These calls in-turn manipulate\nthe recovery flags - including setting \u0027MD_RECOVERY_FROZEN\u0027.  The DM device\nmay have been suspended while recovery was not yet complete, so the process\nneeds to pick-up where it left off.  Since \u0027mddev_resume\u0027 does not unset\n\u0027MD_RECOVERY_FROZEN\u0027 and set \u0027MD_RECOVERY_NEEDED\u0027, we must do it ourselves.\n\u0027MD_RECOVERY_NEEDED\u0027 can safely be set in \u0027mddev_resume\u0027, but \u0027MD_RECOVERY_FROZEN\u0027\nmust be set outside of \u0027mddev_resume\u0027 due to how MD handles RAID reshaping.\n(e.g.  It is possible for a user to delay reshaping a RAID5-\u003eRAID6 by purposefully\nsetting \u0027MD_RECOVERY_FROZEN\u0027.  Clearing it in \u0027mddev_resume\u0027 would override the\ndesired behavior.)\n\nBecause \u0027mddev_resume\u0027 already unconditionally calls \u0027md_wakeup_thread(mddev-\u003ethread)\u0027\nthere is no need to make this call from \u0027raid_resume\u0027 since it calls \u0027mddev_resume\u0027.\n\nAlso clean up where  level_store calls mddev_resume() - it current\nduplicates some of the funcitons of that call. - NB\n\nSigned-off-by: Jonathan Brassow \u003cjbrassow@redhat.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "30b67645faadcdc32072f999796b99bd0a20f2d5",
      "tree": "b6e1f0d30c584794ecec0455450d36be5fe4b9e0",
      "parents": [
        "bb63a7019df91933de6854a87ddc5488b49edb85"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue May 22 13:55:28 2012 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue May 22 13:55:28 2012 +1000"
      },
      "message": "md/raid5: Allow reshape while a bitmap is present.\n\nWe always should have allowed this.  A raid5 reshape doesn\u0027t change\nthe size of the bitmap, so not need to restrict it.\n\nAlso add a test to make sure we don\u0027t try to start a reshape on a\nfailed array.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "bb63a7019df91933de6854a87ddc5488b49edb85",
      "tree": "d67b5399be52e0cd93a2292f0fd674109d6b6a2f",
      "parents": [
        "a4a6125a074e1b08ee8ae34f700c5bca19eb9d18"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue May 22 13:55:28 2012 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue May 22 13:55:28 2012 +1000"
      },
      "message": "md/raid10: resize bitmap when required during reshape.\n\nIf a reshape changes the size of the array, then we can now\nupdate the bitmap to suit - so do so.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "a4a6125a074e1b08ee8ae34f700c5bca19eb9d18",
      "tree": "761a719a7d4f1a53d44349f7bef095368a9ae75a",
      "parents": [
        "b81a040481233e5171cb3fbc62f44636d5ea18b2"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue May 22 13:55:27 2012 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue May 22 13:55:27 2012 +1000"
      },
      "message": "md: allow array to be resized while bitmap is present.\n\nNow that bitmaps can be resized, we can allow an array to be resized\nwhile the bitmap is present.\n\nThis only covers resizing that involves changing the effective size\nof member devices, not resizing that changes the number of devices.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "b81a040481233e5171cb3fbc62f44636d5ea18b2",
      "tree": "769294e4042e3aa462306d3ad8a030d06ec7d19d",
      "parents": [
        "d60b479d177a5735b6b4db6ee5280ef6653f50e7"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue May 22 13:55:26 2012 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue May 22 13:55:26 2012 +1000"
      },
      "message": "md/bitmap: make sure reshape request are reflected in superblock.\n\nAs a reshape may change the sync_size and/or chunk_size, we need\nto update these whenever we write out the bitmap superblock.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "d60b479d177a5735b6b4db6ee5280ef6653f50e7",
      "tree": "8fc110bc113817f237559da6da68ca2a75e3614c",
      "parents": [
        "15702d7fb6e7a6baf5a04286a227b0ad2fe4a03f"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue May 22 13:55:25 2012 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue May 22 13:55:25 2012 +1000"
      },
      "message": "md/bitmap: add bitmap_resize function to allow bitmap resizing.\n\nThis function will allocate the new data structures and copy\nbits across from old to new, allowing for the possibility that the\nchunksize has changed.\n\nUse the same function for performing the initial allocation\nof the structures.  This improves test coverage.\n\nWhen bitmap_resize is used to resize an existing bitmap, it\nonly copies \u00271\u0027 bits in, not \u00270\u0027 bits.\nSo when allocating the bitmap, ensure everything is initialised\nto ZERO.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "15702d7fb6e7a6baf5a04286a227b0ad2fe4a03f",
      "tree": "e3f99eab7c841bb51ee48a8806e140f751d8e95d",
      "parents": [
        "40cffcc0e8f9f6e295630cb8b8d58a13baa6c7f9"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue May 22 13:55:25 2012 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue May 22 13:55:25 2012 +1000"
      },
      "message": "md/bitmap: use DIV_ROUND_UP instead of open-code\n\nAlso take the opportunity to simplify CHUNK_BLOCK_RATIO.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "40cffcc0e8f9f6e295630cb8b8d58a13baa6c7f9",
      "tree": "eb23aa8ac3866c93708a1aee36fd6ae15a6a863f",
      "parents": [
        "63c68268b2fc63f7f612dfebecb5c9cbbd3ebeaf"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue May 22 13:55:24 2012 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue May 22 13:55:24 2012 +1000"
      },
      "message": "md/bitmap: create a \u0027struct bitmap_counts\u0027 substructure of \u0027struct bitmap\u0027\n\nThe new \"struct bitmap_counts\" contains all the fields that are\nrelated to counting the number of active writes in each bitmap chunk.\n\nHaving this separate will make it easier to change the chunksize\nor overall size of a bitmap atomically.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "63c68268b2fc63f7f612dfebecb5c9cbbd3ebeaf",
      "tree": "731ea4f181b2ffc19905dd4419668334479e6715",
      "parents": [
        "bdfd1140731a67c74fd74814f222c8078171adcd"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue May 22 13:55:23 2012 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue May 22 13:55:23 2012 +1000"
      },
      "message": "md/bitmap: make bitmap bitops atomic.\n\nThis allows us to remove spinlock protection which is\nmore heavy-weight than simple atomics.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "bdfd1140731a67c74fd74814f222c8078171adcd",
      "tree": "e244aa26d983b56c61fb8d53eb9a1a4105476a85",
      "parents": [
        "fae7d326cd0905624c173337fdfcfe9b86b9e6e2"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue May 22 13:55:22 2012 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue May 22 13:55:22 2012 +1000"
      },
      "message": "md/bitmap: make _page_attr bitops atomic.\n\nUsing e.g. set_bit instead of __set_bit and using test_and_clear_bit\nallow us to remove some locking and contract other locked ranges.\n\nIt is rare that we set or clear a lot of these bits, so gain should\noutweigh any cost.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "fae7d326cd0905624c173337fdfcfe9b86b9e6e2",
      "tree": "2f98bd9e055dce2250c0ba813aeaa95873665018",
      "parents": [
        "62f82faaceb483284ea938b3a092b9f0a4d2d029"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue May 22 13:55:21 2012 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue May 22 13:55:21 2012 +1000"
      },
      "message": "md/bitmap: merge bitmap_file_unmap and bitmap_file_put.\n\nThere functions really do one thing together: release the\n\u0027bitmap_storage\u0027.  So make them just one function.\n\nSince we removed the locking (previous patch), we don\u0027t need to zero\nany fields before freeing them, so it all becomes a bit simpler.\n\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "62f82faaceb483284ea938b3a092b9f0a4d2d029",
      "tree": "5b2d6799ca52ceb3a6d4882f6232e010e90bdd22",
      "parents": [
        "7466712347c58c367636cc875801c8703bc729e7"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue May 22 13:55:21 2012 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue May 22 13:55:21 2012 +1000"
      },
      "message": "md/bitmap: remove async freeing of bitmap file.\n\nThere is no real value in freeing things the moment there is an error.\nIt is just as good to free the bitmap file and pages when the bitmap\nis explicitly removed (and replaced?) or at shutdown.\n\nWith this gone, the bitmap will only disappear when the array is\nquiescent, so we can remove some locking.\n\nAs the \u0027filemap\u0027 doesn\u0027t disappear now, include extra checks before\ntrying to write any of it out.\nAlso remove the check for \"has it disappeared\" in\nbitmap_daemon_write().\n\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "7466712347c58c367636cc875801c8703bc729e7",
      "tree": "f9cd8a4acdb5e60cc4088fd9497dd41dfb8998d1",
      "parents": [
        "b405fe91e50c60c80e72d798025aea4917096421"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue May 22 13:55:19 2012 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue May 22 13:55:19 2012 +1000"
      },
      "message": "md/bitmap: convert some spin_lock_irqsave to spin_lock_irq\n\nAll of these sites can only be called from process context with\nirqs enabled, so using irqsave/irqrestore just adds noise.\nRemove it.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "b405fe91e50c60c80e72d798025aea4917096421",
      "tree": "bc0b8dc67e7bc7897c6299d4bc80e42a7842e7fe",
      "parents": [
        "84e923453e19d6427c6aa884d9561f01e1425d09"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue May 22 13:55:15 2012 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue May 22 13:55:15 2012 +1000"
      },
      "message": "md/bitmap: use set_bit, test_bit, etc for operation on bitmap-\u003eflags.\n\nWe currently use \u0027\u0026\u0027 and \u0027|\u0027 which isn\u0027t the norm in the kernel\nand doesn\u0027t allow easy atomicity.\nSo change to bit numbers and {set,clear,test}_bit.\nThis allows us to remove a spinlock/unlock (which was dubious anyway)\nand some other simplifications.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "84e923453e19d6427c6aa884d9561f01e1425d09",
      "tree": "6e7421a9a15419ace1377e4338ee2e9c4ed38f67",
      "parents": [
        "edbb79df6731bb1e99c15f5a519a864d488f4808"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue May 22 13:55:14 2012 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue May 22 13:55:14 2012 +1000"
      },
      "message": "md/bitmap: remove single-bit manipulation on sb-\u003estate\n\nJust do single-bit manipulations on bitmap-\u003eflags and copy whole\nvalue between that and sb-\u003estate.\n\nThis will allow next patch which changes how bit manipulations are\nperformed on bitmap-\u003eflags.\n\nThis does result in BITMAP_STALE not being set in sb by\nbitmap_read_sb, however as the setting is determined by other\ninformation in the \u0027sb\u0027 we do not lose information this way.\nNormally, bitmap_load will be called shortly which will clear\nBITMAP_STALE anyway.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "edbb79df6731bb1e99c15f5a519a864d488f4808",
      "tree": "3f2cff223d63a8ec5be507fb991cea083c2b8c7a",
      "parents": [
        "bc9891a8853842a19c33dda0ba02fbacf7da067f"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue May 22 13:55:13 2012 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue May 22 13:55:13 2012 +1000"
      },
      "message": "md/bitmap: remove bitmap_mask_state\n\nThis function isn\u0027t really needed.  It sets or clears a flag in both\nbitmap-\u003eflags and sb-\u003estate.\nHowever both times it is called, bitmap_update_sb is called soon\nafterwards which copies bitmap-\u003eflags to sb-\u003estate.\nSo just make changes to bitmap-\u003eflags, and open-code those rather than\nhiding in a function.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "bc9891a8853842a19c33dda0ba02fbacf7da067f",
      "tree": "6561027b0a61521b24786266855cba0e4dc730a1",
      "parents": [
        "d1244cb062750bdb2298ca2565239d3d8cbd91a8"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue May 22 13:55:12 2012 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue May 22 13:55:12 2012 +1000"
      },
      "message": "md/bitmap: move storage allocation from bitmap_load to bitmap_create.\n\nWe should allocate memory for the storage-bitmap at create-time, not\nload time.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "d1244cb062750bdb2298ca2565239d3d8cbd91a8",
      "tree": "85d68d961e0f2c03acf0550d66252a9346495cab",
      "parents": [
        "9b1215c102d4b12f6c815d7fdd35d0628db35b28"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue May 22 13:55:12 2012 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue May 22 13:55:12 2012 +1000"
      },
      "message": "md/bitmap: separate bitmap file allocation to its own function.\n\nThis will allow allocation before swapping in a new bitmap.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "9b1215c102d4b12f6c815d7fdd35d0628db35b28",
      "tree": "52f04de53b1b7302535d66820d9f85b0610b0b1f",
      "parents": [
        "1ec885cdd01a9ad867dbb9fd32a1bfcc0875c486"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue May 22 13:55:11 2012 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue May 22 13:55:11 2012 +1000"
      },
      "message": "md/bitmap: store bytes in file rather than just in last page.\n\nThis number is more generally useful, and bytes-in-last-page is\neasily extracted from it.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "1ec885cdd01a9ad867dbb9fd32a1bfcc0875c486",
      "tree": "232eaa1e1b7820ca8e97782666f7742f78bef175",
      "parents": [
        "d189122d4bca2647441fdc170dc6d4cc5c8bb2fa"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue May 22 13:55:10 2012 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue May 22 13:55:10 2012 +1000"
      },
      "message": "md/bitmap: move some fields of \u0027struct bitmap\u0027 into a \u0027storage\u0027 substruct.\n\nThis new \u0027struct bitmap_storage\u0027 reflects the external storage of the\nbitmap.\nHaving this clearly defined will make it easier to change the storage\nused while the array is active.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "d189122d4bca2647441fdc170dc6d4cc5c8bb2fa",
      "tree": "d5907014aaef1be959b93d0fb4a327e11673f855",
      "parents": [
        "27581e5ae01f77b5472dc5c2368b41063fed7f37"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue May 22 13:55:09 2012 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue May 22 13:55:09 2012 +1000"
      },
      "message": "md/bitmap: change *_page_attr() to take a page number, not a page.\n\nMost often we have the page number, not the page.  And that is what\nthe  *_page_attr() functions really want.  So change the arguments to\ntake that number.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "27581e5ae01f77b5472dc5c2368b41063fed7f37",
      "tree": "202d2ee37bcfb82ce09bc72c0d3d81045a941637",
      "parents": [
        "ef99bf480de9bde9d3b2afdf05324670fab4e571"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue May 22 13:55:08 2012 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue May 22 13:55:08 2012 +1000"
      },
      "message": "md/bitmap: centralise allocation of bitmap file pages.\n\nInstead of allocating pages in read_sb_page, read_page and\nbitmap_read_sb, allocate them all in bitmap_init_from disk.\n\nAlso replace the hack of calling \"attach_page_buffers(page, NULL)\" to\nensure that free_buffer() won\u0027t complain, by putting a test for\nPagePrivate in free_buffer().\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "ef99bf480de9bde9d3b2afdf05324670fab4e571",
      "tree": "49afa5fd6e7e8060f3601c04bb25b96e14d14a39",
      "parents": [
        "6409bb05a9831f6af36a20b97cda13059c2ef1b6"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue May 22 13:55:08 2012 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue May 22 13:55:08 2012 +1000"
      },
      "message": "md/bitmap: allow a bitmap with no backing storage.\n\nAn md bitmap comprises two parts\n - internal counting of active writes per \u0027chunk\u0027.\n - external storage of whether there are any active writes on\n   each chunk\n\nThe second requires the first, but the first doesn\u0027t require the\nsecond.\n\nNot having backing storage means that the bitmap cannot expedite\nresync after a crash, but it still allows us to expedite the recovery\nof a recently-removed device.\n\nSo: allow a bitmap to exist even if there is no backing device.\nIn that case we default to 128M chunks.\n\nA particular value of this is that we can remove and re-add a bitmap\n(possibly of a different granularity) on a degraded array, and not\nlose the information needed to fast-recover the missing device.\n\nWe don\u0027t actually activate these bitmaps yet - that will come\nin a later patch.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "6409bb05a9831f6af36a20b97cda13059c2ef1b6",
      "tree": "c997526bd60d3fb5cafea604e5b240c2479e20d9",
      "parents": [
        "bf07bb7d5be813630d3530be274b3324f85e310c"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue May 22 13:55:07 2012 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue May 22 13:55:07 2012 +1000"
      },
      "message": "md/bitmap: add new \u0027space\u0027 attribute for bitmaps.\n\nIf we are to allow bitmaps to be resized when the array is resized,\nwe need to know how much space there is.\n\nSo create an attribute to store this information and set appropriate\ndefaults.\n\nIt can be set more precisely via sysfs, or future metadata extensions\nmay allow it to be recorded.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "bf07bb7d5be813630d3530be274b3324f85e310c",
      "tree": "22fc12593b6d377ceb7b94c42d346f2946319c48",
      "parents": [
        "bc0934f0477d0a2350a478004799d9c064923b7b"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue May 22 13:55:06 2012 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue May 22 13:55:06 2012 +1000"
      },
      "message": "md/bitmap: disentangle two different \u0027pending\u0027 flags.\n\nThere are two different \u0027pending\u0027 concepts in the handling of the\nwrite intent bitmap.\n\nFirstly, a \u0027page\u0027 from the bitmap (which container PAGE_SIZE*8 bits)\nmay have changes (bits cleared) that should be written in due course.\nThere is no hurry for these and the page will transition from\nPENDING to NEEDWRITE and will then be written, though if it ever\nbecomes DIRTY it will be written much sooner and PENDING will be\ncleared.\n\nSecondly, a page of counters - which contains PAGE_SIZE/2 counters, one\nfor each bit, can usefully have a \u0027pending\u0027 flag which indicates if\nany of the counters are low (2 or 1) and ready to be processed by\nbitmap_daemon_work().  If this flag is clear we can skip the whole\npage.\n\nThese two concepts are currently combined in the bitmap-file flag.\nThis causes a tighter connection between the counters and the bitmap\nfile than I would like - as I want to add some flexibility to the\nbitmap file.\n\nSo introduce a new flag with the page-of-counters, and rewrite\nbitmap_daemon_work() so that it handles the two different \u0027pending\u0027\nconcepts separately.\n\nThis also allows us to clear BITMAP_PAGE_PENDING when we write out\na dirty page, which may occasionally reduce the number of times we\nwrite a page.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "bc0934f0477d0a2350a478004799d9c064923b7b",
      "tree": "9ca749760c19637a941e7eed76652e7da298687c",
      "parents": [
        "cceeca43b5ad96766098144a3fd757e03de9f6f8"
      ],
      "author": {
        "name": "Shaohua Li",
        "email": "shli@kernel.org",
        "time": "Tue May 22 13:55:05 2012 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue May 22 13:55:05 2012 +1000"
      },
      "message": "raid5: support sync request\n\nREQ_SYNC is ignored in current raid5 code. Block layer does use it to do\npolicy,\nfor example ioscheduler. This patch adds it.\n\nSigned-off-by: Shaohua Li \u003cshli@fusionio.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "cceeca43b5ad96766098144a3fd757e03de9f6f8",
      "tree": "728714dc95fba7ee9e51d9c8c9dfbc4da9aed1f4",
      "parents": [
        "5fdd2cf8265c6de0f190dea80cc4c50da8f31293"
      ],
      "author": {
        "name": "Shaohua Li",
        "email": "shli@kernel.org",
        "time": "Tue May 22 13:55:04 2012 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue May 22 13:55:04 2012 +1000"
      },
      "message": "raid5: remove unused variables\n\nThe two variables are useless.\n\nSigned-off-by: Shaohua Li \u003cshli@fusionio.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "5fdd2cf8265c6de0f190dea80cc4c50da8f31293",
      "tree": "ddb9bb1da6654d9d9de86c916fceed8280be95fe",
      "parents": [
        "da8840a747c0dbf49506ec906757a6b87b9741e9"
      ],
      "author": {
        "name": "majianpeng",
        "email": "majianpeng@gmail.com",
        "time": "Tue May 22 13:55:03 2012 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue May 22 13:55:03 2012 +1000"
      },
      "message": "md/raid10: Fix memleak in r10buf_pool_alloc\n\nIf the allocation of rep1_bio fails, we currently don\u0027t free the \u0027bio\u0027\nof the same dev.\n\nReported by kmemleak.\n\nSigned-off-by: majianpeng \u003cmajianpeng@gmail.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "da8840a747c0dbf49506ec906757a6b87b9741e9",
      "tree": "127835ac03aaf4f3ecd188c665a9970047174c26",
      "parents": [
        "4fa2f327681808f653711e14203a42cf4644bda0"
      ],
      "author": {
        "name": "majianpeng",
        "email": "majianpeng@gmail.com",
        "time": "Tue May 22 13:55:03 2012 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue May 22 13:55:03 2012 +1000"
      },
      "message": "md/raid1: allow fix_read_error to read from recovering device.\n\nWhen attempting to fix a read error, it is acceptable to read from a\ndevice that is recovering, provided the recovery has got past the\nplace we are reading from.  This makes the test for \"can we read from\nhere\" the same as the test in read_balance.\n\nSigned-off-by: majianpeng \u003cmajianpeng@gmail.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "4fa2f327681808f653711e14203a42cf4644bda0",
      "tree": "0fdbe3ffa37dac453401b2d9afed4929194d6176",
      "parents": [
        "545c87957f4d53867b62921625f36df8c4b1bc08"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue May 22 13:55:01 2012 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue May 22 13:55:01 2012 +1000"
      },
      "message": "md: move freeing of badblocks.page into md_rdev_clear\n\nThis ensures that it is always freed - there were case where\nwe failed to free the page.\n\nReported-by: majianpeng \u003cmajianpeng@gmail.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "545c87957f4d53867b62921625f36df8c4b1bc08",
      "tree": "52dc839ac828f7742efbad83cfbe5f35f11a04d6",
      "parents": [
        "96e67703e71f4b3cc32b747dbb6158ec74d01e19"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue May 22 13:54:30 2012 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue May 22 13:54:30 2012 +1000"
      },
      "message": "md: dm-raid should call helper function to clear rdev.\n\ndm-raid currently open-codes the freeing of some members of\nand rdev.  It is more maintainable to have it call common code\nfrom md.c which does this for all call-sites.\n\nSo remove free_disk_sb to md_rdev_clear, export it, and use it in\ndm-raid.c\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "3ea7daa5d7fde47cd41f4d56c2deb949114da9d6",
      "tree": "8b88c2f7451219cd32f32753100ffc62cbda9c60",
      "parents": [
        "deb200d08590622d987718135a1e6323f83154aa"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue May 22 13:53:47 2012 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue May 22 13:53:47 2012 +1000"
      },
      "message": "md/raid10: add reshape support\n\nA \u0027near\u0027 or \u0027offset\u0027 lay RAID10 array can be reshaped to a different\n\u0027near\u0027 or \u0027offset\u0027 layout, a different chunk size, and a different\nnumber of devices.\nHowever the number of copies cannot change.\n\nUnlike RAID5/6, we do not support having user-space backup data that\nis being relocated during a \u0027critical section\u0027.  Rather, the\ndata_offset of each device must change so that when writing any block\nto a new location, it will not over-write any data that is still\n\u0027live\u0027.\n\nThis means that RAID10 reshape is not supportable on v0.90 metadata.\n\nThe different between the old data_offset and the new_offset must be\nat least the larger of the chunksize multiplied by offset copies of\neach of the old and new layout. (for \u0027near\u0027 mode, offset_copies \u003d\u003d 1).\n\nA larger difference of around 64M seems useful for in-place reshapes\nas more data can be moved between metadata updates.\nVery large differences (e.g. 512M) seem to slow the process down due\nto lots of long seeks (on oldish consumer graded devices at least).\n\nMetadata needs to be updated whenever the place we are about to write\nto is considered - by the current metadata - to still contain data in\nthe old layout.\n\n[unbalanced locking fix from Dan Carpenter \u003cdan.carpenter@oracle.com\u003e]\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "deb200d08590622d987718135a1e6323f83154aa",
      "tree": "7baf2fc97e48d229d7a311f55bf0f96ce6e445ba",
      "parents": [
        "f8c9e74ff0832f2244d7991d2aea13851b20a622"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon May 21 09:28:33 2012 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon May 21 09:28:33 2012 +1000"
      },
      "message": "md/raid10: split out interpretation of layout to separate function.\n\nWe will soon be interpreting the layout (and chunksize etc) from\nmultiple places to support reshape.  So split it out into separate\nfunction.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "f8c9e74ff0832f2244d7991d2aea13851b20a622",
      "tree": "db07ef3ecc00f83d3d9b854929a4cb13def456a7",
      "parents": [
        "c804cdecea418c067ee7359d62139b2b3c8cec39"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon May 21 09:28:33 2012 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon May 21 09:28:33 2012 +1000"
      },
      "message": "md/raid10: Introduce \u0027prev\u0027 geometry to support reshape.\n\nWhen RAID10 supports reshape it will need a \u0027previous\u0027 and a \u0027current\u0027\ngeometry, so introduce that here.\nUse the \u0027prev\u0027 geometry when before the reshape_position, and the\ncurrent \u0027geo\u0027 when beyond it.  At other times, use both as\nappropriate.\n\nFor now, both are identical (And reshape_position is never set).\n\nWhen we use the \u0027prev\u0027 geometry, we must use the old data_offset.\nWhen we use the current (And a reshape is happening) we must use\nthe new_data_offset.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "c804cdecea418c067ee7359d62139b2b3c8cec39",
      "tree": "8542c9757416deee1637528b6616cbcc92cf8cdc",
      "parents": [
        "1fdd6fc92f330b81604c9a4f892f713775a9751a"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon May 21 09:28:33 2012 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon May 21 09:28:33 2012 +1000"
      },
      "message": "md: use resync_max_sectors for reshape as well as resync.\n\nSome resync type operations need to act on the address space of the\ndevice, others on the address space of the array.\n\nThis only affects RAID10, so it sets resync_max_sectors to the array\nsize (it defaults to the device size), and that is currently used for\nresync only.  However reshape of a RAID10 must be done against the\narray size, not device size, so change code to use resync_max_sectors\nfor both the resync and the reshape cases.\nThis does not affect RAID5 or RAID1, just RAID10.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "1fdd6fc92f330b81604c9a4f892f713775a9751a",
      "tree": "fb0249d6891e04cfe7c82e850d86361879fec377",
      "parents": [
        "5cf00fcd3c98d2eafb58ac7a649bbdb9dbc4902b"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon May 21 09:28:32 2012 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon May 21 09:28:32 2012 +1000"
      },
      "message": "md: teach sync_page_io about new_data_offset.\n\nSome code in raid1 and raid10 use sync_page_io to\nread/write pages when responding to read errors.\nAs we will shortly support changing data_offset for\nraid10, this function must understand new_data_offset.\n\nSo add that understanding.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "5cf00fcd3c98d2eafb58ac7a649bbdb9dbc4902b",
      "tree": "0a96aa84d276e5e627603c7ad4740e1d607ebbad",
      "parents": [
        "b5254dd5fdd9abcacadb5101beb35df9ae8cc564"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon May 21 09:28:20 2012 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon May 21 09:28:20 2012 +1000"
      },
      "message": "md/raid10: collect some geometry fields into a dedicated structure.\n\nWe will shortly be adding reshape support for RAID10 which will\nrequire it having 2 concurrent geometries (before and after).\nTo make that easier, collect most geometry fields into \u0027struct geom\u0027\nand access them from there.  Then we will more easily be able to add\na second set of fields.\n\nNote that \u0027copies\u0027 is not in this struct and so cannot be changed.\nThere is little need to change this number and doing so is a lot\nmore difficult as it requires reallocating more things.\nSo leave it out for now.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "b5254dd5fdd9abcacadb5101beb35df9ae8cc564",
      "tree": "73d32b8dd7c0dc9ecfe61468965b06741070dee7",
      "parents": [
        "05616be5e11f66888b66554957dbecdd90658a84"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon May 21 09:27:01 2012 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon May 21 09:27:01 2012 +1000"
      },
      "message": "md/raid5: allow for change in data_offset while managing a reshape.\n\nThe important issue here is incorporating the different in data_offset\ninto calculations concerning when we might need to over-write data\nthat is still thought to be valid.\n\nTo this end we find the minimum offset difference across all devices\nand add that where appropriate.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "05616be5e11f66888b66554957dbecdd90658a84",
      "tree": "e1d5607aa30926f7cd4b82b60c32f277c9aff39e",
      "parents": [
        "c6563a8c38fde3c1c7fc925a10bde3ca20799301"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon May 21 09:27:00 2012 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon May 21 09:27:00 2012 +1000"
      },
      "message": "md/raid5:  Use correct data_offset for all IO.\n\nAs there can now be two different data_offsets - an \u0027old\u0027 and\na \u0027new\u0027 - we need to carefully choose between them.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "c6563a8c38fde3c1c7fc925a10bde3ca20799301",
      "tree": "3916ae8247149a9dcf39ee1ca262f97be39071eb",
      "parents": [
        "2c810cddc44d6f95cef75df3f07fc0850ff92417"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon May 21 09:27:00 2012 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon May 21 09:27:00 2012 +1000"
      },
      "message": "md: add possibility to change data-offset for devices.\n\nWhen reshaping we can avoid costly intermediate backup by\nchanging the \u0027start\u0027 address of the array on the device\n(if there is enough room).\n\nSo as a first step, allow such a change to be requested\nthrough sysfs, and recorded in v1.x metadata.\n\n(As we didn\u0027t previous check that all \u0027pad\u0027 fields were zero,\n we need a new FEATURE flag for this.\n A (belatedly) check that all remaining \u0027pad\u0027 fields are\n zero to avoid a repeat of this)\n\nThe new data offset must be requested separately for each device.\nThis allows each to have a different change in the data offset.\nThis is not likely to be used often but as data_offset can be\nset per-device, new_data_offset should be too.\n\nThis patch also removes the \u0027acknowledged\u0027 arg to rdev_set_badblocks as\nit is never used and never will be.  At the same time we add a new\narg (\u0027in_new\u0027) which is currently always zero but will be used more\nsoon.\n\nWhen a reshape finishes we will need to update the data_offset\nand rdev-\u003esectors.  So provide an exported function to do that.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "2c810cddc44d6f95cef75df3f07fc0850ff92417",
      "tree": "185b35ce06656a53327dd66343f0926aa5a910d7",
      "parents": [
        "b5e1b8cee7ad58a15d2fa79bcd7946acb592602d"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon May 21 09:27:00 2012 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon May 21 09:27:00 2012 +1000"
      },
      "message": "md: allow a reshape operation to be reversed.\n\nCurrently a reshape operation always progresses from the start\nof the array to the end unless the number of devices is being\nreduced, in which case it progressed in the opposite direction.\n\nTo reverse a partial reshape which changes the number of devices\nyou can stop the array and re-assemble with the raid-disks numbers\nreversed and it will undo.\n\nHowever for a reshape that does not change the number of devices\nit is not possible to reverse the reshape in the middle - you have to\nwait until it completes.\n\nSo add a \u0027reshape_direction\u0027 attribute with is either \u0027forwards\u0027 or\n\u0027backwards\u0027 and can be explicitly set when delta_disks is zero.\n\nThis will become more important when we allow the data_offset to\nchange in a reshape.  Then the explicit statement of what direction is\nbeing used will be more useful.\n\nThis can be enabled in raid5 trivially as it already supports\nreverse reshape and just needs to use a different trigger to request it.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "b5e1b8cee7ad58a15d2fa79bcd7946acb592602d",
      "tree": "a9f009012ccdca7c9daefb089e9dbca7224843c7",
      "parents": [
        "b0d634d5683f0b186b242ce6a4f3b041edb8b956"
      ],
      "author": {
        "name": "Shaohua Li",
        "email": "shli@kernel.org",
        "time": "Mon May 21 09:26:59 2012 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon May 21 09:26:59 2012 +1000"
      },
      "message": "md: using GFP_NOIO to allocate bio for flush request\n\nA flush request is usually issued in transaction commit code path, so\nusing GFP_KERNEL to allocate memory for flush request bio falls into\nthe classic deadlock issue.\n\nThis is suitable for any -stable kernel to which it applies as it\navoids a possible deadlock.\n\nCc: stable@vger.kernel.org\nSigned-off-by: Shaohua Li \u003cshli@fusionio.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "b1dab2f0409c478fd2d9e227c2c018524eca9603",
      "tree": "9d2b29b9209c6e0036da295b7704452aa7d35e72",
      "parents": [
        "2f05af8b5943d5702ef555c91da93af99938be44",
        "f402693d06f32e746c6153e459c5fb064fa02741"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri May 18 18:22:45 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri May 18 18:22:45 2012 -0700"
      },
      "message": "Merge tag \u0027dm-3.4-fixes-2\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/agk/linux-dm\n\nPull a dm fix from Alasdair G Kergon:\n \"A fix to the thin provisioning userspace interface.\"\n\n* tag \u0027dm-3.4-fixes-2\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/agk/linux-dm:\n  dm thin: fix table output when pool target disables discard passdown internally\n"
    },
    {
      "commit": "f402693d06f32e746c6153e459c5fb064fa02741",
      "tree": "c4cfcf2702b3e5a1e94e3c3b923b52c413e4325a",
      "parents": [
        "36be50515fe2aef61533b516fa2576a2c7fe7664"
      ],
      "author": {
        "name": "Mike Snitzer",
        "email": "snitzer@redhat.com",
        "time": "Sat May 19 01:01:01 2012 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Sat May 19 01:01:01 2012 +0100"
      },
      "message": "dm thin: fix table output when pool target disables discard passdown internally\n\nWhen the thin pool target clears the discard_passdown parameter\ninternally, it incorrectly changes the table line reported to userspace.\nThis breaks dumb string comparisons on these table lines in generic\nuserspace device-mapper library code and leads to tables being reloaded\nrepeatedly when nothing is actually meant to be changing.\n\nThis patch corrects this by no longer changing the table line when\ndiscard passdown was disabled.\n\nWe can still tell when discard passdown is overridden by looking for the\nmessage \"Discard unsupported by data device (sdX): Disabling discard passdown.\"\n\nThis automatic detection is also moved from the \u0027load\u0027 to the \u0027resume\u0027\nso that it is re-evaluated should the properties of underlying devices\nchange.\n\nSigned-off-by: Mike Snitzer \u003csnitzer@redhat.com\u003e\nAcked-by: Joe Thornber \u003cejt@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "2f05af8b5943d5702ef555c91da93af99938be44",
      "tree": "dd5de3120fcfa21ac25e1ff96871b765d0104ed7",
      "parents": [
        "8394edf3710b124793d46c51942a6392b7b569a0",
        "b0d634d5683f0b186b242ce6a4f3b041edb8b956"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri May 18 16:19:59 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri May 18 16:19:59 2012 -0700"
      },
      "message": "Merge tag \u0027md-3.4-fixes\u0027 of git://neil.brown.name/md\n\nPull one more md bugfix from NeilBrown:\n \"Fix bug in recent fix to RAID10.\n\n  Without this patch, recovery will crash\"\n\n* tag \u0027md-3.4-fixes\u0027 of git://neil.brown.name/md:\n  md/raid10: fix transcription error in calc_sectors conversion.\n"
    },
    {
      "commit": "b0d634d5683f0b186b242ce6a4f3b041edb8b956",
      "tree": "6443dc130dcd45c78ca2878938464c418ea89c41",
      "parents": [
        "0d9f4f135eb6dea06bdcb7065b1e4ff78274a5e9"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Sat May 19 09:01:13 2012 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Sat May 19 09:01:13 2012 +1000"
      },
      "message": "md/raid10: fix transcription error in calc_sectors conversion.\n\nThe old code was\n\t\tsector_div(stride, fc);\nthe new code was\n\t\tsector_dir(size, conf-\u003enear_copies);\n\n\u0027size\u0027 is right (the stride various wasn\u0027t really needed), but\n\u0027fc\u0027 means \u0027far_copies\u0027, and that is an important difference.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e       \n"
    },
    {
      "commit": "36a1987cd891fa82d9981886c3abbbe82c428c0d",
      "tree": "26f2c1ebc2d0485de222f13ebf812456ee8a7cb8",
      "parents": [
        "31ae98359d26ff89b745c4f8094093cbf6ccbdc6",
        "0d9f4f135eb6dea06bdcb7065b1e4ff78274a5e9"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu May 17 09:44:35 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu May 17 09:44:35 2012 -0700"
      },
      "message": "Merge tag \u0027md-3.4-fixes\u0027 of git://neil.brown.name/md\n\nPull two md fixes from NeilBrown:\n \"One fixes a bug in the new raid10 resize code so is relevant to 3.4\n  only.\n\n  The other fixes a bug in the use of md by dm-raid, so is relevant to\n  any kernel with dm-raid support\"\n\n* tag \u0027md-3.4-fixes\u0027 of git://neil.brown.name/md:\n  MD: Add del_timer_sync to mddev_suspend (fix nasty panic)\n  md/raid10: set dev_sectors properly when resizing devices in array.\n"
    },
    {
      "commit": "0d9f4f135eb6dea06bdcb7065b1e4ff78274a5e9",
      "tree": "3d0b8c398c1eda38bac6d3dd6ac1b22b518d26b4",
      "parents": [
        "6508fdbf40a92fd7c19d32780ea33ce8e8362b93"
      ],
      "author": {
        "name": "Jonathan Brassow",
        "email": "jbrassow@redhat.com",
        "time": "Wed May 16 04:06:14 2012 -0500"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu May 17 10:38:24 2012 +1000"
      },
      "message": "MD: Add del_timer_sync to mddev_suspend (fix nasty panic)\n\nUse del_timer_sync to remove timer before mddev_suspend finishes.\n\nWe don\u0027t want a timer going off after an mddev_suspend is called.  This is\nespecially true with device-mapper, since it can call the destructor function\nimmediately following a suspend.  This results in the removal (kfree) of the\nstructures upon which the timer depends - resulting in a very ugly panic.\nTherefore, we add a del_timer_sync to mddev_suspend to prevent this.\n\nCc: stable@vger.kernel.org\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "6508fdbf40a92fd7c19d32780ea33ce8e8362b93",
      "tree": "f51e0e36459eeb2f4e7d94f3ff15ffc5ab12de7c",
      "parents": [
        "b16b1b6cd052acbacc0a15f934bca9b354534d48"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu May 17 10:08:45 2012 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu May 17 10:08:45 2012 +1000"
      },
      "message": "md/raid10: set dev_sectors properly when resizing devices in array.\n\nraid10 stores dev_sectors in \u0027conf\u0027 separately from the one in\n\u0027mddev\u0027 because it can have a very significant effect on block\naddressing and so need to be updated carefully.\n\nHowever raid10_resize isn\u0027t updating it at all!\n\nTo update it correctly, we need to make sure it is a proper\nmultiple of the chunksize taking various details of the layout\nin to account.\nThis calculation is currently done in setup_conf.   So split it\nout from there and call it from raid10_resize as well.\nThen set conf-\u003edev_sectors properly.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "4a873f53995cd551587ee4aad1e6f189a330ff36",
      "tree": "a1caacf532d6a32861399720ae2883396f443954",
      "parents": [
        "2eb429671a4b83ea34a1a722a4656bb14ce7c971",
        "062e55e3960062fc2fb62a7274b4c253003eba73"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat May 12 12:57:01 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat May 12 12:57:01 2012 -0700"
      },
      "message": "Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net\n\nPull networking fixes from David S. Miller:\n\n 1) Since we do RCU lookups on ipv4 FIB entries, we have to test if the\n    entry is dead before returning it to our caller.\n\n 2) openvswitch locking and packet validation fixes from Ansis Atteka,\n    Jesse Gross, and Pravin B Shelar.\n\n 3) Fix PM resume locking in IGB driver, from Benjamin Poirier.\n\n 4) Fix VLAN header handling in vhost-net and macvtap, from Basil Gor.\n\n 5) Revert a bogus network namespace isolation change that was causing\n    regressions on S390 networking devices.\n\n 6) If bonding decides to process and handle a LACPDU frame, we\n    shouldn\u0027t bump the rx_dropped counter.  From Jiri Bohac.\n\n 7) Fix mis-calculation of available TX space in r8169 driver when doing\n    TSO, which can lead to crashes and/or hung device.  From Julien\n    Ducourthial.\n\n 8) SCTP does not validate cached routes properly in all cases, from\n    Nicolas Dichtel.\n\n 9) Link status interrupt needs to be handled in ks8851 driver, from\n    Stephen Boyd.\n\n10) Use capable(), not cap_raised(), in connector/userns netlink code.\n    From Eric W. Biederman via Andrew Morton.\n\n11) Fix pktgen OOPS on module unload, from Eric Dumazet.\n\n12) iwlwifi under-estimates SKB truesizes, also from Eric Dumazet.\n\n13) Cure division by zero in SFC driver, from Ben Hutchings.\n\n* git://git.kernel.org/pub/scm/linux/kernel/git/davem/net: (26 commits)\n  ks8851: Update link status during link change interrupt\n  macvtap: restore vlan header on user read\n  vhost-net: fix handle_rx buffer size\n  bonding: don\u0027t increase rx_dropped after processing LACPDUs\n  connector/userns: replace netlink uses of cap_raised() with capable()\n  sctp: check cached dst before using it\n  pktgen: fix crash at module unload\n  Revert \"net: maintain namespace isolation between vlan and real device\"\n  ehea: fix losing of NEQ events when one event occurred early\n  igb: fix rtnl race in PM resume path\n  ipv4: Do not use dead fib_info entries.\n  r8169: fix unsigned int wraparound with TSO\n  sfc: Fix division by zero when using one RX channel and no SR-IOV\n  openvswitch: Validation of IPv6 set port action uses IPv4 header\n  net: compare_ether_addr[_64bits]() has no ordering\n  cdc_ether: Ignore bogus union descriptor for RNDIS devices\n  bnx2x: bug fix when loading after SAN boot\n  e1000: Silence sparse warnings by correcting type\n  igb, ixgbe: netdev_tx_reset_queue incorrectly called from tx init path\n  openvswitch: Release rtnl_lock if ovs_vport_cmd_build_info() failed.\n  ...\n"
    },
    {
      "commit": "510193a2d3d2e03ae53b95c0ae4f33cdff02cbf8",
      "tree": "7d1a5c7b9c8bb19fef2d28e6ec84c5f0e400be61",
      "parents": [
        "7cab8bf1601d38fd73a0a4ea40cc4892b26907cc"
      ],
      "author": {
        "name": "Mike Snitzer",
        "email": "snitzer@redhat.com",
        "time": "Sat May 12 01:43:21 2012 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Sat May 12 01:43:21 2012 +0100"
      },
      "message": "dm mpath: check if scsi_dh module already loaded before trying to load\n\nIf the requested scsi_dh module is already loaded then skip\nrequest_module().\n\nMultipath table loads can hang in an unnecessary __request_module.\n\nReported-by: Ben Marzinski \u003cbmarzins@redhat.com\u003e\nCc: stable@kernel.org\nSigned-off-by: Mike Snitzer \u003csnitzer@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "7cab8bf1601d38fd73a0a4ea40cc4892b26907cc",
      "tree": "541c6f0757a6a806e49dad866b1bca5cffd55c3e",
      "parents": [
        "c3a0ce2eab76daf9516c817c3f227ea3f4549bd8"
      ],
      "author": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Sat May 12 01:43:19 2012 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Sat May 12 01:43:19 2012 +0100"
      },
      "message": "dm thin: correct module description\n\nRemove duplicate copy of string \"device-mapper\" (DM_NAME) from\nMODULE_DESCRIPTION.\n\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "c3a0ce2eab76daf9516c817c3f227ea3f4549bd8",
      "tree": "c2510a2e8a4a0f2c0eb66f736d1e1b70b53d0e27",
      "parents": [
        "03aaae7cdc71bc306888440b1f569d463e917b6d"
      ],
      "author": {
        "name": "Mike Snitzer",
        "email": "snitzer@redhat.com",
        "time": "Sat May 12 01:43:16 2012 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Sat May 12 01:43:16 2012 +0100"
      },
      "message": "dm thin: fix unprotected use of prepared_discards list\n\nFix two places in commit 104655fd4dce (\"dm thin: support discards\") that\ndidn\u0027t use pool-\u003elock to protect against concurrent changes to the\nprepared_discards list.\n\nWithout this fix, thin_endio() can race with process_discard(), leading\nto concurrent list_add()s that result in the processes locking up with\nan error like the following:\n\nWARNING: at lib/list_debug.c:32 __list_add+0x8f/0xa0()\n...\nlist_add corruption. next-\u003eprev should be prev (ffff880323b96140), but was ffff8801d2c48440. (next\u003dffff8801d2c485c0).\n...\nPid: 17205, comm: kworker/u:1 Tainted: G        W  O 3.4.0-rc3.snitm+ #1\nCall Trace:\n [\u003cffffffff8103ca1f\u003e] warn_slowpath_common+0x7f/0xc0\n [\u003cffffffff8103cb16\u003e] warn_slowpath_fmt+0x46/0x50\n [\u003cffffffffa04f6ce6\u003e] ? bio_detain+0xc6/0x210 [dm_thin_pool]\n [\u003cffffffff8124ff3f\u003e] __list_add+0x8f/0xa0\n [\u003cffffffffa04f70d2\u003e] process_discard+0x2a2/0x2d0 [dm_thin_pool]\n [\u003cffffffffa04f6a78\u003e] ? remap_and_issue+0x38/0x50 [dm_thin_pool]\n [\u003cffffffffa04f7c3b\u003e] process_deferred_bios+0x7b/0x230 [dm_thin_pool]\n [\u003cffffffffa04f7df0\u003e] ? process_deferred_bios+0x230/0x230 [dm_thin_pool]\n [\u003cffffffffa04f7e42\u003e] do_worker+0x52/0x60 [dm_thin_pool]\n [\u003cffffffff81056fa9\u003e] process_one_work+0x129/0x450\n [\u003cffffffff81059b9c\u003e] worker_thread+0x17c/0x3c0\n [\u003cffffffff81059a20\u003e] ? manage_workers+0x120/0x120\n [\u003cffffffff8105eabe\u003e] kthread+0x9e/0xb0\n [\u003cffffffff814ceda4\u003e] kernel_thread_helper+0x4/0x10\n [\u003cffffffff8105ea20\u003e] ? kthread_freezable_should_stop+0x70/0x70\n [\u003cffffffff814ceda0\u003e] ? gs_change+0x13/0x13\n---[ end trace 7e0a523bc5e52692 ]---\n\nSigned-off-by: Mike Snitzer \u003csnitzer@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "03aaae7cdc71bc306888440b1f569d463e917b6d",
      "tree": "0f26df484419ac7cfc73b0d13f94a4cf7b701781",
      "parents": [
        "d48b97b403d23f6df0b990cee652bdf9a52337a3"
      ],
      "author": {
        "name": "Mike Snitzer",
        "email": "snitzer@redhat.com",
        "time": "Sat May 12 01:43:12 2012 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Sat May 12 01:43:12 2012 +0100"
      },
      "message": "dm thin: reinstate missing mempool_free in cell_release_singleton\n\nFix a significant memory leak inadvertently introduced during\nsimplification of cell_release_singleton() in commit\n6f94a4c45a6f744383f9f695dde019998db3df55 (\"dm thin: fix stacked bi_next\nusage\").\n\nA cell\u0027s hlist_del() must be accompanied by a mempool_free().\nUse __cell_release() to do this, like before.\n\nSigned-off-by: Mike Snitzer \u003csnitzer@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "38bf1953987c1735f3c9140fca762949a8cae507",
      "tree": "5596d88145226774633d3a2853b6d7caaeffa4f1",
      "parents": [
        "e0268868ba064980488fc8c194db3d8e9fb2959c"
      ],
      "author": {
        "name": "Eric W. Biederman",
        "email": "ebiederm@xmission.com",
        "time": "Fri May 04 11:34:03 2012 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Thu May 10 23:21:39 2012 -0400"
      },
      "message": "connector/userns: replace netlink uses of cap_raised() with capable()\n\nIn 2009 Philip Reiser notied that a few users of netlink connector\ninterface needed a capability check and added the idiom\ncap_raised(nsp-\u003eeff_cap, CAP_SYS_ADMIN) to a few of them, on the premise\nthat netlink was asynchronous.\n\nIn 2011 Patrick McHardy noticed we were being silly because netlink is\nsynchronous and removed eff_cap from the netlink_skb_params and changed\nthe idiom to cap_raised(current_cap(), CAP_SYS_ADMIN).\n\nLooking at those spots with a fresh eye we should be calling\ncapable(CAP_SYS_ADMIN).  The only reason I can see for not calling capable\nis that it once appeared we were not in the same task as the caller which\nwould have made calling capable() impossible.\n\nIn the initial user_namespace the only difference between between\ncap_raised(current_cap(), CAP_SYS_ADMIN) and capable(CAP_SYS_ADMIN) are a\nfew sanity checks and the fact that capable(CAP_SYS_ADMIN) sets\nPF_SUPERPRIV if we use the capability.\n\nSince we are going to be using root privilege setting PF_SUPERPRIV seems\nthe right thing to do.\n\nThe motivation for this that patch is that in a child user namespace\ncap_raised(current_cap(),...) tests your capabilities with respect to that\nchild user namespace not capabilities in the initial user namespace and\nthus will allow processes that should be unprivielged to use the kernel\nservices that are only protected with cap_raised(current_cap(),..).\n\nTo fix possible user_namespace issues and to just clean up the code\nreplace cap_raised(current_cap(), CAP_SYS_ADMIN) with\ncapable(CAP_SYS_ADMIN).\n\nSigned-off-by: Eric W. Biederman \u003cebiederm@xmission.com\u003e\nCc: Patrick McHardy \u003ckaber@trash.net\u003e\nCc: Philipp Reisner \u003cphilipp.reisner@linbit.com\u003e\nAcked-by: Serge E. Hallyn \u003cserge.hallyn@canonical.com\u003e\nAcked-by: Andrew G. Morgan \u003cmorgan@kernel.org\u003e\nCc: Vasiliy Kulikov \u003csegoon@openwall.com\u003e\nCc: David Howells \u003cdhowells@redhat.com\u003e\nReviewed-by: James Morris \u003cjames.l.morris@oracle.com\u003e\nCc: David Miller \u003cdavem@davemloft.net\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "b16b1b6cd052acbacc0a15f934bca9b354534d48",
      "tree": "ba5b2e72e04a18a4bd83429f089d16637b9a6343",
      "parents": [
        "69964ea4c7b68c9399f7977aa5b9aa6539a6a98a"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri May 04 17:03:18 2012 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri May 04 17:03:18 2012 +1000"
      },
      "message": "md/bitmap: fix calculation of \u0027chunks\u0027 - missing shift.\n\ncommit 61a0d80c \"md/bitmap: discard CHUNK_BLOCK_SHIFT macro\"\nreplaced CHUNK_BLOCK_RATIO() by the same text that was\nreplacing CHUNK_BLOCK_SHIFT() - which is clearly wrong.\n\nThe result is that \u0027chunks\u0027 is often too small by 1,\nwhich can sometimes result in a crash (not sure how).\n\nSo use the correct replacement, and get rid of CHUNK_BLOCK_RATIO\nwhich is no longe used.\n\nReported-by: Karl Newman \u003csiliconfiend@gmail.com\u003e\nTested-by: Karl Newman \u003csiliconfiend@gmail.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "30b8aa9172dfeaac6d77897c67ee9f9fc574cdbb",
      "tree": "d950c723e17399fefd104c5eddcf514d7f3c240a",
      "parents": [
        "ed209584c38fb74b7eecc03e5b1bfe674e591bd8"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Apr 24 10:23:16 2012 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Apr 24 10:23:16 2012 +1000"
      },
      "message": "md: fix possible corruption of array metadata on shutdown.\n\ncommit c744a65c1e2d59acc54333ce8\n  md: don\u0027t set md arrays to readonly on shutdown.\n\nremoved the possibility of a \u0027BUG\u0027 when data is written to an array\nthat has just been switched to read-only, but also introduced the\npossibility that the array metadata could be corrupted.\n\nIf, when md_notify_reboot gets the mddev lock, the array is\nin a state where it is assembled but hasn\u0027t been started (as can\nhappen if the personality module is not available, or in other unusual\nsituations), then incorrect metadata will be written out making it\nimpossible to re-assemble the array.\n\nSo only call __md_stop_writes() if the array has actually been\nactivated.\n\nThis patch is needed for any stable kernel which has had the above\ncommit applied.\n\nCc: stable@vger.kernel.org\nReported-by: Christoph Nelles \u003cevilazrael@evilazrael.de\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "ed209584c38fb74b7eecc03e5b1bfe674e591bd8",
      "tree": "a232bb4fbf3a2e143ad57dfa3acad92418c5b12c",
      "parents": [
        "a9ad8526bb1af0741a5c0e01155dac08e7bdde60"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Apr 24 10:23:14 2012 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Apr 24 10:23:14 2012 +1000"
      },
      "message": "md: don\u0027t call -\u003eadd_disk unless there is good reason.\n\nCommit 7bfec5f35c68121e7b18\n\n   md/raid5: If there is a spare and a want_replacement device, start replacement.\n\ncause md_check_recovery to call -\u003eadd_disk much more often.\nInstead of only when the array is degraded, it is now called whenever\nmd_check_recovery finds anything useful to do, which includes\nupdating the metadata for clean\u003c-\u003edirty transition.\nThis causes unnecessary work, and causes info messages from -\u003eadd_disk\nto be reported much too often.\n\nSo refine md_check_recovery to only do any actual recovery checking\n(including -\u003eadd_disk) if MD_RECOVERY_NEEDED is set.\n\nThis fix is suitable for 3.3.y:\n\nCc: stable@vger.kernel.org\nReported-by: Jan Ceuleers \u003cjan.ceuleers@computer.org\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "a9ad8526bb1af0741a5c0e01155dac08e7bdde60",
      "tree": "4e82b35b644eab0aacc6c7d16b2cb7794f106cb5",
      "parents": [
        "afbaa90b80b1ec66e5137cc3824746bfdf559b18"
      ],
      "author": {
        "name": "Jonathan Brassow",
        "email": "jbrassow@redhat.com",
        "time": "Tue Apr 24 10:23:13 2012 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Apr 24 10:23:13 2012 +1000"
      },
      "message": "DM RAID: Use safe version of rdev_for_each\n\nFix segfault caused by using rdev_for_each instead of rdev_for_each_safe\n\nCommit dafb20fa34320a472deb7442f25a0c086e0feb33 mistakenly replaced a safe\niterator with an unsafe one when making some macro changes.\n\nSigned-off-by: Jonathan Brassow \u003cjbrassow@redhat.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "afbaa90b80b1ec66e5137cc3824746bfdf559b18",
      "tree": "8c0307e41849eef28146343efc4fed75f83a30f1",
      "parents": [
        "f4380a915823dbed0bf8e3cf502ebcf2b7c7f833"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Apr 12 16:05:06 2012 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Apr 12 16:05:06 2012 +1000"
      },
      "message": "md/bitmap: prevent bitmap_daemon_work running while initialising bitmap\n\nIf a bitmap is added while the array is active, it is possible\nfor bitmap_daemon_work to run while the bitmap is being\ninitialised.\nThis is particularly a problem if bitmap_daemon_work sees\nbitmap-\u003efilemap as non-NULL before it has been filled in properly.\nSo hold bitmap_info.mutex while filling in -\u003efilemap\nto prevent problems.\n\nThis patch is suitable for any -stable kernel, though it might not\napply cleanly before about 3.1.\n\nCc: stable@vger.kernel.org\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "f4380a915823dbed0bf8e3cf502ebcf2b7c7f833",
      "tree": "1326179e1f715f33495066b2fe4b99acf1bbdd96",
      "parents": [
        "9e41dd35b39c2cf40767332b8f914d7afe25cc40"
      ],
      "author": {
        "name": "majianpeng",
        "email": "majianpeng@gmail.com",
        "time": "Thu Apr 12 16:04:47 2012 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Apr 12 16:04:47 2012 +1000"
      },
      "message": "md/raid1,raid10: Fix calculation of \u0027vcnt\u0027 when processing error recovery.\n\nIf r1bio-\u003esectors % 8 !\u003d 0,then the memcmp and a later\nmemcpy will omit the last bio_vec.\n\nThis is suitable for any stable kernel since 3.1 when bad-block\nmanagement was introduced.\n\nCc: stable@vger.kernel.org\nSigned-off-by: majianpeng \u003cmajianpeng@gmail.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "9e41dd35b39c2cf40767332b8f914d7afe25cc40",
      "tree": "b694a4d27b3fd7beb1881d5ad993303fe7309c59",
      "parents": [
        "5020ad7d143ccfcf8149974096220d59e5572120"
      ],
      "author": {
        "name": "Andrei Warkentin",
        "email": "andrey.warkentin@gmail.com",
        "time": "Thu Apr 12 15:55:21 2012 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Apr 12 15:55:21 2012 +1000"
      },
      "message": "MD: Bitmap version cleanup.\n\nbitmap_new_disk_sb() would still create V3 bitmap superblock\nwith host-endian layout.\n\nPerhaps I\u0027m confused, but shouldn\u0027t bitmap_new_disk_sb() be\ncreating a V4 bitmap superblock instead, that is portable,\nas per comment in bitmap.h?\n\nSigned-off-by: Andrei Warkentin \u003candrey.warkentin@gmail.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "5020ad7d143ccfcf8149974096220d59e5572120",
      "tree": "0124b6866ecd63b3a8913a6661e1d96699d60b71",
      "parents": [
        "c6d2e084c7411f61f2b446d94989e5aaf9879b0f"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Apr 02 01:39:05 2012 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Apr 03 15:39:23 2012 +1000"
      },
      "message": "md/raid1,raid10: don\u0027t compare excess byte during consistency check.\n\nWhen comparing two pages read from different legs of a mirror, only\ncompare the bytes that were read, not the whole page.\n\nIn most cases we read a whole page, but in some cases with\nbad blocks or odd sizes devices we might read fewer than that.\n\nThis bug has been present \"forever\" but at worst it might cause\na report of two many mismatches and generate a little bit\nextra resync IO, so there is no need to back-port to -stable\nkernels.\n\nReported-by: majianpeng \u003cmajianpeng@gmail.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "c6d2e084c7411f61f2b446d94989e5aaf9879b0f",
      "tree": "521616d7bd6ff7eb38217bed1b81c5960fa2023d",
      "parents": [
        "a42f9d83b5c05dc6e678a1f0cd9767502c2c58de"
      ],
      "author": {
        "name": "majianpeng",
        "email": "majianpeng@gmail.com",
        "time": "Mon Apr 02 01:16:59 2012 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Apr 03 15:37:38 2012 +1000"
      },
      "message": "md/raid5: Fix a bug about judging if the operation is syncing or replacing\n\nWhen create a raid5 using assume-clean and echo check or repair to\nsync_action.Then component disks did not operated IO but the raid\ncheck/resync faster than normal.\nBecause the judgement in function analyse_stripe():\n\t\tif (do_recovery ||\n\t\t    sh-\u003esector \u003e\u003d conf-\u003emddev-\u003erecovery_cp)\n\t\t\ts-\u003esyncing \u003d 1;\n\t\telse\n\t\t\ts-\u003ereplacing \u003d 1;\nWhen check or repair,the recovery_cp \u003d\u003d MaxSectore,so syncing equal zero\nnot one.\n\nThis bug was introduced by commit 9a3e1101b827\n    md/raid5:  detect and handle replacements during recovery.\nso this patch is suitable for 3.3-stable.\n\nCc: stable@vger.kernel.org\nSigned-off-by: majianpeng \u003cmajianpeng@gmail.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "a42f9d83b5c05dc6e678a1f0cd9767502c2c58de",
      "tree": "e1864a59287f1441a4b016938efea5ca30a57df1",
      "parents": [
        "24b961f811a3e790a9b93604d2594bfb6cce4fa4"
      ],
      "author": {
        "name": "majianpeng",
        "email": "majianpeng@gmail.com",
        "time": "Mon Apr 02 01:04:19 2012 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Apr 03 15:37:33 2012 +1000"
      },
      "message": "md/raid1:Remove unnecessary rcu_dereference(conf-\u003emirrors[i].rdev).\n\nBecause rde-\u003enr_pending \u003e 0,so can not remove this disk.\nAnd in any case, we aren\u0027t holding rcu_read_lock()\n\nSigned-off-by: majianpeng \u003cmajianpeng@gmail.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "24b961f811a3e790a9b93604d2594bfb6cce4fa4",
      "tree": "8cde643f6d3d142538d8e2499e65b368f5320bcc",
      "parents": [
        "18b9837ea0dc3cf844c6c4196871ce91d047bddb"
      ],
      "author": {
        "name": "Jes Sorensen",
        "email": "Jes.Sorensen@redhat.com",
        "time": "Sun Apr 01 23:48:38 2012 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Apr 03 15:37:26 2012 +1000"
      },
      "message": "md: Avoid OOPS when reshaping raid1 to raid0\n\nraid1 arrays do not have the notion of chunk size. Calculate the\nlargest chunk sector size we can use to avoid a divide by zero OOPS\nwhen aligning the size of the new array to the chunk size.\n\nSigned-off-by: Jes Sorensen \u003cJes.Sorensen@redhat.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "18b9837ea0dc3cf844c6c4196871ce91d047bddb",
      "tree": "de8be80b767d144405aeeaf7238c723f575b4b40",
      "parents": [
        "5220ea1e640869e70f894837678315c878c651fd"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Sun Apr 01 23:48:38 2012 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Apr 03 15:36:17 2012 +1000"
      },
      "message": "md/raid5: fix handling of bad blocks during recovery.\n\n1/ We can only treat a known-bad-block like a read-error if we\n   have the data that belongs in that block.  So fix that test.\n\n2/ If we cannot recovery a stripe due to insufficient data,\n   don\u0027t tell \"md_done_sync\" that the sync failed unless we really\n   did fail something.  If we successfully record bad blocks,\n   that is success.\n\nReported-by: \"majianpeng\" \u003cmajianpeng@gmail.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "5220ea1e640869e70f894837678315c878c651fd",
      "tree": "b18af9d438b634e81bd5d87c2323ae58d52eaf73",
      "parents": [
        "0366ef847581d692e197b88825867ca9ee00e358"
      ],
      "author": {
        "name": "majianpeng",
        "email": "majianpeng@gmail.com",
        "time": "Mon Apr 02 09:48:38 2012 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Apr 02 09:48:38 2012 +1000"
      },
      "message": "md/raid1: If md_integrity_register() failed,run() must free the mem\n\nSigned-off-by: majianpeng \u003cmajianpeng@gmail.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "0366ef847581d692e197b88825867ca9ee00e358",
      "tree": "7faec66efc6e77b24dd349a42c7dabefbc1964be",
      "parents": [
        "98d5561bfbc3c7a53d6abc1812a2bd5344d36fa3"
      ],
      "author": {
        "name": "majianpeng",
        "email": "majianpeng@gmail.com",
        "time": "Mon Apr 02 09:48:37 2012 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Apr 02 09:48:37 2012 +1000"
      },
      "message": "md/raid0: If md_integrity_register() fails, raid0_run() must free the mem.\n\nSigned-off-by: majianpeng \u003cmajianpeng@gmail.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "98d5561bfbc3c7a53d6abc1812a2bd5344d36fa3",
      "tree": "6397046f8dc7a82986ebd7e442491dc118d1a850",
      "parents": [
        "dd775ae2549217d3ae09363e3edb305d0fa19928"
      ],
      "author": {
        "name": "majianpeng",
        "email": "majianpeng@gmail.com",
        "time": "Mon Apr 02 09:48:37 2012 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Apr 02 09:48:37 2012 +1000"
      },
      "message": "md/linear: If md_integrity_register() fails, linear_run() must free the mem.\n\n\nSigned-off-by: majianpeng \u003cmajianpeng@gmail.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "a4ffc152198efba2ed9e6eac0eb97f17bfebce85",
      "tree": "1901c86e3f4dbfcc3bd753888951a51430f0cde2",
      "parents": [
        "a66cc28f53a7e9679dedb2bc66ddb0e0c6bdd0ee"
      ],
      "author": {
        "name": "Mikulas Patocka",
        "email": "mpatocka@redhat.com",
        "time": "Wed Mar 28 18:43:38 2012 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Wed Mar 28 18:43:38 2012 +0100"
      },
      "message": "dm: add verity target\n\nThis device-mapper target creates a read-only device that transparently\nvalidates the data on one underlying device against a pre-generated tree\nof cryptographic checksums stored on a second device.\n\nTwo checksum device formats are supported: version 0 which is already\nshipping in Chromium OS and version 1 which incorporates some\nimprovements.\n\nSigned-off-by: Mikulas Patocka \u003cmpatocka@redhat.com\u003e\nSigned-off-by: Mandeep Singh Baines \u003cmsb@chromium.org\u003e\nSigned-off-by: Will Drewry \u003cwad@chromium.org\u003e\nSigned-off-by: Elly Jones \u003cellyjones@chromium.org\u003e\nCc: Milan Broz \u003cmbroz@redhat.com\u003e\nCc: Olof Johansson \u003colofj@chromium.org\u003e\nCc: Steffen Klassert \u003csteffen.klassert@secunet.com\u003e\nCc: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "a66cc28f53a7e9679dedb2bc66ddb0e0c6bdd0ee",
      "tree": "0d1037562bd8a47f6e9d31d7ed56e24c7aa98c66",
      "parents": [
        "67e2e2b281812b5caf4923a38aadc6b89e34f064"
      ],
      "author": {
        "name": "Mikulas Patocka",
        "email": "mpatocka@redhat.com",
        "time": "Wed Mar 28 18:41:29 2012 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Wed Mar 28 18:41:29 2012 +0100"
      },
      "message": "dm bufio: prefetch\n\nThis patch introduces a new function dm_bufio_prefetch. It prefetches\nthe specified range of blocks into dm-bufio cache without waiting\nfor i/o completion.\n\nSigned-off-by: Mikulas Patocka \u003cmpatocka@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "67e2e2b281812b5caf4923a38aadc6b89e34f064",
      "tree": "c04255840de5e70a0aa2880d1f1c8bfe1b2e7817",
      "parents": [
        "104655fd4dcebd50068ef30253a001da72e3a081"
      ],
      "author": {
        "name": "Joe Thornber",
        "email": "ejt@redhat.com",
        "time": "Wed Mar 28 18:41:29 2012 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Wed Mar 28 18:41:29 2012 +0100"
      },
      "message": "dm thin: add pool target flags to control discard\n\nAdd dm thin target arguments to control discard support.\n\nignore_discard: Disables discard support\n\nno_discard_passdown: Don\u0027t pass discards down to the underlying data\ndevice, but just remove the mapping within the thin provisioning target.\n\nSigned-off-by: Joe Thornber \u003cejt@redhat.com\u003e\nSigned-off-by: Mike Snitzer \u003csnitzer@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "104655fd4dcebd50068ef30253a001da72e3a081",
      "tree": "ce4cc70f3ecf643d1c63948f902bc135b17750c7",
      "parents": [
        "eb2aa48d4eb7aee63cba201bf47641dad3e92250"
      ],
      "author": {
        "name": "Joe Thornber",
        "email": "ejt@redhat.com",
        "time": "Wed Mar 28 18:41:28 2012 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Wed Mar 28 18:41:28 2012 +0100"
      },
      "message": "dm thin: support discards\n\nSupport discards in the thin target.\n\nOn discard the corresponding mapping(s) are removed from the thin\ndevice.  If the associated block(s) are no longer shared the discard\nis passed to the underlying device.\n\nAll bios other than discards now have an associated deferred_entry\nthat is saved to the \u0027all_io_entry\u0027 in endio_hook.  When non-discard\nIO completes and associated mappings are quiesced any discards that\nwere deferred, via ds_add_work() in process_discard(), will be queued\nfor processing by the worker thread.\n\nSigned-off-by: Joe Thornber \u003cejt@redhat.com\u003e\nSigned-off-by: Mike Snitzer \u003csnitzer@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n\ndrivers/md/dm-thin.c |  173 ++++++++++++++++++++++++++++++++++++++++++++++----\n drivers/md/dm-thin.c |  172 ++++++++++++++++++++++++++++++++++++++++++++++-----\n 1 file changed, 158 insertions(+), 14 deletions(-)\n"
    },
    {
      "commit": "eb2aa48d4eb7aee63cba201bf47641dad3e92250",
      "tree": "3e160010319f6c4eb30770d07d6fb089955f5704",
      "parents": [
        "6efd6e83092cd4a7532270bc843de90bb93f6683"
      ],
      "author": {
        "name": "Joe Thornber",
        "email": "ejt@redhat.com",
        "time": "Wed Mar 28 18:41:28 2012 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Wed Mar 28 18:41:28 2012 +0100"
      },
      "message": "dm thin: prepare to support discard\n\nThis patch contains the ground work needed for dm-thin to support discard.\n\n  - Adds endio function that replaces shared_read_endio.\n\n  - Introduce an explicit \u0027quiesced\u0027 flag into the new_mapping structure.\n    Before, this was implicitly indicated by m-\u003elist being empty.\n\n  - The map_info-\u003eptr remains constant for the duration of a bio\u0027s trip\n    through the thin target.  Make it easier to reason about it.\n\nSigned-off-by: Joe Thornber \u003cejt@redhat.com\u003e\nSigned-off-by: Mike Snitzer \u003csnitzer@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "6efd6e83092cd4a7532270bc843de90bb93f6683",
      "tree": "129b9de5d03a11f0bf02feb3743a10e4fe8561d5",
      "parents": [
        "2dd9c257fbc243aa76ee6db0bb8371f9f74fad2d"
      ],
      "author": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Wed Mar 28 18:41:28 2012 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Wed Mar 28 18:41:28 2012 +0100"
      },
      "message": "dm thin: use dm_target_offset\n\nUse dm_target_offset wrapper instead of referencing the awkward ti-\u003ebegin\nexplicitly.\n\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "2dd9c257fbc243aa76ee6db0bb8371f9f74fad2d",
      "tree": "51c82de6e41b4f53f9d41dfe1211c4feba55dc6d",
      "parents": [
        "c4a69ecdb463a901b4645230613961e134e897cd"
      ],
      "author": {
        "name": "Joe Thornber",
        "email": "ejt@redhat.com",
        "time": "Wed Mar 28 18:41:28 2012 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Wed Mar 28 18:41:28 2012 +0100"
      },
      "message": "dm thin: support read only external snapshot origins\n\nSupport the use of an external _read only_ device as an origin for a thin\ndevice.\n\nAny read to an unprovisioned area of the thin device will be passed\nthrough to the origin.  Writes trigger allocation of new blocks as\nusual.\n\nOne possible use case for this would be VM hosts that want to run\nguests on thinly-provisioned volumes but have the base image on another\ndevice (possibly shared between many VMs).\n\nSigned-off-by: Joe Thornber \u003cejt@redhat.com\u003e\nSigned-off-by: Mike Snitzer \u003csnitzer@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "c4a69ecdb463a901b4645230613961e134e897cd",
      "tree": "c53e0a569f3d390ea2a97f964225d5383c6401ec",
      "parents": [
        "71fd5ae25d88841c08d5bbea90c0f0a12ca05509"
      ],
      "author": {
        "name": "Mike Snitzer",
        "email": "snitzer@redhat.com",
        "time": "Wed Mar 28 18:41:28 2012 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Wed Mar 28 18:41:28 2012 +0100"
      },
      "message": "dm thin: relax hard limit on the maximum size of a metadata device\n\nThe thin metadata format can only make use of a device that is \u003c\u003d\nTHIN_METADATA_MAX_SECTORS (currently 15.9375 GB).  Therefore, there is no\npractical benefit to using a larger device.\n\nHowever, it may be that other factors impose a certain granularity for\nthe space that is allocated to a device (E.g. lvm2 can impose a coarse\ngranularity through the use of large, \u003e\u003d 1 GB, physical extents).\n\nRather than reject a larger metadata device, during thin-pool device\nconstruction, switch to allowing it but issue a warning if a device\nlarger than THIN_METADATA_MAX_SECTORS_WARNING (16 GB) is\nprovided.  Any space over 15.9375 GB will not be used.\n\nSigned-off-by: Mike Snitzer \u003csnitzer@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "71fd5ae25d88841c08d5bbea90c0f0a12ca05509",
      "tree": "763ec9657bd25e4d42f1f6774faa65166364eede",
      "parents": [
        "905e51b39a5558706a6ed883fe104de3d417050b"
      ],
      "author": {
        "name": "Joe Thornber",
        "email": "ejt@redhat.com",
        "time": "Wed Mar 28 18:41:27 2012 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Wed Mar 28 18:41:27 2012 +0100"
      },
      "message": "dm persistent data: remove space map ref_count entries if redundant\n\nSave space by removing entries from the space map ref_count tree if\nthey\u0027re no longer needed.\n\nRef counts are stored in two places: a bitmap if the ref_count is\nbelow 3, or a btree of uint32_t if 3 or above.\n\nWhen a ref_count that was above 3 drops below we can remove it from\nthe tree and save some metadata space.  This removal was commented out\nbefore because I was unsure why this was causing under-populated btree\nnodes.  Earlier patches have fixed this issue.\n\nSigned-off-by: Joe Thornber \u003cejt@redhat.com\u003e\nSigned-off-by: Mike Snitzer \u003csnitzer@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "905e51b39a5558706a6ed883fe104de3d417050b",
      "tree": "d8e1d9fcdba66942333f099618e6acc5be238538",
      "parents": [
        "31998ef19385c944600d9a981b96252f98204bee"
      ],
      "author": {
        "name": "Joe Thornber",
        "email": "ejt@redhat.com",
        "time": "Wed Mar 28 18:41:27 2012 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Wed Mar 28 18:41:27 2012 +0100"
      },
      "message": "dm thin: commit outstanding data every second\n\nCommit unwritten data every second to prevent too much building up.\n\nReleased blocks don\u0027t become available until after the next commit\n(for crash resilience).  Prior to this patch commits were only\ntriggered by a message to the target or a REQ_{FLUSH,FUA} bio.  This\nallowed far too big a position to build up.\n\nThe interval is hard-coded to 1 second.  This is a sensible setting.\nI\u0027m not making this user configurable, since there isn\u0027t much to be\ngained by tweaking this - and a lot lost by setting it far too high.\n\nSigned-off-by: Joe Thornber \u003cejt@redhat.com\u003e\nSigned-off-by: Mike Snitzer \u003csnitzer@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "31998ef19385c944600d9a981b96252f98204bee",
      "tree": "ab757b8d6e3d349cf42827354e594687dcf6c5c8",
      "parents": [
        "0447568fc51e0268e201f7086d2450cf986e0411"
      ],
      "author": {
        "name": "Mikulas Patocka",
        "email": "mpatocka@redhat.com",
        "time": "Wed Mar 28 18:41:26 2012 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Wed Mar 28 18:41:26 2012 +0100"
      },
      "message": "dm: reject trailing characters in sccanf input\n\nDevice mapper uses sscanf to convert arguments to numbers. The problem is that\nthe way we use it ignores additional unmatched characters in the scanned string.\n\nFor example, this `if (sscanf(string, \"%d\", \u0026number) \u003d\u003d 1)\u0027 will match a number,\nbut also it will match number with some garbage appended, like \"123abc\".\n\nAs a result, device mapper accepts garbage after some numbers. For example\nthe command `dmsetup create vg1-new --table \"0 16384 linear 254:1bla 34816bla\"\u0027\nwill pass without an error.\n\nThis patch fixes all sscanf uses in device mapper. It appends \"%c\" with\na pointer to a dummy character variable to every sscanf statement.\n\nThe construct `if (sscanf(string, \"%d%c\", \u0026number, \u0026dummy) \u003d\u003d 1)\u0027 succeeds\nonly if string is a null-terminated number (optionally preceded by some\nwhitespace characters). If there is some character appended after the number,\nsscanf matches \"%c\", writes the character to the dummy variable and returns 2.\nWe check the return value for 1 and consequently reject numbers with some\ngarbage appended.\n\nSigned-off-by: Mikulas Patocka \u003cmpatocka@redhat.com\u003e\nAcked-by: Mike Snitzer \u003csnitzer@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "0447568fc51e0268e201f7086d2450cf986e0411",
      "tree": "879a6e4ae0b156f05487ac2eb058920e83a0285e",
      "parents": [
        "fef838cc1ac34e599c74888274506d76767f3098"
      ],
      "author": {
        "name": "Jonathan E Brassow",
        "email": "jbrassow@redhat.com",
        "time": "Wed Mar 28 18:41:26 2012 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Wed Mar 28 18:41:26 2012 +0100"
      },
      "message": "dm raid: handle failed devices during start up\n\nThe dm-raid code currently fails to create a RAID array if any of the\nsuperblocks cannot be read.  This was an oversight as there is already\ncode to handle this case if the values (\u0027- -\u0027) were provided for the\nfailed array position.\n\nWith this patch, if a superblock cannot be read, the array position\u0027s\nfields are initialized as though \u0027- -\u0027 was set in the table.  That is,\nthe device is failed and the position should not be used, but if there\nis sufficient redundancy, the array should still be activated.\n\nSigned-off-by: Jonathan Brassow \u003cjbrassow@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "fef838cc1ac34e599c74888274506d76767f3098",
      "tree": "197179f2408018f66f5ca60b1c48bc4bea458072",
      "parents": [
        "a3aefb395e4f321c8b1314c88f1123624adcf743"
      ],
      "author": {
        "name": "Joe Thornber",
        "email": "ejt@redhat.com",
        "time": "Wed Mar 28 18:41:25 2012 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Wed Mar 28 18:41:25 2012 +0100"
      },
      "message": "dm thin metadata: pass correct space map to dm_sm_root_size\n\nFix a harmless typo.\n\nThe root is a chunk of data that gets written to the superblock.  This\ndata is used to recreate the space map when opening a metadata area.\nWe have two space maps; one tracking space on the metadata device and\none of the data device.  Both of these use the same format for their\nroot, so this typo was harmless.\n\nSigned-off-by: Joe Thornber \u003cejt@redhat.com\u003e\nSigned-off-by: Mike Snitzer \u003csnitzer@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "a3aefb395e4f321c8b1314c88f1123624adcf743",
      "tree": "cedb3dbc643009cdba3c927b499e32e3247f7e5e",
      "parents": [
        "466891f9959b500e037836737c064a72f2bbe8cf"
      ],
      "author": {
        "name": "Joe Thornber",
        "email": "ejt@redhat.com",
        "time": "Wed Mar 28 18:41:25 2012 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Wed Mar 28 18:41:25 2012 +0100"
      },
      "message": "dm persistent data: remove redundant value_size arg from value_ptr\n\nNow that the value_size is held within every node of the btrees we can\nremove this argument from value_ptr().\n\nFor the last few months a BUG_ON has been checking this argument is\nthe same as that held in the node.  No issues were reported.  So this\nis a safe change.\n\nSigned-off-by: Joe Thornber \u003cejt@redhat.com\u003e\nSigned-off-by: Mike Snitzer \u003csnitzer@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "466891f9959b500e037836737c064a72f2bbe8cf",
      "tree": "d50448abe03d595fb5f00671ff7aec9a35e3cdb0",
      "parents": [
        "4d7b38b7d944a79da3793b6c92d38682f3905ac9"
      ],
      "author": {
        "name": "Jun\u0027ichi Nomura",
        "email": "j-nomura@ce.jp.nec.com",
        "time": "Wed Mar 28 18:41:25 2012 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Wed Mar 28 18:41:25 2012 +0100"
      },
      "message": "dm mpath: detect invalid map_context\n\nThe map_context pointer should always be set. However, we have reports\nthat upon requeuing it is not set correctly.  So add set and clear\nfunctions with a BUG_ON() to track the issue properly.\n\nSigned-off-by: Jun\u0027ichi Nomura \u003cj-nomura@ce.jp.nec.com\u003e\nCc: Mike Snitzer \u003csnitzer@redhat.com\u003e\nAcked-by: Hannes Reinecke \u003chare@suse.de\u003e\nTested-by: Heiko Carstens \u003cheiko.carstens@de.ibm.com\u003e\nAcked-by: Dave Wysochanski \u003cdwysocha@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "4d7b38b7d944a79da3793b6c92d38682f3905ac9",
      "tree": "88f187c760c0dfd3cb8d7957a635254b3fcabd36",
      "parents": [
        "574ce07eb0014069f1da763c219bb30ea4c266ec"
      ],
      "author": {
        "name": "Hannes Reinecke",
        "email": "hare@suse.de",
        "time": "Wed Mar 28 18:41:25 2012 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Wed Mar 28 18:41:25 2012 +0100"
      },
      "message": "dm: clear bi_end_io on remapping failure\n\nAs a precaution, set bi_end_io to NULL when failing to remap.\n\nSigned-off-by: Hannes Reinecke \u003chare@suse.de\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "574ce07eb0014069f1da763c219bb30ea4c266ec",
      "tree": "f5f5543a30f2e2937cfd96dea28ae17f4b0c9544",
      "parents": [
        "fe878f34df89ad4af758f40bbec829807dc93a00"
      ],
      "author": {
        "name": "Hannes Reinecke",
        "email": "hare@suse.de",
        "time": "Wed Mar 28 18:41:24 2012 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Wed Mar 28 18:41:24 2012 +0100"
      },
      "message": "dm table: simplify call to free_devices\n\nfree_devices in dm_table.c already uses list_for_each(), so we don\u0027t\nneed to check if the list is empty.\n\nSigned-off-by: Hannes Reinecke \u003chare@suse.de\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "fe878f34df89ad4af758f40bbec829807dc93a00",
      "tree": "eaa377c640fd595391491725ab477f29062374b1",
      "parents": [
        "035220b33d6865d81d5433600def53373cca7127"
      ],
      "author": {
        "name": "Joe Thornber",
        "email": "ejt@redhat.com",
        "time": "Wed Mar 28 18:41:24 2012 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Wed Mar 28 18:41:24 2012 +0100"
      },
      "message": "dm thin: correct comments\n\nRemove documentation for unimplemented \u0027trim\u0027 message.\n\nI\u0027d planned a \u0027trim\u0027 target message for shrinking thin devices, but\nthis is better handled via the discard ioctl.\n\nSigned-off-by: Joe Thornber \u003cejt@redhat.com\u003e\nSigned-off-by: Mike Snitzer \u003csnitzer@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "035220b33d6865d81d5433600def53373cca7127",
      "tree": "9f72ff60d07e171b79f996da0c463052201ef2fe",
      "parents": [
        "e0b215da8fde99b6a9d82ee4c3600ec223cc7959"
      ],
      "author": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Wed Mar 28 18:41:24 2012 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Wed Mar 28 18:41:24 2012 +0100"
      },
      "message": "dm raid: no longer experimental\n\nThe dm raid module (using md) is becoming the preferred way of creating long-lived\nmirrors through userspace LVM so remove the EXPERIMENTAL tag.\n\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "e0b215da8fde99b6a9d82ee4c3600ec223cc7959",
      "tree": "60a6d7fd27dddaf28a2ce42cc5ec444db0a5c6b5",
      "parents": [
        "854ecaad80223d3c3e32da3ca0ca66cd4a695085"
      ],
      "author": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Wed Mar 28 18:41:24 2012 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Wed Mar 28 18:41:24 2012 +0100"
      },
      "message": "dm uevent: no longer experimental\n\nDrop EXPERIMENTAL tag from dm-uevent.\n\nIt\u0027s not changed for a while and some userspace tools are relying upon it.\n\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "b0988900bae9ecf968a8a8d086a9eec671a9517a",
      "tree": "9dd34ec6f4563b78ac454f3691757dece46c1926",
      "parents": [
        "6f94a4c45a6f744383f9f695dde019998db3df55"
      ],
      "author": {
        "name": "Joe Thornber",
        "email": "ejt@redhat.com",
        "time": "Wed Mar 28 18:41:23 2012 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Wed Mar 28 18:41:23 2012 +0100"
      },
      "message": "dm persistent data: fix btree rebalancing after remove\n\nWhen we remove an entry from a node we sometimes rebalance with it\u0027s\ntwo neighbours.  This wasn\u0027t being done correctly; in some cases\nentries have to move all the way from the right neighbour to the left\nneighbour, or vice versa.  This patch pretty much re-writes the\nbalancing code to fix it.\n\nThis code is barely used currently; only when you delete a thin\ndevice, and then only if you have hundreds of them in the same pool.\nOnce we have discard support, which removes mappings, this will be used\nmuch more heavily.\n\nSigned-off-by: Joe Thornber \u003cejt@redhat.com\u003e\nCc: stable@kernel.org\nSigned-off-by: Mike Snitzer \u003csnitzer@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "6f94a4c45a6f744383f9f695dde019998db3df55",
      "tree": "7e4982a066935a2434780b5e34fb24fb15e533f0",
      "parents": [
        "72c6e7afc43e19f68a31dea204fc366624d6eee9"
      ],
      "author": {
        "name": "Joe Thornber",
        "email": "ejt@redhat.com",
        "time": "Wed Mar 28 18:41:23 2012 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Wed Mar 28 18:41:23 2012 +0100"
      },
      "message": "dm thin: fix stacked bi_next usage\n\nAvoid using the bi_next field for the holder of a cell when deferring\nbios because a stacked device below might change it.  Store the\nholder in a new field in struct cell instead.\n\nWhen a cell is created, the bio that triggered creation (the holder) was\nadded to the same bio list as subsequent bios.  In some cases we pass\nthis holder bio directly to devices underneath.  If those devices use\nthe bi_next field there will be trouble...\n\nThis also simplifies some code that had to work out which bio was the\nholder.\n\nSigned-off-by: Joe Thornber \u003cejt@redhat.com\u003e\nCc: stable@kernel.org\nSigned-off-by: Mike Snitzer \u003csnitzer@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    }
  ],
  "next": "72c6e7afc43e19f68a31dea204fc366624d6eee9"
}
