)]}'
{
  "log": [
    {
      "commit": "915c420ddfa3eb22a0dbdb7a8e0ecf020c31961f",
      "tree": "24915c8f3380e390130d1d437389b5cb805c28fd",
      "parents": [
        "38059ec2bd2ce9e4709f49f34795aa0944287908"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Dec 23 10:17:51 2011 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Dec 23 10:17:51 2011 +1100"
      },
      "message": "md/bitmap: be more consistent when setting new bits in memory bitmap.\n\nFor each active region corresponding to a bit in the bitmap with have\na 14bit counter (and some flags).\nThis counts\n   number of active writes + bit in the on-disk bitmap + delay-needed.\n\nThe \"delay-needed\" is because we always want a delay before clearing a\nbit.  So the number here is normally number of active writes plus 2.\nIf there have been no writes for a while, we drop to 1.\nIf still no writes we clear the bit and drop to 0.\n\nSo for consistency, when setting bit from the on-disk bitmap or by\nrequest from user-space it is best to set the counter to \u00272\u0027 to start\nwith.\n\nIn particular we might also set the NEEDED_MASK flag at this time, and\nin all other cases NEEDED_MASK is only set when the counter is 2 or\nmore.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "2e61ebbcc45438899235d7a39f17291cb24e746c",
      "tree": "9d12a2a641c9980fb08f704449631d8012db0686",
      "parents": [
        "506c9e44a85f6a79fc0643f2d2498ab6cda3d3f8"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Dec 23 10:17:50 2011 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Dec 23 10:17:50 2011 +1100"
      },
      "message": "md/bitmap: daemon_work cleanup.\n\nWe have a variable \u0027mddev\u0027 in this function, but repeatedly get the\nsame value by dereferencing bitmap-\u003emddev.\nThere is room for simplification here...\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "961902c0f8240175729274cd14198872f42072b7",
      "tree": "808b47d32174e970465dc00cea9150ff978bfc95",
      "parents": [
        "60fc13702a1b35118c1548e9c257fa038cecb658"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Dec 23 09:57:48 2011 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Dec 23 09:57:48 2011 +1100"
      },
      "message": "md/bitmap: It is OK to clear bits during recovery.\n\ncommit d0a4bb492772ce5c4bdfba3744a99ed6f6fb238f introduced a\nregression which is annoying but fairly harmless.\n\nWhen writing to an array that is undergoing recovery (a spare\nin being integrated into the array), writing to the array will\nset bits in the bitmap, but they will not be cleared when the\nwrite completes.\n\nFor bits covering areas that have not been recovered yet this is not a\nproblem as the recovery will clear the bits.  However bits set in\nalready-recovered region will stay set and never be cleared.\nThis doesn\u0027t risk data integrity.  The only negatives are:\n - next time there is a crash, more resyncing than necessary will\n   be done.\n - the bitmap doesn\u0027t look clean, which is confusing.\n\nWhile an array is recovering we don\u0027t want to update the\n\u0027events_cleared\u0027 setting in the bitmap but we do still want to clear\nbits that have very recently been set - providing they were written to\nthe recovering device.\n\nSo split those two needs - which previously both depended on \u0027success\u0027\nand always clear the bit of the write went to all devices.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "7c8f4247986bb5c5fb1d5b1fad35461989fe8310",
      "tree": "2c76f387184ac0cc587e66519536fc83e0f79553",
      "parents": [
        "257a4b42af7586fab4eaec7f04e6896b86551843"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed Nov 23 10:18:52 2011 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed Nov 23 10:18:52 2011 +1100"
      },
      "message": "md/lock: ensure updates to page_attrs are properly locked.\n\nPage attributes are set using __set_bit rather than set_bit as\nit normally called under a spinlock so the extra atomicity is not\nneeded.\n\nHowever there are two places where we might set or clear page\nattributes without holding the spinlock.\nSo add the spinlock in those cases.\n\nThis might be the cause of occasional reports that bits a aren\u0027t\ngetting clear properly - theory is that BITMAP_PAGE_PENDING gets lost\nwhen BITMAP_PAGE_NEEDWRITE is set or cleared.  This is an\ninconvenience, not a threat to data safety.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "29d3247ea2274bca0d0b7f41fcf3b82e0a8bc44c",
      "tree": "703fae8142e179a6007390a43ff48e18321f848c",
      "parents": [
        "d1688a6d5515f1900af76a963b4bb6d9a6554cfa"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Oct 11 16:49:56 2011 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Oct 11 16:49:56 2011 +1100"
      },
      "message": "md/bitmap remove fault injection options.\n\nThese are too hard to use to be much more than noise.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "fd01b88c75a718020ff77e7f560d33835e9b58de",
      "tree": "c455d5adefd58f3263dcf265bb8ba2024523b106",
      "parents": [
        "3cb03002000f133f9f97269edefd73611eafc873"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Oct 11 16:47:53 2011 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Oct 11 16:47:53 2011 +1100"
      },
      "message": "md: remove typedefs: mddev_t -\u003e struct mddev\n\nHaving mddev_t and \u0027struct mddev_s\u0027 is ugly and not preferred\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "3cb03002000f133f9f97269edefd73611eafc873",
      "tree": "77fdb146666298b33aaeef0c05f082b6f82840fe",
      "parents": [
        "50de8df4abca1b27dbf7b2f81a56451bd8b5a7d8"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Oct 11 16:45:26 2011 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Oct 11 16:45:26 2011 +1100"
      },
      "message": "md: removing typedefs:  mdk_rdev_t -\u003e struct md_rdev\n\nThe typedefs are just annoying. \u0027mdk\u0027 probably refers to \u0027md_k.h\u0027\nwhich used to be an include file that defined this thing.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "36a4e1fe0f454146724c174bf7c1e8e76297a212",
      "tree": "57f0de83fda98e5ae1b4f66d5e993ca27386a793",
      "parents": [
        "bdc04e6b15f70a8f96d8cdfe21df159a6466b49a"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Oct 07 14:23:17 2011 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Oct 07 14:23:17 2011 +1100"
      },
      "message": "md: remove PRINTK and dprintk debugging and use pr_debug\n\nBeing able to dynamically enable these make them much more useful.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "2585f3ef8c7fffe750ef1feb2775023716d799a8",
      "tree": "3faccf1f22eb01bea55f49926a913446134df1d2",
      "parents": [
        "5a537df44d52331a3d2792ca21a296959bd2ac3a"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed Sep 21 15:37:46 2011 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed Sep 21 15:37:46 2011 +1000"
      },
      "message": "md/bitmap: improve handling of \u0027allclean\u0027.\n\nThe \u0027allclean\u0027 flag is used to cache the fact that there is nothing to\ndo, so we can avoid waking up and scanning the bitmap regularly.\n\nThe two sorts of pages that might need the attention of the bitmap\ndaemon are BITMAP_PAGE_PENDING and BITMAP_PAGE_NEEDWRITE pages.\n\nSo make sure allclean reflects exactly when there are none of those.\nSo:\n  set it before scanning all pages with either bit set.\n  clear it whenever these bits are set\n  clear it when we desire not to clear one of these bits.\n  don\u0027t clear it any other time.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "5a537df44d52331a3d2792ca21a296959bd2ac3a",
      "tree": "31907bdb1be692583702cd8be91de2a578a6f0d5",
      "parents": [
        "01f96c0a9922cd9919baf9d16febdf7016177a12"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed Sep 21 15:37:46 2011 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed Sep 21 15:37:46 2011 +1000"
      },
      "message": "md/bitmap: rename and tidy up BITMAP_PAGE_CLEAN\n\nThe flag \u0027BITMAP_PAGE_CLEAN\u0027 has a confusing name as it doesn\u0027t mean\nthat the page is clean, but rather that there are counters in the page\nwhich allow bits in the bitmap to be cleared - i.e. maybe cleaning can\nhappen.\n\nSo change it to BITMAP_PAGE_PENDING and fix some irregularities:\n - Don\u0027t set it in bitmap_init_from_disk as bitmap_set_memory_bits\n   sets it when needed\n - in bitmap_daemon_work, if we find a counter that is \u00271\u0027, but\n   need_sync is set, then set BITMAP_PAGE_PENDING again (it was\n   recently cleared) to ensure we don\u0027t forget about this bit.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e   \n"
    },
    {
      "commit": "3520fa4db7fc4ae1b0373dcecdaf720f620dab2d",
      "tree": "62c675a29c65f89ec15f4a52203e5e0f731c2aa5",
      "parents": [
        "654e8b5abc0a793f0c029128db6e4804691a383e"
      ],
      "author": {
        "name": "Jonathan Brassow",
        "email": "jbrassow@redhat.com",
        "time": "Wed Jul 27 11:00:37 2011 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed Jul 27 11:00:37 2011 +1000"
      },
      "message": "MD bitmap: Revert DM dirty log hooks\n\n\nRevert most of commit e384e58549a2e9a83071ad80280c1a9053cfd84c\n  md/bitmap: prepare for storing write-intent-bitmap via dm-dirty-log.\n\nMD should not need to use DM\u0027s dirty log - we decided to use md\u0027s\nbitmaps instead.\n\nKeeping the DIV_ROUND_UP clean-ups that were part of commit\ne384e58549a2e9a83071ad80280c1a9053cfd84c, however.\n\nSigned-off-by: Jonathan Brassow \u003cjbrassow@redhat.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "a0a02a7ad62b5615b17294c2075e4916f8d1f0a4",
      "tree": "e3f9f7582a869915d3ac8242253c822b61e77e4b",
      "parents": [
        "acfe726bdd0000a9be1b308b29fad1e9ae62178c"
      ],
      "author": {
        "name": "Akinobu Mita",
        "email": "akinobu.mita@gmail.com",
        "time": "Wed Jul 27 11:00:36 2011 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed Jul 27 11:00:36 2011 +1000"
      },
      "message": "md: use proper little-endian bitops\n\nUsing __test_and_{set,clear}_bit_le() with ignoring its return value\ncan be replaced with __{set,clear}_bit_le().\n\nSigned-off-by: Akinobu Mita \u003cakinobu.mita@gmail.com\u003e\nCc: NeilBrown \u003cneilb@suse.de\u003e\nCc: linux-raid@vger.kernel.org\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "97b3d4aacfbd7186faf34597fcf1f55b8579be17",
      "tree": "3ccd769c8003b3b999116bf9c1a09f0308d9806c",
      "parents": [
        "27d5ea04d08bea37bf651090e5f3c573d2390df8"
      ],
      "author": {
        "name": "Namhyung Kim",
        "email": "namhyung@gmail.com",
        "time": "Thu Jun 09 11:43:01 2011 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Jun 09 11:43:01 2011 +1000"
      },
      "message": "md/bitmap: remove unused fields from struct bitmap\n\nGet rid of -\u003esyncchunk and -\u003ecounter_bits since they\u0027re never used.\n\nAlso discard COUNTER_BYTE_RATIO which is unused.\n\nSigned-off-by: Namhyung Kim \u003cnamhyung@gmail.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "27d5ea04d08bea37bf651090e5f3c573d2390df8",
      "tree": "cb951827fa265699eb5179c741f202ca4d82a154",
      "parents": [
        "01393f3d5836b7d62e925e6f4658a7eb22b83a11"
      ],
      "author": {
        "name": "Namhyung Kim",
        "email": "namhyung@gmail.com",
        "time": "Thu Jun 09 11:42:57 2011 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Jun 09 11:42:57 2011 +1000"
      },
      "message": "md/bitmap: use proper accessor macro\n\nUse COUNTER()/NEEDED() macro instead of open-coding them.\n\nSigned-off-by: Namhyung Kim \u003cnamhyung@gmail.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "d744540cd39e93976c4c8401e140232444ef3b0b",
      "tree": "66b818b089b1068ca02f05ed5e7be896fc311d18",
      "parents": [
        "d6b212f4b19da5301e6b6eca562e5c7a2a6e8c8d"
      ],
      "author": {
        "name": "Jonathan Brassow",
        "email": "jbrassow@redhat.com",
        "time": "Wed Jun 08 18:01:10 2011 -0500"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Jun 09 11:42:36 2011 +1000"
      },
      "message": "MD: use is_power_of_2 macro\n\nMake use of is_power_of_2 macro.\n\nSigned-off-by: Jonathan Brassow \u003cjbrassow@redhat.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "9c81075f436f867f580c2edf2350c0898cffc9d0",
      "tree": "025ec9792e7f5700d9383ba15f953fb0d1f07ec9",
      "parents": [
        "076f968b37f0232d883749da8f5031df5dea7ade"
      ],
      "author": {
        "name": "Jonathan Brassow",
        "email": "jbrassow@redhat.com",
        "time": "Wed Jun 08 17:59:30 2011 -0500"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Jun 09 11:41:36 2011 +1000"
      },
      "message": "MD: support initial bitmap creation in-kernel\n\nAdd bitmap support to the device-mapper specific metadata area.\n\nThis patch allows the creation of the bitmap metadata area upon\ninitial array creation via device-mapper.\n\nSigned-off-by: Jonathan Brassow \u003cjbrassow@redhat.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "8258c53208d7a9b7207e7d4dae36d2ea384cb278",
      "tree": "8ae5e67cde859e16dcc663c49269d025b9f6ce4b",
      "parents": [
        "bedd86b7773fd97f0d708cc0c371c8963ba7ba9a"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed May 11 14:26:30 2011 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed May 11 14:26:30 2011 +1000"
      },
      "message": "md/bitmap: fix saving of events_cleared and other state.\n\nIf a bitmap is found to be \u0027stale\u0027 the events_cleared value\nis set to match \u0027events\u0027.\nHowever if the array is degraded this does not get stored on disk.\nThis can subsequently lead to incorrect behaviour.\n\nSo change bitmap_update_sb to always update events_cleared in the\nsuperblock from the known events_cleared.\nFor neatness also set -\u003estate from -\u003eflags.\nThis requires updating -\u003estate whenever we update -\u003eflags, which makes\nsense anyway.\n\nThis is suitable for any active -stable release.\n\ncc: stable@kernel.org\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "6c5103890057b1bb781b26b7aae38d33e4c517d8",
      "tree": "e6e57961dcddcb5841acb34956e70b9dc696a880",
      "parents": [
        "3dab04e6978e358ad2307bca563fabd6c5d2c58b",
        "9d2e157d970a73b3f270b631828e03eb452d525e"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Mar 24 10:16:26 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Mar 24 10:16:26 2011 -0700"
      },
      "message": "Merge branch \u0027for-2.6.39/core\u0027 of git://git.kernel.dk/linux-2.6-block\n\n* \u0027for-2.6.39/core\u0027 of git://git.kernel.dk/linux-2.6-block: (65 commits)\n  Documentation/iostats.txt: bit-size reference etc.\n  cfq-iosched: removing unnecessary think time checking\n  cfq-iosched: Don\u0027t clear queue stats when preempt.\n  blk-throttle: Reset group slice when limits are changed\n  blk-cgroup: Only give unaccounted_time under debug\n  cfq-iosched: Don\u0027t set active queue in preempt\n  block: fix non-atomic access to genhd inflight structures\n  block: attempt to merge with existing requests on plug flush\n  block: NULL dereference on error path in __blkdev_get()\n  cfq-iosched: Don\u0027t update group weights when on service tree\n  fs: assign sb-\u003es_bdi to default_backing_dev_info if the bdi is going away\n  block: Require subsystems to explicitly allocate bio_set integrity mempool\n  jbd2: finish conversion from WRITE_SYNC_PLUG to WRITE_SYNC and explicit plugging\n  jbd: finish conversion from WRITE_SYNC_PLUG to WRITE_SYNC and explicit plugging\n  fs: make fsync_buffers_list() plug\n  mm: make generic_writepages() use plugging\n  blk-cgroup: Add unaccounted time to timeslice_used.\n  block: fixup plugging stubs for !CONFIG_BLOCK\n  block: remove obsolete comments for blkdev_issue_zeroout.\n  blktrace: Use rq-\u003ecmd_flags directly in blk_add_trace_rq.\n  ...\n\nFix up conflicts in fs/{aio.c,super.c}\n"
    },
    {
      "commit": "6b33aff368def952be78102c0935ebd219f9a748",
      "tree": "d8f06ac51fb13bf34d1fc3791db02761c8662a22",
      "parents": [
        "3cdc7125c364b2baad8aba69c058b26d3dca5f52"
      ],
      "author": {
        "name": "Akinobu Mita",
        "email": "akinobu.mita@gmail.com",
        "time": "Wed Mar 23 16:42:13 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Mar 23 19:46:20 2011 -0700"
      },
      "message": "md: use little-endian bitops\n\nAs a preparation for removing ext2 non-atomic bit operations from\nasm/bitops.h.  This converts ext2 non-atomic bit operations to\nlittle-endian bit operations.\n\nSigned-off-by: Akinobu Mita \u003cakinobu.mita@gmail.com\u003e\nAcked-by: NeilBrown \u003cneilb@suse.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "721a9602e6607417c6bc15b18e97a2f35266c690",
      "tree": "4987991e43f35b8b3b685fea0040c5265b578996",
      "parents": [
        "cf15900e1209d5b46ec2d24643adbf561830935f"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Wed Mar 09 11:56:30 2011 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Thu Mar 10 08:52:27 2011 +0100"
      },
      "message": "block: kill off REQ_UNPLUG\n\nWith the plugging now being explicitly controlled by the\nsubmitter, callers need not pass down unplugging hints\nto the block layer. If they want to unplug, it\u0027s because they\nmanually plugged on their own - in which case, they should just\nunplug at will.\n\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "7eaceaccab5f40bbfda044629a6298616aeaed50",
      "tree": "33954d12f63e25a47eb6d86ef3d3d0a5e62bf752",
      "parents": [
        "73c101011926c5832e6e141682180c4debe2cf45"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Thu Mar 10 08:52:07 2011 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Thu Mar 10 08:52:07 2011 +0100"
      },
      "message": "block: remove per-queue plugging\n\nCode has been converted over to the new explicit on-stack plugging,\nand delay users have been converted to use the new API for that.\nSo lets kill off the old plugging along with aops-\u003esync_page().\n\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "75d3da43cb74d2e5fb87816dbfecb839cd97c7f4",
      "tree": "27074aceb801ada315329591f32c938b36150ed9",
      "parents": [
        "a6ff7e089c7fca813c956ccbed824087e89a3a49"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Jan 14 09:14:34 2011 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Jan 14 09:14:34 2011 +1100"
      },
      "message": "md: Don\u0027t let implementation detail of curr_resync leak out through sysfs.\n\nmddev-\u003ecurr_resync has artificial values of \u00271\u0027 and \u00272\u0027 which are used\nby the code which ensures only one resync is happening at a time on\nany given device.\n\nThese values are internal and should never be exposed to user-space\n(except when translated appropriately as in the \u0027pending\u0027 status in\n/proc/mdstat).\n\nUnfortunately they are as -\u003ecurr_resync is assigned to\n-\u003ecurr_resync_completed and that value is directly visible through\nsysfs.\n\nSo change the assignments to -\u003ecurr_resync_completed to get the same\nvalued from elsewhere in a form that doesn\u0027t have the magic \u00271\u0027 or \u00272\u0027\nvalues.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "a6ff7e089c7fca813c956ccbed824087e89a3a49",
      "tree": "6537f72a2431c30601736676e9b1f89a7f1fe52e",
      "parents": [
        "ccebd4c4159462c96397ae9af9c667bb394d7b70"
      ],
      "author": {
        "name": "Jonathan Brassow",
        "email": "jbrassow@redhat.com",
        "time": "Fri Jan 14 09:14:34 2011 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Jan 14 09:14:34 2011 +1100"
      },
      "message": "md: separate meta and data devs\n\nAllow the metadata to be on a separate device from the\ndata.\n\nThis doesn\u0027t mean the data and metadata will by on separate\nphysical devices - it simply gives device-mapper and userspace\ntools more flexibility.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "ccebd4c4159462c96397ae9af9c667bb394d7b70",
      "tree": "04554f0e7607d906c6b09f31a995fca0dd40c5b5",
      "parents": [
        "57b2caa394393f8870ed41bdcc38a7542593018f"
      ],
      "author": {
        "name": "Jonathan Brassow",
        "email": "jbrassow@redhat.com",
        "time": "Fri Jan 14 09:14:33 2011 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Jan 14 09:14:33 2011 +1100"
      },
      "message": "md-new-param-to_sync_page_io\n\nAdd new parameter to \u0027sync_page_io\u0027.\n\nThe new parameter allows us to distinguish between metadata and data\noperations.  This becomes important later when we add the ability to\nuse separate devices for data and metadata.\n\nSigned-off-by: Jonathan Brassow \u003cjbrassow@redhat.com\u003e\n"
    },
    {
      "commit": "be2a2656eef95c32ca73e7a6a8c85671aa92e3f1",
      "tree": "caea637e7247c0d57d8b1fe0042a5b7a0994ed9c",
      "parents": [
        "a167f663243662aa9153c01086580a11cde9ffdc"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed Oct 27 15:37:41 2010 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Oct 29 16:40:32 2010 +1100"
      },
      "message": "md: unplug writes to external bitmaps.\n\nWhen writing to an \u0027external\u0027 bitmap we don\u0027t currently unplug the\ndevice before waiting, so we can get a 3msec delay each time;\nSo use REQ_UNPLUG to force and unplug.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "2b193363ef68667ad717a6723165e0dccf99470f",
      "tree": "bd45d5186f0edf2b546c4503d794b479d126ad1f",
      "parents": [
        "1c4588e9c19cae6209a28c9da2f16a18a610b935"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed Oct 27 15:16:40 2010 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Oct 28 17:36:11 2010 +1100"
      },
      "message": "md: change type of first arg to sync_page_io.\n\nCurrently sync_page_io takes a \u0027bdev\u0027.\nEvery caller passes \u0027rdev-\u003ebdev\u0027.\nWe will soon want another field out of the rdev in sync_page_io,\nSo just pass the rdev instead of the bdev out of it.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "57dab0bdf689d42972975ec646d862b0900a4bf3",
      "tree": "d136f69b8a68850e40844397ebaffde31787c988",
      "parents": [
        "4b532c9b8c87eb8e51605c4d08dfb5139c758dc5"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Oct 19 10:03:39 2010 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Oct 28 17:32:26 2010 +1100"
      },
      "message": "md: use sector_t in bitmap_get_counter\n\nbitmap_get_counter returns the number of sectors covered\nby the counter in a pass-by-reference variable.\nIn some cases this can be very large, so make it a sector_t\nfor safety.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n\n"
    },
    {
      "commit": "5c04f5512f8134c75cd36e5b0354e10e330f4e6e",
      "tree": "7733d3a123e8be8782d345e6310a6c208bfc6606",
      "parents": [
        "db8d9d3591f77cc6b66248b2cdfa1c43deee5ec9"
      ],
      "author": {
        "name": "Vasiliy Kulikov",
        "email": "segooon@gmail.com",
        "time": "Fri Oct 01 14:18:12 2010 -0700"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Oct 07 12:02:50 2010 +1100"
      },
      "message": "md: check return code of read_sb_page\n\nFunction read_sb_page may return ERR_PTR(...). Check for it.\n\nSigned-off-by: Vasiliy Kulikov \u003csegooon@gmail.com\u003e\nCc: Neil Brown \u003cneilb@suse.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "070dc6dd7103b6b3f7e4d46e754354a5c15f366e",
      "tree": "173e72d08b2070d496c203a6d5156b9a2ad2808c",
      "parents": [
        "bd52b746262c8d77e73903d6608014fb2fcdcd9d"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Aug 30 17:33:34 2010 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Aug 30 18:06:21 2010 +1000"
      },
      "message": "md: resolve confusion of MD_CHANGE_CLEAN\n\nMD_CHANGE_CLEAN is used for two different purposes and this leads to\nconfusion.\nOne of the purposes is largely mirrored by MD_CHANGE_PENDING which is\nnot used for anything else, so have MD_CHANGE_PENDING take over that\npurpose fully.\n\nThe two purposes are:\n 1/ tell md_update_sb that an update is needed and that it is just a\n   clean/dirty transition.\n 2/ tell user-space that an transition from clean to dirty is pending\n    (something wants to write), and tell te kernel (by clearin the\n    flag) that the transition is OK.\n\nThe first purpose remains wit MD_CHANGE_CLEAN, the second is moved\nfully to MD_CHANGE_PENDING.\n\nThis means that various places which conditionally set or cleared\nMD_CHANGE_CLEAN no longer need to be conditional.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "69e51b449d383e97b1b9f890f8378c96e9e17346",
      "tree": "650123fa4f08e8fa7f348a4ca875c59c129e5d84",
      "parents": [
        "e384e58549a2e9a83071ad80280c1a9053cfd84c"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Jun 01 19:37:35 2010 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Jul 26 13:21:34 2010 +1000"
      },
      "message": "md/bitmap:  separate out loading a bitmap from initialising the structures.\n\ndm makes this distinction between -\u003ectr and -\u003eresume, so we need to\ntoo.\n\nAlso get the new bitmap_load to clear out the bitmap first, as this is\nmost consistent with the dm suspend/resume approach\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "e384e58549a2e9a83071ad80280c1a9053cfd84c",
      "tree": "805619143612ddc8cc71a45dd4522393c23a576f",
      "parents": [
        "ef4256733506f2459a0c436b62267d22a3f0cec6"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Jun 01 19:37:34 2010 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Jul 26 13:21:34 2010 +1000"
      },
      "message": "md/bitmap: prepare for storing write-intent-bitmap via dm-dirty-log.\n\nThis allows md/raid5 to fully work as a dm target.\n\nNormally md uses a \u0027filemap\u0027 which contains a list of pages of bits\neach of which may be written separately.\ndm-log uses and all-or-nothing approach to writing the log, so\nwhen using a dm-log, -\u003efilemap is NULL and the flags normally stored\nin filemap_attr are stored in -\u003elogattrs instead.\n\n\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "ef4256733506f2459a0c436b62267d22a3f0cec6",
      "tree": "c73e1849052f56a8f6033498f7fbd65c6259c776",
      "parents": [
        "b63d7c2e29bf9cc94989806f2df0cfca4976b830"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Jun 01 19:37:33 2010 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Jul 26 13:21:32 2010 +1000"
      },
      "message": "md/bitmap: optimise scanning of empty bitmaps.\n\nA bitmap is stored as one page per 2048 bits.\nIf none of the bits are set, the page is not allocated.\n\nWhen bitmap_get_counter finds that a page isn\u0027t allocate,\nit just reports that one bit work of space isn\u0027t flagged,\nrather than reporting that 2048 bits worth of space are\nunflagged.\nThis can cause searches for flagged bits (e.g. bitmap_close_sync)\nto do more work than is really necessary.\n\nSo change bitmap_get_counter (when creating) to report a number of\nblocks that more accurately reports the range of the device for which\nno counter currently exists.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "b63d7c2e29bf9cc94989806f2df0cfca4976b830",
      "tree": "fdb82527ca458769d3c7381375873931bfb23b19",
      "parents": [
        "5ff5afffe6527543866a47ffab12769427283917"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Jun 01 19:37:33 2010 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Jul 26 13:21:32 2010 +1000"
      },
      "message": "md/bitmap: clean up plugging calls.\n\n1/ use md_unplug in bitmap.c as we will soon be using bitmaps under\n  arrays with no queue attached.\n\n2/ Don\u0027t bother plugging the queue when we set a bit in the bitmap.\n   The reason for this was to encourage as many bits as possible to\n   get set before we unplug and write stuff out.\n   However every personality already plugs the queue after\n   bitmap_startwrite either directly (raid1/raid10) or be setting\n   STRIPE_BIT_DELAY which causes the queue to be plugged later\n   (raid5).\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "5ff5afffe6527543866a47ffab12769427283917",
      "tree": "b37cf6ad3557ffada21aa05174bb055ea8e6c173",
      "parents": [
        "ac2f40be46ce6ab3bec4c8c297d6923f941741ce"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Jun 01 19:37:32 2010 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Jul 26 13:21:31 2010 +1000"
      },
      "message": "md/bitmap: reduce dependence on sysfs.\n\nFor dm-raid45 we will want to use bitmaps in dm-targets which don\u0027t\nhave entries in sysfs, so cope with the mddev not living in sysfs.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "ac2f40be46ce6ab3bec4c8c297d6923f941741ce",
      "tree": "f1abc7d627edaaf450dbff3e68a902ff667a3c92",
      "parents": [
        "9f7c2220017771253d7d10b3cc017cb79eeac0fb"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Jun 01 19:37:31 2010 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Jul 26 13:07:22 2010 +1000"
      },
      "message": "md/bitmap: white space clean up and similar.\n\nFixes some whitespace problems\nFixed some checkpatch.pl complaints.\nReplaced kmalloc ... memset(0), with kzalloc\nFixed an unlikely memory leak on an error path.\nReformatted a number of \u0027if/else\u0027 sets, sometimes\nreplacing goto with an else clause.\nRemoved some old comments and commented-out code.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "676e42d896ab6967859fabbb06f4e11b9615cbcf",
      "tree": "efab4dffe8e930ec9ef51a5a4d4fd04ffe3749b1",
      "parents": [
        "f4be6b43f1ac60dff00ef0923ee43b0e08872947"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Jun 01 19:37:26 2010 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Jul 26 12:52:27 2010 +1000"
      },
      "message": "md: be more careful setting MD_CHANGE_CLEAN\n\nWhen MD_CHANGE_CLEAN is set we might block in md_write_start.\nSo we should only set it when fairly sure that something will clear\nit.\n\nThere are two places where it is set so as to encourage a metadata\nupdate to record the progress of resync/recovery.  This should only\nbe done if the internal metadata update mechanisms are in use, which\ncan be tested by by inspecting \u0027-\u003epersistent\u0027.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "e8bebe2f71d26871b0970ae1d9cf0ed3cdd9569d",
      "tree": "c0d82cbd11daaf579b74121c6641d58947091094",
      "parents": [
        "6109e2ce2600e2db26cd0424bb9c6ed019723288",
        "82f3952c02add60b15eea9151d4d99b6b82066c6"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri May 21 19:37:45 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri May 21 19:37:45 2010 -0700"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs-2.6\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs-2.6: (69 commits)\n  fix handling of offsets in cris eeprom.c, get rid of fake on-stack files\n  get rid of home-grown mutex in cris eeprom.c\n  switch ecryptfs_write() to struct inode *, kill on-stack fake files\n  switch ecryptfs_get_locked_page() to struct inode *\n  simplify access to ecryptfs inodes in -\u003ereadpage() and friends\n  AFS: Don\u0027t put struct file on the stack\n  Ban ecryptfs over ecryptfs\n  logfs: replace inode uid,gid,mode initialization with helper function\n  ufs: replace inode uid,gid,mode initialization with helper function\n  udf: replace inode uid,gid,mode init with helper\n  ubifs: replace inode uid,gid,mode initialization with helper function\n  sysv: replace inode uid,gid,mode initialization with helper function\n  reiserfs: replace inode uid,gid,mode initialization with helper function\n  ramfs: replace inode uid,gid,mode initialization with helper function\n  omfs: replace inode uid,gid,mode initialization with helper function\n  bfs: replace inode uid,gid,mode initialization with helper function\n  ocfs2: replace inode uid,gid,mode initialization with helper function\n  nilfs2: replace inode uid,gid,mode initialization with helper function\n  minix: replace inode uid,gid,mode init with helper\n  ext4: replace inode uid,gid,mode init with helper\n  ...\n\nTrivial conflict in fs/fs-writeback.c (mark bitfields unsigned)\n"
    },
    {
      "commit": "19fdb9eefb21b72edbc365b838502780c392bad6",
      "tree": "deae04c48532d6eab64ed4b0396737bb854b5506",
      "parents": [
        "be6800a73aa2f3dc14744c3b80e676d189789f04",
        "3ff195b011d7decf501a4d55aeed312731094796"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Sat May 22 08:31:36 2010 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Sat May 22 08:31:36 2010 +1000"
      },
      "message": "Merge commit \u00273ff195b011d7decf501a4d55aeed312731094796\u0027 into for-linus\n\nConflicts:\n\tdrivers/md/md.c\n\n- Resolved conflict in md_update_sb\n- Added extra \u0027NULL\u0027 arg to new instance of sysfs_get_dirent.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "8018ab057480974e7f26a387bf4ce040e9a5f6f1",
      "tree": "98298180bf60797a028eca4f24234dc67d38a9d4",
      "parents": [
        "e970a573ce30a3976234dcfb67906c164b0df9ee"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@lst.de",
        "time": "Mon Mar 22 17:32:25 2010 +0100"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Fri May 21 18:31:21 2010 -0400"
      },
      "message": "sanitize vfs_fsync calling conventions\n\nNow that the last user passing a NULL file pointer is gone we can remove\nthe redundant dentry argument and associated hacks inside vfs_fsynmc_range.\n\nThe next step will be removig the dentry argument from -\u003efsync, but given\nthe luck with the last round of method prototype changes I\u0027d rather\ndefer this until after the main merge window.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "3ff195b011d7decf501a4d55aeed312731094796",
      "tree": "8cfdc330abbf82893955f2d7d6e96efee81bfd7c",
      "parents": [
        "bc451f2058238013e1cdf4acd443c01734d332f0"
      ],
      "author": {
        "name": "Eric W. Biederman",
        "email": "ebiederm@xmission.com",
        "time": "Tue Mar 30 11:31:26 2010 -0700"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@suse.de",
        "time": "Fri May 21 09:37:31 2010 -0700"
      },
      "message": "sysfs: Implement sysfs tagged directory support.\n\nThe problem.  When implementing a network namespace I need to be able\nto have multiple network devices with the same name.  Currently this\nis a problem for /sys/class/net/*, /sys/devices/virtual/net/*, and\npotentially a few other directories of the form /sys/ ... /net/*.\n\nWhat this patch does is to add an additional tag field to the\nsysfs dirent structure.  For directories that should show different\ncontents depending on the context such as /sys/class/net/, and\n/sys/devices/virtual/net/ this tag field is used to specify the\ncontext in which those directories should be visible.  Effectively\nthis is the same as creating multiple distinct directories with\nthe same name but internally to sysfs the result is nicer.\n\nI am calling the concept of a single directory that looks like multiple\ndirectories all at the same path in the filesystem tagged directories.\n\nFor the networking namespace the set of directories whose contents I need\nto filter with tags can depend on the presence or absence of hotplug\nhardware or which modules are currently loaded.  Which means I need\na simple race free way to setup those directories as tagged.\n\nTo achieve a reace free design all tagged directories are created\nand managed by sysfs itself.\n\nUsers of this interface:\n- define a type in the sysfs_tag_type enumeration.\n- call sysfs_register_ns_types with the type and it\u0027s operations\n- sysfs_exit_ns when an individual tag is no longer valid\n\n- Implement mount_ns() which returns the ns of the calling process\n  so we can attach it to a sysfs superblock.\n- Implement ktype.namespace() which returns the ns of a syfs kobject.\n\nEverything else is left up to sysfs and the driver layer.\n\nFor the network namespace mount_ns and namespace() are essentially\none line functions, and look to remain that.\n\nTags are currently represented a const void * pointers as that is\nboth generic, prevides enough information for equality comparisons,\nand is trivial to create for current users, as it is just the\nexisting namespace pointer.\n\nThe work needed in sysfs is more extensive.  At each directory\nor symlink creating I need to check if the directory it is being\ncreated in is a tagged directory and if so generate the appropriate\ntag to place on the sysfs_dirent.  Likewise at each symlink or\ndirectory removal I need to check if the sysfs directory it is\nbeing removed from is a tagged directory and if so figure out\nwhich tag goes along with the name I am deleting.\n\nCurrently only directories which hold kobjects, and\nsymlinks are supported.  There is not enough information\nin the current file attribute interfaces to give us anything\nto discriminate on which makes it useless, and there are\nno potential users which makes it an uninteresting problem\nto solve.\n\nSigned-off-by: Eric W. Biederman \u003cebiederm@xmission.com\u003e\nSigned-off-by: Benjamin Thery \u003cbenjamin.thery@bull.net\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@suse.de\u003e\n\n"
    },
    {
      "commit": "e555190d82c0f58e825e3cbd9e6ebe2e7ac713bd",
      "tree": "ea9c8e548c4d5eb5fc903bab05af3bda4192ed00",
      "parents": [
        "d754c5ae1ff76b20d3ecde8ad666d7865eada8ae"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed Mar 31 11:21:44 2010 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue May 18 15:27:57 2010 +1000"
      },
      "message": "md/raid1: delay reads that could overtake behind-writes.\n\nWhen a raid1 array is configured to support write-behind\non some devices, it normally only reads from other devices.\nIf all devices are write-behind (because the rest have failed)\nit is possible for a read request to be serviced before a\nbehind-write request, which would appear as data corruption.\n\nSo when forced to read from a WriteMostly device, wait for any\nwrite-behind to complete, and don\u0027t start any more behind-writes.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "7b92813c3c0b6990f14838e3985fb385d2655d0c",
      "tree": "c072a6684185f2c18734e704c488953250e8353a",
      "parents": [
        "696fcd535b5a8cfc0617e9cf1d9d69a13895cc1e"
      ],
      "author": {
        "name": "H Hartley Sweeten",
        "email": "hartleys@visionengravers.com",
        "time": "Mon Mar 08 16:02:40 2010 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue May 18 15:27:46 2010 +1000"
      },
      "message": "drivers/md: Remove unnecessary casts of void *\n\nvoid pointers do not need to be cast to other pointer types.\n\nSigned-off-by: H Hartley Sweeten \u003chsweeten@visionengravers.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "696fcd535b5a8cfc0617e9cf1d9d69a13895cc1e",
      "tree": "b9f55833c83a41a6e047f0de82b17d9753ad0542",
      "parents": [
        "ee8b81b03dffa1c0075553d01c557714aedb85a1"
      ],
      "author": {
        "name": "Paul Clements",
        "email": "paul.clements@steeleye.com",
        "time": "Mon Mar 08 16:02:37 2010 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue May 18 15:27:46 2010 +1000"
      },
      "message": "md: expose max value of behind writes counter\n\nKeep track of the maximum number of concurrent write-behind requests\nfor an md array and exposed this number in sysfs at\n   md/bitmap/max_backlog_used\n\nWriting any value to this file will clear it.\n\nThis allows userspace to be involved in tuning bitmap/backlog.\n\nSigned-off-by: Paul Clements \u003cpaul.clements@steeleye.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "ffa23322b1596bb1a115e767d4251b62842adc23",
      "tree": "137daf8289ae910b3c6eb4b38de98cc957f60233",
      "parents": [
        "ece5cff0da9e696c360fff592cb5f51b6419e4d6"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Dec 14 12:49:56 2009 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Dec 14 12:51:41 2009 +1100"
      },
      "message": "md/bitmap: update dirty flag when bitmap bits are explicitly set.\n\nThere is a sysfs file which allows bits in the write-intent\nbitmap to be explicit set - indicating that the block is thought\nto be \u0027dirty\u0027.\nWhen this happens we should really set recovery_cp backwards\nto include the block to reflect this dirtiness.\n\nIn particular, a \u0027resync\u0027 process will refuse to start if\nrecovery_cp is beyond the end of the array, so this is needed\nto allow a resync to be triggered.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "ece5cff0da9e696c360fff592cb5f51b6419e4d6",
      "tree": "1c5cab0e89ae466be9edb476ceb91e5c898fafa6",
      "parents": [
        "624ce4f5658fa3e0303c1217bba2706142fe7568"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Dec 14 12:49:56 2009 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Dec 14 12:51:41 2009 +1100"
      },
      "message": "md: Support write-intent bitmaps with externally managed metadata.\n\nIn this case, the metadata needs to not be in the same\nsector as the bitmap.\nmd will not read/write any bitmap metadata.  Config must be\ndone via sysfs and when a recovery makes the array non-degraded\nagain, writing \u0027true\u0027 to \u0027bitmap/can_clear\u0027 will allow bits in\nthe bitmap to be cleared again.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "624ce4f5658fa3e0303c1217bba2706142fe7568",
      "tree": "d2ceb07051efba40b01ddd76cfc93f4ed89ed831",
      "parents": [
        "43a705076e51c5af21ec4260a35699775ea298f5"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Dec 14 12:49:56 2009 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Dec 14 12:51:41 2009 +1100"
      },
      "message": "md/bitmap: move setting of daemon_lastrun out of bitmap_read_sb\n\nSetting daemon_lastrun really has nothing to do with reading\nthe bitmap superblock, it just happens to be needed at the same time.\nbitmap_read_sb is about to become options, so move that code out\nto after the call to bitmap_read_sb.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "43a705076e51c5af21ec4260a35699775ea298f5",
      "tree": "ff8e161d841c41992dbbcca2a844816411941c3c",
      "parents": [
        "72e02075a33f739e21430262f71da8e82db9dbb3"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Dec 14 12:49:55 2009 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Dec 14 12:51:41 2009 +1100"
      },
      "message": "md: support updating bitmap parameters via sysfs.\n\nA new attribute directory \u0027bitmap\u0027 in \u0027md\u0027 is created which\ncontains files for configuring the bitmap.\n\u0027location\u0027 identifies where the bitmap is, either \u0027none\u0027,\nor \u0027file\u0027 or \u0027sector offset from metadata\u0027.\nWriting \u0027location\u0027 can create or remove a bitmap.\nAdding a \u0027file\u0027 bitmap this way is not yet supported.\n\u0027chunksize\u0027 and \u0027time_base\u0027 must be set before \u0027location\u0027\ncan be set.\n\n\u0027chunksize\u0027 can be set before creating a bitmap, but is\ncurrently always over-ridden by the bitmap superblock.\n\n\u0027time_base\u0027 and \u0027backlog\u0027 can be updated at any time.\n\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\nReviewed-by: Andre Noll \u003cmaan@systemlinux.org\u003e\n"
    },
    {
      "commit": "f6af949c5672115313cc3c976d85b0533f607d7e",
      "tree": "6d00471bd4ee7c3aee67f9ad4c0a3023109b88e0",
      "parents": [
        "9cd30fdc33cde9ae4ac55a1ccbbb89f3f7b9b2f2"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Dec 14 12:49:54 2009 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Dec 14 12:51:41 2009 +1100"
      },
      "message": "md: support bitmap offset appropriate for external-metadata arrays.\n\nFor md arrays were metadata is managed externally, the kernel does not\nknow about a superblock so the superblock offset is 0.\nIf we want to have a write-intent-bitmap near the end of the\ndevices of such an array, we should support sector_t sized offset.\nWe need offset be possibly negative for when the bitmap is before\nthe metadata, so use loff_t instead.\n\nAlso add sanity check that bitmap does not overlap with data.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "9cd30fdc33cde9ae4ac55a1ccbbb89f3f7b9b2f2",
      "tree": "b6a4e0303fe3261892f24f26d7ecebf06a6be1a9",
      "parents": [
        "1b04be96f6910ee415287bf0d5309c7d4c94bd2b"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Dec 14 12:49:54 2009 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Dec 14 12:51:41 2009 +1100"
      },
      "message": "md: remove needless setting of thread-\u003etimeout in raid10_quiesce\n\nAs bitmap_create and bitmap_destroy already set thread-\u003etimeout\nas appropriate, there is no need to do it in raid10_quiesce.\nThere is a possible need to wake the thread after the timeout\nhas been set low, but it is better to do that where the timeout\nis actually set low, in bitmap_create.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "1b04be96f6910ee415287bf0d5309c7d4c94bd2b",
      "tree": "9ea6dbd8e3d857c468b12d698c629786903da905",
      "parents": [
        "42a04b5078ce73a32f85762551d5703c5bd646a1"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Dec 14 12:49:53 2009 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Dec 14 12:51:41 2009 +1100"
      },
      "message": "md: change daemon_sleep to be in \u0027jiffies\u0027 rather than \u0027seconds\u0027.\n\nThis removes a lot of multiplications by HZ.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "42a04b5078ce73a32f85762551d5703c5bd646a1",
      "tree": "3ef384933cd33d000516c292712da9a99e273360",
      "parents": [
        "c3d9714e88c8685cf9bc837c3241fc005f95fb82"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Dec 14 12:49:53 2009 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Dec 14 12:51:41 2009 +1100"
      },
      "message": "md: move offset, daemon_sleep and chunksize out of bitmap structure\n\n... and into bitmap_info.  These are all configuration parameters\nthat need to be set before the bitmap is created.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "c3d9714e88c8685cf9bc837c3241fc005f95fb82",
      "tree": "dd11e16ec911983bb7452bb4fb092769ba612e3b",
      "parents": [
        "709ae4879ae33628ded276ce7da8cd5acfec476b"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Dec 14 12:49:52 2009 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Dec 14 12:51:41 2009 +1100"
      },
      "message": "md: collect bitmap-specific fields into one structure.\n\nIn preparation for making bitmap fields configurable via sysfs,\nstart tidying up by making a single structure to contain the\nconfiguration fields.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "aa5cbd103887011b4830355f88fb055f9ad2d556",
      "tree": "92ef7c80999c6d0bfc6fef9a9cd3e4a75ee16c06",
      "parents": [
        "f40542532e96dda5506eb76badea322f2ae4731c"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Dec 14 12:49:46 2009 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Dec 14 12:49:46 2009 +1100"
      },
      "message": "md/bitmap: protect against bitmap removal while being updated.\n\nA write intent bitmap can be removed from an array while the\narray is active.\nWhen this happens, all IO is suspended and flushed before the\nbitmap is removed.\nHowever it is possible that bitmap_daemon_work is still running to\nclear old bits from the bitmap.  If it is, it can dereference the\nbitmap after it has been freed.\n\nSo introduce a new mutex to protect bitmap_daemon_work and get it\nbefore destroying a bitmap.\n\nThis is suitable for any current -stable kernel.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\nCc: stable@kernel.org\n"
    },
    {
      "commit": "ae8fa2831bbc5092ee9d1b90e623af881cf27140",
      "tree": "1a9e1aa4192ce9a5c57ea93d777c4fec2322b9e9",
      "parents": [
        "ed9bfdf1a40952fd0f8094ec77f876b84ead69af"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Oct 16 15:56:01 2009 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Oct 16 15:56:01 2009 +1100"
      },
      "message": "md: remove clumsy usage of do_sync_mapping_range from bitmap code\n\nand replace with vfs_fsync which is much neater (but wasn\u0027t exported,\nor even in existence at the time the code was written).\n\nCc: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "ee305acef5c7841dc25cc32e84bb94f744e1e9b9",
      "tree": "f952a19fce593391e5cbd4a3bb4087d214a8ddc0",
      "parents": [
        "a9f326ebf22a0de776815240fb76dabe139397ea"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed Sep 23 18:06:44 2009 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed Sep 23 18:06:44 2009 +1000"
      },
      "message": "md: remove sparse warnings about lock context.\n\nThere was a real error here on a failure path where we\nincorrectly call rcu_read_unlock.\n\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "c9059598ea8981d02356eead3188bf7fa4d717b8",
      "tree": "03e73b20a30e988da7c6a3e0ad93b2dc5843274d",
      "parents": [
        "0a33f80a8373eca7f4bea3961d1346c3815fa5ed",
        "b0fd271d5fba0b2d00888363f3869e3f9b26caa9"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jun 11 10:52:27 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jun 11 11:10:35 2009 -0700"
      },
      "message": "Merge branch \u0027for-2.6.31\u0027 of git://git.kernel.dk/linux-2.6-block\n\n* \u0027for-2.6.31\u0027 of git://git.kernel.dk/linux-2.6-block: (153 commits)\n  block: add request clone interface (v2)\n  floppy: fix hibernation\n  ramdisk: remove long-deprecated \"ramdisk\u003d\" boot-time parameter\n  fs/bio.c: add missing __user annotation\n  block: prevent possible io_context-\u003erefcount overflow\n  Add serial number support for virtio_blk, V4a\n  block: Add missing bounce_pfn stacking and fix comments\n  Revert \"block: Fix bounce limit setting in DM\"\n  cciss: decode unit attention in SCSI error handling code\n  cciss: Remove no longer needed sendcmd reject processing code\n  cciss: change SCSI error handling routines to work with interrupts enabled.\n  cciss: separate error processing and command retrying code in sendcmd_withirq_core()\n  cciss: factor out fix target status processing code from sendcmd functions\n  cciss: simplify interface of sendcmd() and sendcmd_withirq()\n  cciss: factor out core of sendcmd_withirq() for use by SCSI error handling code\n  cciss: Use schedule_timeout_uninterruptible in SCSI error handling code\n  block: needs to set the residual length of a bidi request\n  Revert \"block: implement blkdev_readpages\"\n  block: Fix bounce limit setting in DM\n  Removed reference to non-existing file Documentation/PCI/PCI-DMA-mapping.txt\n  ...\n\nManually fix conflicts with tracing updates in:\n\tblock/blk-sysfs.c\n\tdrivers/ide/ide-atapi.c\n\tdrivers/ide/ide-cd.c\n\tdrivers/ide/ide-floppy.c\n\tdrivers/ide/ide-tape.c\n\tinclude/trace/events/block.h\n\tkernel/trace/blktrace.c\n"
    },
    {
      "commit": "be512691036cc989c11d0f418187efbbf14468e6",
      "tree": "557b303a058fc3effdfc15a5cc08867fb0ee6889",
      "parents": [
        "2b69c83924396ad1eda36fdd267c9d2f360f5555"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue May 26 09:41:17 2009 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue May 26 09:41:17 2009 +1000"
      },
      "message": "md: bitmap: improve bitmap maintenance code.\n\nThe code for checking which bits in the bitmap can be cleared\nhas 2 problems:\n 1/ it repeatedly takes and drops a spinlock, where it would make\n    more sense to just hold on to it most of the time.\n 2/ it doesn\u0027t make use of some opportunities to skip large sections\n    of the bitmap\n\nThis patch fixes those.  It will only affect CPU consumption, not\ncorrectness.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "e1defc4ff0cf57aca6c5e3ff99fa503f5943c1f1",
      "tree": "d60d15a082171c58ac811d547d51a9c3119f23e3",
      "parents": [
        "9bd7de51ee8537094656149eaf45338cadb7d7d4"
      ],
      "author": {
        "name": "Martin K. Petersen",
        "email": "martin.petersen@oracle.com",
        "time": "Fri May 22 17:17:49 2009 -0400"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Fri May 22 23:22:54 2009 +0200"
      },
      "message": "block: Do away with the notion of hardsect_size\n\nUntil now we have had a 1:1 mapping between storage device physical\nblock size and the logical block sized used when addressing the device.\nWith SATA 4KB drives coming out that will no longer be the case.  The\nsector size will be 4KB but the logical block size will remain\n512-bytes.  Hence we need to distinguish between the physical block size\nand the logical ditto.\n\nThis patch renames hardsect_size to logical_block_size.\n\nSigned-off-by: Martin K. Petersen \u003cmartin.petersen@oracle.com\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "db305e507d554430a69ede901a6308e6ecb72349",
      "tree": "b3ad8266ff05ae9059de551cdf8a8965bd27bcb1",
      "parents": [
        "18055569127253755d01733f6ecc004ed02f88d0"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu May 07 12:49:06 2009 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu May 07 12:49:06 2009 +1000"
      },
      "message": "md: fix some (more) errors with bitmaps on devices larger than 2TB.\n\nIf a write intent bitmap covers more than 2TB, we sometimes work with\nvalues beyond 32bit, so these need to be sector_t.  This patches\nadd the required casts to some unsigned longs that are being shifted\nup.\n\nThis will affect any raid10 larger than 2TB, or any raid1/4/5/6 with\nmember devices that are larger than 2TB.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\nReported-by: \"Mario \u0027BitKoenig\u0027 Holbe\" \u003cMario.Holbe@TU-Ilmenau.DE\u003e\nCc: stable@kernel.org\n"
    },
    {
      "commit": "b74fd2826c5acce20e6f691437b2d19372bc2057",
      "tree": "818e1fa7a7f91b1ca37279f19ce215f19256d7f0",
      "parents": [
        "b4348f32dae3cb6eb4bc21c7ed8f76c0b11e9d6a"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu May 07 12:47:19 2009 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu May 07 12:47:19 2009 +1000"
      },
      "message": "md: fix loading of out-of-date bitmap.\n\nWhen md is loading a bitmap which it knows is out of date, it fills\neach page with 1s and writes it back out again.  However the\nwrite_page call makes used of bitmap-\u003efile_pages and\nbitmap-\u003elast_page_size which haven\u0027t been set correctly yet.  So this\ncan sometimes fail.\n\nMove the setting of file_pages and last_page_size to before the call\nto write_page.\n\nThis bug can cause the assembly on an array to fail, thus making the\ndata inaccessible.  Hence I think it is a suitable candidate for\n-stable.\n\nCc: stable@kernel.org\nReported-by: Vojtech Pavlik \u003cvojtech@suse.cz\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "1f59390339f263c0fe7908fbe54466dbf3a64b58",
      "tree": "334f287c819c1876f29cd5833222eacd910e0ada",
      "parents": [
        "c03f6a19699fce4389888a45db8245969311d868"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Apr 20 11:50:24 2009 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Apr 20 11:50:24 2009 +1000"
      },
      "message": "md: support bitmaps on RAID10 arrays larger then 2 terabytes\n\n.. and other arrays with components larger than 2 terabytes.\n\nWe use a \"long\" rather than a \"sector_t\" in part of the bitmap\nsize calculations, which is sad.\n\nReported-by: \"Mario \u0027BitKoenig\u0027 Holbe\" \u003cMario.Holbe@TU-Ilmenau.DE\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "acb180b0e335ad88acfed6c8a33e39c05b95dc49",
      "tree": "fa980978bb66b178fd8c2f474194754139c0921d",
      "parents": [
        "6d56e278444bc8323b1bcfcada126b8e4dbba0f4"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Apr 14 16:28:34 2009 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Apr 14 16:28:34 2009 +1000"
      },
      "message": "md: improve usefulness and accuracy of sysfs file md/sync_completed.\n\nThe sync_completed file reports how much of a resync (or recovery or\nreshape) has been completed.\nHowever due to the possibility of out-of-order completion of writes,\nit is not certain to be accurate.\n\nWe have an internal value - mddev-\u003ecurr_resync_completed - which is an\naccurate value (though it might not always be quite so uptodate).\n\nSo:\n - make curr_resync_completed be uptodate a little more often,\n   particularly when raid5 reshape updates status in the metadata\n - report curr_resync_completed in the sysfs file\n - allow poll/select to report all updates to md/sync_completed.\n\nThis makes sync_completed completed usable by any external metadata\nhandler that wants to record this status information in its metadata.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "58c0fed400603a802968b23ddf78f029c5a84e41",
      "tree": "474fcb9775bb07f39ebb7802fb9b51d69222dcbb",
      "parents": [
        "575a80fa4f623141e9791e41879d87800fb6d862"
      ],
      "author": {
        "name": "Andre Noll",
        "email": "maan@systemlinux.org",
        "time": "Tue Mar 31 14:33:13 2009 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Mar 31 14:33:13 2009 +1100"
      },
      "message": "md: Make mddev-\u003esize sector-based.\n\nThis patch renames the \"size\" field of struct mddev_s to \"dev_sectors\"\nand stores the number of 512-byte sectors instead of the number of\n1K-blocks in it.\n\nAll users of that field, including raid levels 1,4-6,10, are adjusted\naccordingly. This simplifies the code a bit because it allows to get\nrid of a couple of divisions/multiplications by two.\n\nIn order to make checkpatch happy, some minor coding style issues\nhave also been addressed. In particular, size_store() now uses\nstrict_strtoull() instead of simple_strtoull().\n\nSigned-off-by: Andre Noll \u003cmaan@systemlinux.org\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "97e4f42d62badb0f9fbc27c013e89bc1336a03bc",
      "tree": "04cc809702a6b080c417c4ddf605642bbf7de521",
      "parents": [
        "43b2e5d86d8bdd77386226db0bc961529492c043"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Mar 31 14:33:13 2009 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Mar 31 14:33:13 2009 +1100"
      },
      "message": "md: occasionally checkpoint drive recovery to reduce duplicate effort after a crash\n\nVersion 1.x metadata has the ability to record the status of a\npartially completed drive recovery.\nHowever we only update that record on a clean shutdown.\nIt would be nice to update it on unclean shutdowns too, particularly\nwhen using a bitmap that removes much to the \u0027sync\u0027 effort after an\nunclean shutdown.\n\nOne complication with checkpointing recovery is that we only know\nwhere we are up to in terms of IO requests started, not which ones\nhave completed.  And we need to know what has completed to record\nhow much is recovered.  So occasionally pause the recovery until all\nsubmitted requests are completed, then update the record of where\nwe are up to.\n\nWhen we have a bitmap, we already do that pause occasionally to keep\nthe bitmap up-to-date.  So enhance that code to record the recovery\noffset and schedule a superblock update.\nAnd when there is no bitmap, just pause 16 times during the resync to\ndo a checkpoint.\n\u002716\u0027 is a fairly arbitrary number.  But we don\u0027t really have any good\nway to judge how often is acceptable, and it seems like a reasonable\nnumber for now.\n\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "43b2e5d86d8bdd77386226db0bc961529492c043",
      "tree": "601a885b1410324678cf319eee77cc54a02f2cf3",
      "parents": [
        "bff61975b3d6c18ee31457cc5b4d73042f44915f"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Mar 31 14:33:13 2009 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Mar 31 14:33:13 2009 +1100"
      },
      "message": "md: move md_k.h from include/linux/raid/ to drivers/md/\n\nIt really is nicer to keep related code together..\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "bff61975b3d6c18ee31457cc5b4d73042f44915f",
      "tree": "3aff48088b35172e74f56ae54f0b53e76a0c2150",
      "parents": [
        "92022950c6b1bb3da90b2976b20271cdfd98b8a3"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Mar 31 14:33:13 2009 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Mar 31 14:33:13 2009 +1100"
      },
      "message": "md: move lots of #include lines out of .h files and into .c\n\nThis makes the includes more explicit, and is preparation for moving\nmd_k.h to drivers/md/md.h\n\nRemove include/raid/md.h as its only remaining use was to #include\nother files.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "ef740c372dfd80e706dbf955d4e4aedda6c0c148",
      "tree": "8d9ef9db346ee1ba319a125c9de83cdde049510d",
      "parents": [
        "2a40a8aed083d988df6822bb9b1b08fb7ce21e1d"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@lst.de",
        "time": "Tue Mar 31 14:27:03 2009 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Mar 31 14:27:03 2009 +1100"
      },
      "message": "md: move headers out of include/linux/raid/\n\nMove the headers with the local structures for the disciplines and\nbitmap.h into drivers/md/ so that they are more easily grepable for\nhacking and not far away.  md.h is left where it is for now as there\nare some uses from the outside.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "355a43e641b948a7b755cb4c2466ec548d5b495f",
      "tree": "bed8f87adde74f054c6b822ffdbae74395e76710",
      "parents": [
        "d0a4bb492772ce5c4bdfba3744a99ed6f6fb238f"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Mar 31 14:27:02 2009 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Mar 31 14:27:02 2009 +1100"
      },
      "message": "md: write bitmap information to devices that are undergoing recovery.\n\nWhen we add some spares to an array and start recovery, and we have\na bitmap which is stored \u0027internally\u0027 on all devices, we call\nbitmap_write_all to make sure the bitmap is correct on the new\ndevice(s).\nHowever that doesn\u0027t work as write_sb_page only writes to\n\u0027In_sync\u0027 devices, and devices undergoing recovery are not\n\u0027In_sync\u0027 until recovery finishes.\n\nSo extend write_sb_page (actually next_active_rdev) to include devices\nthat are under recovery.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "d0a4bb492772ce5c4bdfba3744a99ed6f6fb238f",
      "tree": "a76356c2051e6f225c31989dbf278689554dfcbf",
      "parents": [
        "1187cf0a3c8b647d08bc86e043563c8d2a327adc"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Mar 31 14:27:02 2009 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Mar 31 14:27:02 2009 +1100"
      },
      "message": "md: never clear bit from the write-intent bitmap when the array is degraded.\n\n\nIt is safe to clear a bit from the write-intent bitmap for a raid1\nif we know the data has been written to all devices, which is\nwhat the current test does.\n\nBut it is not always safe to update the \u0027events_cleared\u0027 counter in\nthat case.  This is because one request could complete successfully\nafter some other request has partially failed.\n\nSo simply disable the clearing and updating of events_cleared whenever\nthe array is degraded.  This might end up not clearing some bits that\ncould safely be cleared, but it is safest approach.\n\nNote that the bug fixed here did not risk corrupting data by letting\nthe array get out-of-sync.  Rather it meant that when a device is\nremoved and re-added to the array, it might incorrectly require a full\nrecovery rather than just recovering based on the bitmap.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "1187cf0a3c8b647d08bc86e043563c8d2a327adc",
      "tree": "759515a3fdcbf962f35255f90ea6c4d7c708391a",
      "parents": [
        "eea1bf384e05b5ab747f8530c4fba9e9e6907fff"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Mar 31 14:27:02 2009 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Mar 31 14:27:02 2009 +1100"
      },
      "message": "md: Allow write-intent bitmaps to have chunksize \u003c PAGE_SIZE\n\nmd currently insists that the chunk size used for write-intent\nbitmaps (the amount of data that corresponds to one chunk)\nbe at least one page.\n\nThe reason for this restriction is lost in the mists of time,\nbut a review of the code (and a vague memory) suggests that the only\nproblem would be related to resync.  Resync tries very hard to\nwork in multiples of a page, but also needs to sync with units\nof a bitmap_chunk too.\n\nThis connection comes out in the bitmap_start_sync call.\n\nSo change bitmap_start_sync to always work in multiples of a page.\nIf the bitmap chunk size is less that one page, we flag multiple\nchunks as \u0027syncing\u0027 and generally make them all appear to the\nresync routines like one chunk.\n\nAll other code either already works with data ranges that could\nspan multiple chunks, or explicitly only cares about a single chunk.\n\nSigned-off-by: Neil Brown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "159ec1fc060ab22b157a62364045f5e98749c4d3",
      "tree": "1de0edfd782245b271d2898e36ae76c00e1e1b6d",
      "parents": [
        "ccacc7d2cf03114a24ab903f710118e9e5d43273"
      ],
      "author": {
        "name": "Cheng Renquan",
        "email": "crquan@gmail.com",
        "time": "Fri Jan 09 08:31:08 2009 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Jan 09 08:31:08 2009 +1100"
      },
      "message": "md: use list_for_each_entry macro directly\n\nThe rdev_for_each macro defined in \u003clinux/raid/md_k.h\u003e is identical to\nlist_for_each_entry_safe, from \u003clinux/list.h\u003e, it should be defined to\nuse list_for_each_entry_safe, instead of reinventing the wheel.\n\nBut some calls to each_entry_safe don\u0027t really need a safe version,\njust a direct list_for_each_entry is enough, this could save a temp\nvariable (tmp) in every function that used rdev_for_each.\n\nIn this patch, most rdev_for_each loops are replaced by list_for_each_entry,\ntotally save many tmp vars; and only in the other situations that will call\nlist_del to delete an entry, the safe version is used.\n\nSigned-off-by: Cheng Renquan \u003ccrquan@gmail.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "538452700d95480c16e7aa6b10ff77cd937d33f4",
      "tree": "f0a25315e64ee38e59cefca1fb3bd064ffaedc46",
      "parents": [
        "9e42d0cf5020aaf217433cad1a224745241d212a"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Jan 09 08:31:05 2009 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Jan 09 08:31:05 2009 +1100"
      },
      "message": "md: fix bitmap-on-external-file bug.\n\ncommit a2ed9615e3222645007fc19991aedf30eed3ecfd\nfixed a bug with \u0027internal\u0027 bitmaps, but in the process broke\n\u0027in a file\u0027 bitmaps.  So they are broken in 2.6.28\n\nThis fixes it, and needs to go in 2.6.28-stable.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\nCc: stable@kernel.org\n"
    },
    {
      "commit": "a2ed9615e3222645007fc19991aedf30eed3ecfd",
      "tree": "2a07cc815f5c348f085ad96a5660e3213da955f4",
      "parents": [
        "55dac3a5553b13891f0ae4bbd11920619b5436d4"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Dec 19 16:25:01 2008 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Dec 19 16:25:01 2008 +1100"
      },
      "message": "md: Don\u0027t read past end of bitmap when reading bitmap.\n\nWhen we read the write-intent-bitmap off the device, we currently\nread a whole number of pages.\nWhen PAGE_SIZE is 4K, this works due to the alignment we enforce\non the superblock and bitmap.\nWhen PAGE_SIZE is 64K, this case read past the end-of-device\nwhich causes an error.\n\nWhen we write the superblock, we ensure to clip the last page\nto just be the required size.  Copy that code into the read path\nto just read the required number of sectors.\n\nSigned-off-by: Neil Brown \u003cneilb@suse.de\u003e\nCc: stable@kernel.org\n"
    },
    {
      "commit": "b2d2c4ceaddc3098f19637a732f74b820a81a9e7",
      "tree": "5fb4150c33066f9fa70cc39853e5400ad6d54dca",
      "parents": [
        "271f5a9b8f8ae0db95de72779d115c9d0b9d3cc5"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Sep 01 12:48:13 2008 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Sep 01 12:48:13 2008 +1000"
      },
      "message": "Fix problem with waiting while holding rcu read lock in md/bitmap.c\n\nA recent patch to protect the rdev list with rcu locking leaves us\nwith a problem because we can sleep on memalloc while holding the\nrcu lock.\n\nThe rcu lock is only needed while walking the linked list as\nuninteresting devices (failed or spares) can be removed at any time.\n\nSo only take the rcu lock while actually walking the linked list.\nTake a refcount on the rdev during the time when we drop the lock\nand do the memalloc to start IO.\nWhen we return to the locked code, all the interesting devices\non the list will not have moved, so we can simply use\nlist_for_each_continue_rcu to pick up where we left off.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "93769f58078e2a066b56217cae1e343ac5a6b78c",
      "tree": "71ed73834f6163701f368324de46f4b6713390ed",
      "parents": [
        "6c5e0c4d518a37e1d5d794c14433e80284415079"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Fri Aug 01 20:32:31 2008 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Fri Aug 01 20:32:31 2008 +0200"
      },
      "message": "md: the bitmap code needs to use blk_plug_device_unlocked()\n\nIt doesn\u0027t hold the queue lock, so it\u0027s both racey on the queue flags\nand thus spews a warning.\n\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "4b80991c6cb9efa607bc4fd6f3ecdf5511c31bb0",
      "tree": "5e2ba7d509af245c29bdf04b00960cc367972c44",
      "parents": [
        "f2ea68cf42aafdd93393b6b8b20fc3c2b5f4390c"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Jul 21 17:05:25 2008 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Jul 21 17:05:25 2008 +1000"
      },
      "message": "md: Protect access to mddev-\u003edisks list using RCU\n\nAll modifications and most access to the mddev-\u003edisks list are made\nunder the reconfig_mutex lock.  However there are three places where\nthe list is walked without any locking.  If a reconfig happens at this\ntime, havoc (and oops) can ensue.\n\nSo use RCU to protect these accesses:\n  - wrap them in rcu_read_{,un}lock()\n  - use list_for_each_entry_rcu\n  - add to the list with list_add_rcu\n  - delete from the list with list_del_rcu\n  - delay the \u0027free\u0027 with call_rcu rather than schedule_work\n\nNote that export_rdev did a list_del_init on this list.  In almost all\ncases the entry was not in the list anymore so it was a no-op and so\nsafe.  It is no longer safe as after list_del_rcu we may not touch\nthe list_head.\nAn audit shows that export_rdev is called:\n  - after unbind_rdev_from_array, in which case the delete has\n     already been done,\n  - after bind_rdev_to_array fails, in which case the delete isn\u0027t needed.\n  - before the device has been put on a list at all (e.g. in\n      add_new_disk where reading the superblock fails).\n  - and in autorun devices after a failure when the device is on a\n      different list.\n\nSo remove the list_del_init call from export_rdev, and add it back\nimmediately before the called to export_rdev for that last case.\n\nNote also that -\u003esame_set is sometimes used for lists other than\nmddev-\u003elist (e.g. candidates).  In these cases rcu is not needed.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "0f420358e3a2abc028320ace7783e2e38cae77bf",
      "tree": "99b068212ad1dd8c5e97b151d796d66f53d1f3bb",
      "parents": [
        "b73df2d3d629aefa187a0a3574fd81455e026bc8"
      ],
      "author": {
        "name": "Andre Noll",
        "email": "maan@systemlinux.org",
        "time": "Fri Jul 11 22:02:23 2008 +1000"
      },
      "committer": {
        "name": "Neil Brown",
        "email": "neilb@suse.de",
        "time": "Fri Jul 11 22:02:23 2008 +1000"
      },
      "message": "md: Turn rdev-\u003esb_offset into a sector-based quantity.\n\nRename it to sb_start to make sure all users have been converted.\n\nSigned-off-by: Andre Noll \u003cmaan@systemlinux.org\u003e\nSigned-off-by: Neil Brown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "a0da84f35b25875870270d16b6eccda4884d61a7",
      "tree": "3c092bcef7a8c8704054b02197156e1c803306b2",
      "parents": [
        "0e13fe23a00ad88c737d91d94a050707c6139ce4"
      ],
      "author": {
        "name": "Neil Brown",
        "email": "neilb@notabene.brown",
        "time": "Sat Jun 28 08:31:22 2008 +1000"
      },
      "committer": {
        "name": "Neil Brown",
        "email": "neilb@notabene.brown",
        "time": "Sat Jun 28 08:31:22 2008 +1000"
      },
      "message": "Improve setting of \"events_cleared\" for write-intent bitmaps.\n\nWhen an array is degraded, bits in the write-intent bitmap are not\ncleared, so that if the missing device is re-added, it can be synced\nby only updated those parts of the device that have changed since\nit was removed.\n\nThe enable this a \u0027events_cleared\u0027 value is stored. It is the event\ncounter for the array the last time that any bits were cleared.\n\nSometimes - if a device disappears from an array while it is \u0027clean\u0027 -\nthe events_cleared value gets updated incorrectly (there are subtle\nordering issues between updateing events in the main metadata and the\nbitmap metadata) resulting in the missing device appearing to require\na full resync when it is re-added.\n\nWith this patch, we update events_cleared precisely when we are about\nto clear a bit in the bitmap.  We record events_cleared when we clear\nthe bit internally, and copy that to the superblock which is written\nout before the bit on storage.  This makes it more \"obviously correct\".\n\nWe also need to update events_cleared when the event_count is going\nbackwards (as happens on a dirty-\u003eclean transition of a non-degraded\narray).\n\nThanks to Mike Snitzer for identifying this problem and testing early\n\"fixes\".\n\nCc:  \"Mike Snitzer\" \u003csnitzer@gmail.com\u003e\nSigned-off-by: Neil Brown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "6bcfd601861cce45ca73ac1d714f1286b6b3f0d4",
      "tree": "175173d057e10dd006d6dbd033395977aff55dd9",
      "parents": [
        "03de250a269bfa8e6a9e6ccb4a1dbce19dae8a61"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@lst.de",
        "time": "Fri May 23 13:04:34 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat May 24 09:56:09 2008 -0700"
      },
      "message": "md: kill file_path wrapper\n\nKill the trivial and rather pointless file_path wrapper around d_path.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Neil Brown \u003cneilb@suse.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "7be3dfec4724c51e890455fe48fe188ad7c18b88",
      "tree": "c1843e80b9b4c1de6d7603753679044d6db4c18e",
      "parents": [
        "52720ae77d392d3f4c12281c37304edbc8cb51f1"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Mar 10 11:43:48 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Mon Mar 10 18:01:19 2008 -0700"
      },
      "message": "md: reduce CPU wastage on idle md array with a write-intent bitmap\n\nRecent patch titled\n  Reduce CPU wastage on idle md array with a write-intent bitmap.\n\nwould sometimes leave the array with dirty bitmap bits that stay dirty.  A\nsubsequent write would sort things out so it isn\u0027t a big problem, but should\nbe fixed nonetheless.\n\nWe need to make sure that when the bitmap becomes not \"allclean\", the\ndaemon_sleep really does get set to a sensible value.\n\nSigned-off-by: Neil Brown \u003cneilb@suse.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "8311c29d40235062a843f4a8e8a70a44af6fe4c9",
      "tree": "c869143fae8f135646300d1bac6639af5bb30dd7",
      "parents": [
        "a35e63efa1fb18c6f20f38e3ddf3f8ffbcf0f6e7"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Mar 04 14:29:30 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue Mar 04 16:35:17 2008 -0800"
      },
      "message": "md: reduce CPU wastage on idle md array with a write-intent bitmap\n\nOn an md array with a write-intent bitmap, a thread wakes up every few seconds\nand scans the bitmap looking for work to do.  If the array is idle, there will\nbe no work to do, but a lot of scanning is done to discover this.\n\nSo cache the fact that the bitmap is completely clean, and avoid scanning the\nwhole bitmap when the cache is known to be clean.\n\nSigned-off-by: Neil Brown \u003cneilb@suse.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "cf28b4863f9ee8f122e8ff3ac0d403e07ba9c6d9",
      "tree": "65c91f6911b34c32e517938289621ce0e7baeaf3",
      "parents": [
        "c32c2f63a9d6c953aaf168c0b2551da9734f76d2"
      ],
      "author": {
        "name": "Jan Blunck",
        "email": "jblunck@suse.de",
        "time": "Thu Feb 14 19:38:44 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Thu Feb 14 21:17:09 2008 -0800"
      },
      "message": "d_path: Make d_path() use a struct path\n\nd_path() is used on a \u003cdentry,vfsmount\u003e pair.  Lets use a struct path to\nreflect this.\n\n[akpm@linux-foundation.org: fix build in mm/memory.c]\nSigned-off-by: Jan Blunck \u003cjblunck@suse.de\u003e\nAcked-by: Bryan Wu \u003cbryan.wu@analog.com\u003e\nAcked-by: Christoph Hellwig \u003chch@infradead.org\u003e\nCc: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nCc: \"J. Bruce Fields\" \u003cbfields@fieldses.org\u003e\nCc: Neil Brown \u003cneilb@suse.de\u003e\nCc: Michael Halcrow \u003cmhalcrow@us.ibm.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "d089c6af10c2be5988f03667d6d22fe6085fbe5e",
      "tree": "815eb0596bd7c908f30c268da6b5c5eff0e0bc21",
      "parents": [
        "29ac4aa3fc68a86279aca50f20df4d614de2e204"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed Feb 06 01:39:59 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed Feb 06 10:41:19 2008 -0800"
      },
      "message": "md: change ITERATE_RDEV to rdev_for_each\n\nAs this is more in line with common practice in the kernel.  Also swap the\nargs around to be more like list_for_each.\n\nSigned-off-by: Neil Brown \u003cneilb@suse.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "b47490c9bc73d0b34e4c194db40de183e592e446",
      "tree": "8334581aff7aa0b199df04c6f9d707c1902ad14f",
      "parents": [
        "66c811e99322767bad5db4368de93aac604f02a2"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed Feb 06 01:39:50 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed Feb 06 10:41:18 2008 -0800"
      },
      "message": "md: Update md bitmap during resync.\n\nCurrently an md array with a write-intent bitmap does not updated that bitmap\nto reflect successful partial resync.  Rather the entire bitmap is updated\nwhen the resync completes.\n\nThis is because there is no guarentee that resync requests will complete in\norder, and tracking each request individually is unnecessarily burdensome.\n\nHowever there is value in regularly updating the bitmap, so add code to\nperiodically pause while all pending sync requests complete, then update the\nbitmap.  Doing this only every few seconds (the same as the bitmap update\ntime) does not notciably affect resync performance.\n\n[snitzer@gmail.com: export bitmap_cond_end_sync]\nSigned-off-by: Neil Brown \u003cneilb@suse.de\u003e\nCc: \"Mike Snitzer\" \u003csnitzer@gmail.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "2ad8b1ef11c98c5603580878aebf9f1bc74129e4",
      "tree": "f7bdc2484513f6ffd174b1385bb216dcf97d2c78",
      "parents": [
        "d85532ed284e63b5c56eaf2418f262822af60be4"
      ],
      "author": {
        "name": "Alan D. Brunelle",
        "email": "Alan.Brunelle@hp.com",
        "time": "Wed Nov 07 14:26:56 2007 -0500"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Fri Nov 09 13:41:32 2007 +0100"
      },
      "message": "Add UNPLUG traces to all appropriate places\n\nAdded blk_unplug interface, allowing all invocations of unplugs to result\nin a generated blktrace UNPLUG.\n\nSigned-off-by: Alan D. Brunelle \u003cAlan.Brunelle@hp.com\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "85bfb4da8cad483a4e550ec89060d05a4daf895b",
      "tree": "8cbdfb71e4000a6b3f1ac23d95fcc6caa7085443",
      "parents": [
        "0895e91d60ef9bdef426d1ce14bb94bd5875870d"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Oct 22 20:45:11 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue Oct 23 08:32:06 2007 -0700"
      },
      "message": "md: fix an unsigned compare to allow creation of bitmaps with v1.0 metadata\n\nAs page-\u003eindex is unsigned, this all becomes an unsigned comparison,\nwhich almost always returns an error.\n\nSigned-off-by: Neil Brown \u003cneilb@suse.de\u003e\nCc: Stable \u003cstable@kernel.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "4ad1366376bfef32ec0ffa12d1faa483d6f330bd",
      "tree": "87a9c864ec5ebd446f6c99f3298bc7638efa8f1e",
      "parents": [
        "f0d76d70bc77b9b11256a3a23e98e80878be1578"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Jul 17 04:06:13 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue Jul 17 10:23:15 2007 -0700"
      },
      "message": "md: change bitmap_unplug and others to void functions\n\nbitmap_unplug only ever returns 0, so it may as well be void.  Two callers try\nto print a message if it returns non-zero, but that message is already printed\nby bitmap_file_kick.\n\nwrite_page returns an error which is not consistently checked.  It always\ncauses BITMAP_WRITE_ERROR to be set on an error, and that can more\nconveniently be checked.\n\nWhen the return of write_page is checked, an error causes bitmap_file_kick to\nbe called - so move that call into write_page - and protect against recursive\ncalls into bitmap_file_kick.\n\nbitmap_update_sb returns an error that is never checked.\n\nSo make these \u0027void\u0027 and be consistent about checking the bit.\n\nSigned-off-by: Neil Brown \u003cneilb@suse.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "f0d76d70bc77b9b11256a3a23e98e80878be1578",
      "tree": "abf9e37302ce587c8c62e430aaf9f004548e653c",
      "parents": [
        "713f6ab18b0e7d39f14401362bfe8015b1aedde1"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Jul 17 04:06:12 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue Jul 17 10:23:15 2007 -0700"
      },
      "message": "md: check that internal bitmap does not overlap other data\n\nWe current completely trust user-space to set up metadata describing an\nconsistant array.  In particlar, that the metadata, data, and bitmap do not\noverlap.\n\nBut userspace can be buggy, and it is better to report an error than corrupt\ndata.  So put in some appropriate checks.\n\nSigned-off-by: Neil Brown \u003cneilb@suse.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "ab6085c795a71b6a21afe7469d30a365338add7a",
      "tree": "d9d901ea1c3401906553ef9e684a1094a1b3083a",
      "parents": [
        "787f17feb204ed1c6331892fb8124b80dc9fe288"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed May 23 13:58:10 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed May 23 20:14:14 2007 -0700"
      },
      "message": "md: don\u0027t write more than is required of the last page of a bitmap\n\nIt is possible that real data or metadata follows the bitmap without full page\nalignment.\n\nSo limit the last write to be only the required number of bytes, rounded up to\nthe hard sector size of the device.\n\nSigned-off-by: Neil Brown \u003cneilb@suse.de\u003e\nCc: \u003cstable@kernel.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "ef51c97623b94f51e439ac91d2736aab3d1b6594",
      "tree": "5c020421f1e5a6e28b5a9f341fec32479a8ffb3a",
      "parents": [
        "524e6752912a891a396a9cf74c5d7d60fff5510a"
      ],
      "author": {
        "name": "Mark Fasheh",
        "email": "mark.fasheh@oracle.com",
        "time": "Tue May 08 00:27:10 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue May 08 11:15:04 2007 -0700"
      },
      "message": "Remove do_sync_file_range()\n\nRemove do_sync_file_range() and convert callers to just use\ndo_sync_mapping_range().\n\nSigned-off-by: Mark Fasheh \u003cmark.fasheh@oracle.com\u003e\nCc: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "505fa2c4a2f125a70951926dfb22b9cf273994f1",
      "tree": "aa96fd86c3a26bcd062c1e19e527faf684848516",
      "parents": [
        "b6550777a32f7204f87475beb4f40d054fb8d4b4"
      ],
      "author": {
        "name": "Neil Brown",
        "email": "neilb@suse.de",
        "time": "Wed Apr 11 23:28:44 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Thu Apr 12 15:31:42 2007 -0700"
      },
      "message": "[PATCH] md: fix calculation for size of filemap_attr array in md/bitmap\n\nIf \u0027num_pages\u0027 were ever 1 more than a multiple of 8 (32bit platforms)\nor of 16 (64 bit platforms).  filemap_attr would be allocated one\n\u0027unsigned long\u0027 shorter than required.  We need a round-up in there.\n\nSigned-off-by: Neil Brown \u003cneilb@suse.de\u003e\nCc: \u003cstable@kernel.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "fc0ecff698165ae8e178efa086e0dd1f385206b1",
      "tree": "fc6274f0862bdd6749172201170b2f6a7ce4c4ff",
      "parents": [
        "54bc485522afdac33de5504da2ea8cdcc690674e"
      ],
      "author": {
        "name": "Andrew Morton",
        "email": "akpm@osdl.org",
        "time": "Sat Feb 10 01:45:39 2007 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Sun Feb 11 10:51:31 2007 -0800"
      },
      "message": "[PATCH] remove invalidate_inode_pages()\n\nConvert all calls to invalidate_inode_pages() into open-coded calls to\ninvalidate_mapping_pages().\n\nLeave the invalidate_inode_pages() wrapper in place for now, marked as\ndeprecated.\n\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "da6e1a32fb8d7539a27f699c8671f64d7fefd0cc",
      "tree": "8faa7713ad1333b30d8ba668627251dbc1e0b4ad",
      "parents": [
        "aaf68cfbf2241d24d46583423f6bff5c47e088b3"
      ],
      "author": {
        "name": "Neil Brown",
        "email": "neilb@suse.de",
        "time": "Thu Feb 08 14:20:37 2007 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Fri Feb 09 09:25:47 2007 -0800"
      },
      "message": "[PATCH] md: avoid possible BUG_ON in md bitmap handling\n\nmd/bitmap tracks how many active write requests are pending on blocks\nassociated with each bit in the bitmap, so that it knows when it can clear\nthe bit (when count hits zero).\n\nThe counter has 14 bits of space, so if there are ever more than 16383, we\ncannot cope.\n\nCurrently the code just calles BUG_ON as \"all\" drivers have request queue\nlimits much smaller than this.\n\nHowever is seems that some don\u0027t.  Apparently some multipath configurations\ncan allow more than 16383 concurrent write requests.\n\nSo, in this unlikely situation, instead of calling BUG_ON we now wait\nfor the count to drop down a bit.  This requires a new wait_queue_head,\nsome waiting code, and a wakeup call.\n\nTested by limiting the counter to 20 instead of 16383 (writes go a lot slower\nin that case...).\n\nSigned-off-by: Neil Brown \u003cneilb@suse.de\u003e\nCc: \u003cstable@kernel.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "f49d5e62d9352d33b30c9befbaf0fd9c88265ec1",
      "tree": "32dee76e54b4922eac8ab09c30b1e8399b3107aa",
      "parents": [
        "1031be7a5fafd3a858dfaabb74d98f9ca20744a8"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Jan 26 00:57:03 2007 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Fri Jan 26 13:50:59 2007 -0800"
      },
      "message": "[PATCH] md: avoid reading past the end of a bitmap file\n\nIn most cases we check the size of the bitmap file before reading data from\nit.  However when reading the superblock, we always read the first PAGE_SIZE\nbytes, which might not always be appropriate.  So limit that read to the size\nof the file if appropriate.\n\nAlso, we get the count of available bytes wrong in one place, so that too can\nread past the end of the file.\n\nCc: \"yang yin\" \u003cyinyang801120@gmail.com\u003e\nSigned-off-by: Neil Brown \u003cneilb@suse.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "c649bb9c55e78dcff0e1383c13d91e0bfc2abb4a",
      "tree": "2db97a161e909c22840d72ac15704b56b09a9094",
      "parents": [
        "225a719f79fbc4d0cd9d9ebc5b2e3ac0e95845aa"
      ],
      "author": {
        "name": "Josef Sipek",
        "email": "jsipek@fsl.cs.sunysb.edu",
        "time": "Fri Dec 08 02:37:19 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.osdl.org",
        "time": "Fri Dec 08 08:28:47 2006 -0800"
      },
      "message": "[PATCH] struct path: convert md\n\nSigned-off-by: Josef Sipek \u003cjsipek@fsl.cs.sunysb.edu\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "4f2e639af4bd5e152fc79256e333643d3dd6c10f",
      "tree": "1adf32d929c552d7e4b24475baa45c6108436f79",
      "parents": [
        "1c05b4bc22cd640d3a534bd2851a8413d5df3709"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Sat Oct 21 10:24:09 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Sat Oct 21 13:35:05 2006 -0700"
      },
      "message": "[PATCH] md: endian annotations for the bitmap superblock\n\nAnd a couple of bug fixes found by sparse.\n\nSigned-off-by: Neil Brown \u003cneilb@suse.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "5f6e3c836508926e50cebe17ad87f59666a7fb47",
      "tree": "b485fa971b0c17bc16fb81fd5cb8bc5646ce0188",
      "parents": [
        "76fd020937f2d09f76a4cd8dbae1f3bec640ff0b"
      ],
      "author": {
        "name": "Alexey Dobriyan",
        "email": "adobriyan@gmail.com",
        "time": "Wed Oct 11 01:22:26 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Wed Oct 11 11:14:26 2006 -0700"
      },
      "message": "[PATCH] md: use BUILD_BUG_ON\n\nSigned-off-by: Alexey Dobriyan \u003cadobriyan@gmail.com\u003e\nAcked-by: Neil Brown \u003cneilb@suse.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "a638b2dc951c4cafea31b34a1db1c3d94809649e",
      "tree": "73c1c2135a117290308b5807b6ede21389e3264c",
      "parents": [
        "14f50b49fdab8f4c9fc87b55d3631e3bf1ffd385"
      ],
      "author": {
        "name": "Paul Clements",
        "email": "paul.clements@steeleye.com",
        "time": "Tue Oct 03 01:16:01 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Tue Oct 03 08:04:18 2006 -0700"
      },
      "message": "[PATCH] md: use ffz instead of find_first_set to convert multiplier to shift\n\nfind_first_set doesn\u0027t find the least-significant bit on bigendian machines,\nso it is really wrong to use it.\n\nffs is closer, but takes an \u0027int\u0027 and we have a \u0027unsigned long\u0027.  So use\nffz(~X) to convert a chunksize into a chunkshift.\n\nSigned-off-by: Neil Brown \u003cneilb@suse.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "9b1d1dac181d8c1b9492e05cee660a985d035a06",
      "tree": "af12b1eaac4e0f7f3528ec26a223faeabed35845",
      "parents": [
        "76186dd8b73d2b7b9b4c8629b89c845e97009801"
      ],
      "author": {
        "name": "Paul Clements",
        "email": "paul.clements@steeleye.com",
        "time": "Tue Oct 03 01:15:49 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Tue Oct 03 08:04:17 2006 -0700"
      },
      "message": "[PATCH] md: new sysfs interface for setting bits in the write-intent-bitmap\n\nAdd a new sysfs interface that allows the bitmap of an array to be dirtied.\nThe interface is write-only, and is used as follows:\n\necho \"1000\" \u003e /sys/block/md2/md/bitmap\n\n(dirty the bit for chunk 1000 [offset 0] in the in-memory and on-disk\nbitmaps of array md2)\n\necho \"1000-2000\" \u003e /sys/block/md1/md/bitmap\n\n(dirty the bits for chunks 1000-2000 in md1\u0027s bitmap)\n\nThis is useful, for example, in cluster environments where you may need to\ncombine two disjoint bitmaps into one (following a server failure, after a\nsecondary server has taken over the array).  By combining the bitmaps on\nthe two servers, a full resync can be avoided (This was discussed on the\nlist back on March 18, 2005, \"[PATCH 1/2] md bitmap bug fixes\" thread).\n\nSigned-off-by: Neil Brown \u003cneilb@suse.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "6ab3d5624e172c553004ecc862bfeac16d9d68b7",
      "tree": "6d98881fe91fd9583c109208d5c27131b93fa248",
      "parents": [
        "e02169b682bc448ccdc819dc8639ed34a23cedd8"
      ],
      "author": {
        "name": "Jörn Engel",
        "email": "joern@wohnheim.fh-wedel.de",
        "time": "Fri Jun 30 19:25:36 2006 +0200"
      },
      "committer": {
        "name": "Adrian Bunk",
        "email": "bunk@stusta.de",
        "time": "Fri Jun 30 19:25:36 2006 +0200"
      },
      "message": "Remove obsolete #include \u003clinux/config.h\u003e\n\nSigned-off-by: Jörn Engel \u003cjoern@wohnheim.fh-wedel.de\u003e\nSigned-off-by: Adrian Bunk \u003cbunk@stusta.de\u003e\n"
    }
  ],
  "next": "ce25c31bdd3b39266debd86a7732007e05983a67"
}
