)]}'
{
  "log": [
    {
      "commit": "496ad9aa8ef448058e36ca7a787c61f2e63f0f54",
      "tree": "8f4abde793cd7db5bb8fde6d27ebcacd0e54379a",
      "parents": [
        "57eccb830f1cc93d4b506ba306d8dfa685e0c88f"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Jan 23 17:07:38 2013 -0500"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Fri Feb 22 23:31:31 2013 -0500"
      },
      "message": "new helper: file_inode(file)\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "582e2e056a5c3410174c23f5134e6b00e0db9101",
      "tree": "d80d1dfbd6781453d78a7394bcdec80249c61a72",
      "parents": [
        "7ad4d4a68a1a19f21c7b39cb3f51bf17fba6e3d0"
      ],
      "author": {
        "name": "Jianpeng Ma",
        "email": "majianpeng@gmail.com",
        "time": "Thu Oct 11 13:45:36 2012 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Oct 11 13:45:36 2012 +1100"
      },
      "message": "md/bitmap:Don\u0027t use IS_ERR to judge alloc_page().\n\nSigned-off-by: Jianpeng Ma \u003cmajianpeng@gmail.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "fd177481b440c3f7b5ee9b821a76b29fdf2a6712",
      "tree": "ae05afc6aa944768ff0874237af77d4e35b6c61a",
      "parents": [
        "af7cf25dd15b74a78bff8ed5dc969b20dae9554d"
      ],
      "author": {
        "name": "Michael Wang",
        "email": "wangyun@linux.vnet.ibm.com",
        "time": "Thu Oct 11 13:43:21 2012 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Oct 11 13:43:21 2012 +1100"
      },
      "message": "raid: replace list_for_each_continue_rcu with new interface\n\nThis patch replaces list_for_each_continue_rcu() with\nlist_for_each_entry_continue_rcu() to save a few lines\nof code and allow removing list_for_each_continue_rcu().\n\nReviewed-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\nSigned-off-by: Michael Wang \u003cwangyun@linux.vnet.ibm.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "f54a9d0e59c4bea3db733921ca9147612a6f292c",
      "tree": "e17aa5d2a7220cfe7466cc4f8c74af5ed672a591",
      "parents": [
        "46a06401f6ba13e59d24746fa9ffa6773b69eee3"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Aug 02 08:33:20 2012 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Aug 02 08:33:20 2012 +1000"
      },
      "message": "md/raid1: submit IO from originating thread instead of md thread.\n\nqueuing writes to the md thread means that all requests go through the\none processor which may not be able to keep up with very high request\nrates.\n\nSo use the plugging infrastructure to submit all requests on unplug.\nIf a \u0027schedule\u0027 is needed, we fall back on the old approach of handing\nthe requests to the thread for it to handle.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "1dff2b87a34a1ac1d1898ea109bf97ed396aca53",
      "tree": "041386083d0b7242aa802d6545dd86c51c2a405e",
      "parents": [
        "63aced61023a054825ffd6e33ac1ab99036dadd2"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue May 22 13:55:34 2012 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue May 22 13:55:34 2012 +1000"
      },
      "message": "md/bitmap: record the space available for the bitmap in the superblock.\n\nNow that bitmaps can grow and shrink it is best if we record\nhow much space is available.  This means that when\nwe reduce the size of the bitmap we won\u0027t \"lose\" the space\nfor late when we might want to increase the size of the bitmap\nagain.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "b81a040481233e5171cb3fbc62f44636d5ea18b2",
      "tree": "769294e4042e3aa462306d3ad8a030d06ec7d19d",
      "parents": [
        "d60b479d177a5735b6b4db6ee5280ef6653f50e7"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue May 22 13:55:26 2012 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue May 22 13:55:26 2012 +1000"
      },
      "message": "md/bitmap: make sure reshape request are reflected in superblock.\n\nAs a reshape may change the sync_size and/or chunk_size, we need\nto update these whenever we write out the bitmap superblock.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "d60b479d177a5735b6b4db6ee5280ef6653f50e7",
      "tree": "8fc110bc113817f237559da6da68ca2a75e3614c",
      "parents": [
        "15702d7fb6e7a6baf5a04286a227b0ad2fe4a03f"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue May 22 13:55:25 2012 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue May 22 13:55:25 2012 +1000"
      },
      "message": "md/bitmap: add bitmap_resize function to allow bitmap resizing.\n\nThis function will allocate the new data structures and copy\nbits across from old to new, allowing for the possibility that the\nchunksize has changed.\n\nUse the same function for performing the initial allocation\nof the structures.  This improves test coverage.\n\nWhen bitmap_resize is used to resize an existing bitmap, it\nonly copies \u00271\u0027 bits in, not \u00270\u0027 bits.\nSo when allocating the bitmap, ensure everything is initialised\nto ZERO.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "15702d7fb6e7a6baf5a04286a227b0ad2fe4a03f",
      "tree": "e3f99eab7c841bb51ee48a8806e140f751d8e95d",
      "parents": [
        "40cffcc0e8f9f6e295630cb8b8d58a13baa6c7f9"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue May 22 13:55:25 2012 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue May 22 13:55:25 2012 +1000"
      },
      "message": "md/bitmap: use DIV_ROUND_UP instead of open-code\n\nAlso take the opportunity to simplify CHUNK_BLOCK_RATIO.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "40cffcc0e8f9f6e295630cb8b8d58a13baa6c7f9",
      "tree": "eb23aa8ac3866c93708a1aee36fd6ae15a6a863f",
      "parents": [
        "63c68268b2fc63f7f612dfebecb5c9cbbd3ebeaf"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue May 22 13:55:24 2012 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue May 22 13:55:24 2012 +1000"
      },
      "message": "md/bitmap: create a \u0027struct bitmap_counts\u0027 substructure of \u0027struct bitmap\u0027\n\nThe new \"struct bitmap_counts\" contains all the fields that are\nrelated to counting the number of active writes in each bitmap chunk.\n\nHaving this separate will make it easier to change the chunksize\nor overall size of a bitmap atomically.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "63c68268b2fc63f7f612dfebecb5c9cbbd3ebeaf",
      "tree": "731ea4f181b2ffc19905dd4419668334479e6715",
      "parents": [
        "bdfd1140731a67c74fd74814f222c8078171adcd"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue May 22 13:55:23 2012 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue May 22 13:55:23 2012 +1000"
      },
      "message": "md/bitmap: make bitmap bitops atomic.\n\nThis allows us to remove spinlock protection which is\nmore heavy-weight than simple atomics.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "bdfd1140731a67c74fd74814f222c8078171adcd",
      "tree": "e244aa26d983b56c61fb8d53eb9a1a4105476a85",
      "parents": [
        "fae7d326cd0905624c173337fdfcfe9b86b9e6e2"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue May 22 13:55:22 2012 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue May 22 13:55:22 2012 +1000"
      },
      "message": "md/bitmap: make _page_attr bitops atomic.\n\nUsing e.g. set_bit instead of __set_bit and using test_and_clear_bit\nallow us to remove some locking and contract other locked ranges.\n\nIt is rare that we set or clear a lot of these bits, so gain should\noutweigh any cost.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "fae7d326cd0905624c173337fdfcfe9b86b9e6e2",
      "tree": "2f98bd9e055dce2250c0ba813aeaa95873665018",
      "parents": [
        "62f82faaceb483284ea938b3a092b9f0a4d2d029"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue May 22 13:55:21 2012 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue May 22 13:55:21 2012 +1000"
      },
      "message": "md/bitmap: merge bitmap_file_unmap and bitmap_file_put.\n\nThere functions really do one thing together: release the\n\u0027bitmap_storage\u0027.  So make them just one function.\n\nSince we removed the locking (previous patch), we don\u0027t need to zero\nany fields before freeing them, so it all becomes a bit simpler.\n\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "62f82faaceb483284ea938b3a092b9f0a4d2d029",
      "tree": "5b2d6799ca52ceb3a6d4882f6232e010e90bdd22",
      "parents": [
        "7466712347c58c367636cc875801c8703bc729e7"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue May 22 13:55:21 2012 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue May 22 13:55:21 2012 +1000"
      },
      "message": "md/bitmap: remove async freeing of bitmap file.\n\nThere is no real value in freeing things the moment there is an error.\nIt is just as good to free the bitmap file and pages when the bitmap\nis explicitly removed (and replaced?) or at shutdown.\n\nWith this gone, the bitmap will only disappear when the array is\nquiescent, so we can remove some locking.\n\nAs the \u0027filemap\u0027 doesn\u0027t disappear now, include extra checks before\ntrying to write any of it out.\nAlso remove the check for \"has it disappeared\" in\nbitmap_daemon_write().\n\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "7466712347c58c367636cc875801c8703bc729e7",
      "tree": "f9cd8a4acdb5e60cc4088fd9497dd41dfb8998d1",
      "parents": [
        "b405fe91e50c60c80e72d798025aea4917096421"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue May 22 13:55:19 2012 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue May 22 13:55:19 2012 +1000"
      },
      "message": "md/bitmap: convert some spin_lock_irqsave to spin_lock_irq\n\nAll of these sites can only be called from process context with\nirqs enabled, so using irqsave/irqrestore just adds noise.\nRemove it.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "b405fe91e50c60c80e72d798025aea4917096421",
      "tree": "bc0b8dc67e7bc7897c6299d4bc80e42a7842e7fe",
      "parents": [
        "84e923453e19d6427c6aa884d9561f01e1425d09"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue May 22 13:55:15 2012 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue May 22 13:55:15 2012 +1000"
      },
      "message": "md/bitmap: use set_bit, test_bit, etc for operation on bitmap-\u003eflags.\n\nWe currently use \u0027\u0026\u0027 and \u0027|\u0027 which isn\u0027t the norm in the kernel\nand doesn\u0027t allow easy atomicity.\nSo change to bit numbers and {set,clear,test}_bit.\nThis allows us to remove a spinlock/unlock (which was dubious anyway)\nand some other simplifications.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "84e923453e19d6427c6aa884d9561f01e1425d09",
      "tree": "6e7421a9a15419ace1377e4338ee2e9c4ed38f67",
      "parents": [
        "edbb79df6731bb1e99c15f5a519a864d488f4808"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue May 22 13:55:14 2012 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue May 22 13:55:14 2012 +1000"
      },
      "message": "md/bitmap: remove single-bit manipulation on sb-\u003estate\n\nJust do single-bit manipulations on bitmap-\u003eflags and copy whole\nvalue between that and sb-\u003estate.\n\nThis will allow next patch which changes how bit manipulations are\nperformed on bitmap-\u003eflags.\n\nThis does result in BITMAP_STALE not being set in sb by\nbitmap_read_sb, however as the setting is determined by other\ninformation in the \u0027sb\u0027 we do not lose information this way.\nNormally, bitmap_load will be called shortly which will clear\nBITMAP_STALE anyway.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "edbb79df6731bb1e99c15f5a519a864d488f4808",
      "tree": "3f2cff223d63a8ec5be507fb991cea083c2b8c7a",
      "parents": [
        "bc9891a8853842a19c33dda0ba02fbacf7da067f"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue May 22 13:55:13 2012 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue May 22 13:55:13 2012 +1000"
      },
      "message": "md/bitmap: remove bitmap_mask_state\n\nThis function isn\u0027t really needed.  It sets or clears a flag in both\nbitmap-\u003eflags and sb-\u003estate.\nHowever both times it is called, bitmap_update_sb is called soon\nafterwards which copies bitmap-\u003eflags to sb-\u003estate.\nSo just make changes to bitmap-\u003eflags, and open-code those rather than\nhiding in a function.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "bc9891a8853842a19c33dda0ba02fbacf7da067f",
      "tree": "6561027b0a61521b24786266855cba0e4dc730a1",
      "parents": [
        "d1244cb062750bdb2298ca2565239d3d8cbd91a8"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue May 22 13:55:12 2012 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue May 22 13:55:12 2012 +1000"
      },
      "message": "md/bitmap: move storage allocation from bitmap_load to bitmap_create.\n\nWe should allocate memory for the storage-bitmap at create-time, not\nload time.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "d1244cb062750bdb2298ca2565239d3d8cbd91a8",
      "tree": "85d68d961e0f2c03acf0550d66252a9346495cab",
      "parents": [
        "9b1215c102d4b12f6c815d7fdd35d0628db35b28"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue May 22 13:55:12 2012 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue May 22 13:55:12 2012 +1000"
      },
      "message": "md/bitmap: separate bitmap file allocation to its own function.\n\nThis will allow allocation before swapping in a new bitmap.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "9b1215c102d4b12f6c815d7fdd35d0628db35b28",
      "tree": "52f04de53b1b7302535d66820d9f85b0610b0b1f",
      "parents": [
        "1ec885cdd01a9ad867dbb9fd32a1bfcc0875c486"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue May 22 13:55:11 2012 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue May 22 13:55:11 2012 +1000"
      },
      "message": "md/bitmap: store bytes in file rather than just in last page.\n\nThis number is more generally useful, and bytes-in-last-page is\neasily extracted from it.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "1ec885cdd01a9ad867dbb9fd32a1bfcc0875c486",
      "tree": "232eaa1e1b7820ca8e97782666f7742f78bef175",
      "parents": [
        "d189122d4bca2647441fdc170dc6d4cc5c8bb2fa"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue May 22 13:55:10 2012 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue May 22 13:55:10 2012 +1000"
      },
      "message": "md/bitmap: move some fields of \u0027struct bitmap\u0027 into a \u0027storage\u0027 substruct.\n\nThis new \u0027struct bitmap_storage\u0027 reflects the external storage of the\nbitmap.\nHaving this clearly defined will make it easier to change the storage\nused while the array is active.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "d189122d4bca2647441fdc170dc6d4cc5c8bb2fa",
      "tree": "d5907014aaef1be959b93d0fb4a327e11673f855",
      "parents": [
        "27581e5ae01f77b5472dc5c2368b41063fed7f37"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue May 22 13:55:09 2012 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue May 22 13:55:09 2012 +1000"
      },
      "message": "md/bitmap: change *_page_attr() to take a page number, not a page.\n\nMost often we have the page number, not the page.  And that is what\nthe  *_page_attr() functions really want.  So change the arguments to\ntake that number.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "27581e5ae01f77b5472dc5c2368b41063fed7f37",
      "tree": "202d2ee37bcfb82ce09bc72c0d3d81045a941637",
      "parents": [
        "ef99bf480de9bde9d3b2afdf05324670fab4e571"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue May 22 13:55:08 2012 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue May 22 13:55:08 2012 +1000"
      },
      "message": "md/bitmap: centralise allocation of bitmap file pages.\n\nInstead of allocating pages in read_sb_page, read_page and\nbitmap_read_sb, allocate them all in bitmap_init_from disk.\n\nAlso replace the hack of calling \"attach_page_buffers(page, NULL)\" to\nensure that free_buffer() won\u0027t complain, by putting a test for\nPagePrivate in free_buffer().\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "ef99bf480de9bde9d3b2afdf05324670fab4e571",
      "tree": "49afa5fd6e7e8060f3601c04bb25b96e14d14a39",
      "parents": [
        "6409bb05a9831f6af36a20b97cda13059c2ef1b6"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue May 22 13:55:08 2012 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue May 22 13:55:08 2012 +1000"
      },
      "message": "md/bitmap: allow a bitmap with no backing storage.\n\nAn md bitmap comprises two parts\n - internal counting of active writes per \u0027chunk\u0027.\n - external storage of whether there are any active writes on\n   each chunk\n\nThe second requires the first, but the first doesn\u0027t require the\nsecond.\n\nNot having backing storage means that the bitmap cannot expedite\nresync after a crash, but it still allows us to expedite the recovery\nof a recently-removed device.\n\nSo: allow a bitmap to exist even if there is no backing device.\nIn that case we default to 128M chunks.\n\nA particular value of this is that we can remove and re-add a bitmap\n(possibly of a different granularity) on a degraded array, and not\nlose the information needed to fast-recover the missing device.\n\nWe don\u0027t actually activate these bitmaps yet - that will come\nin a later patch.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "6409bb05a9831f6af36a20b97cda13059c2ef1b6",
      "tree": "c997526bd60d3fb5cafea604e5b240c2479e20d9",
      "parents": [
        "bf07bb7d5be813630d3530be274b3324f85e310c"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue May 22 13:55:07 2012 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue May 22 13:55:07 2012 +1000"
      },
      "message": "md/bitmap: add new \u0027space\u0027 attribute for bitmaps.\n\nIf we are to allow bitmaps to be resized when the array is resized,\nwe need to know how much space there is.\n\nSo create an attribute to store this information and set appropriate\ndefaults.\n\nIt can be set more precisely via sysfs, or future metadata extensions\nmay allow it to be recorded.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "bf07bb7d5be813630d3530be274b3324f85e310c",
      "tree": "22fc12593b6d377ceb7b94c42d346f2946319c48",
      "parents": [
        "bc0934f0477d0a2350a478004799d9c064923b7b"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue May 22 13:55:06 2012 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue May 22 13:55:06 2012 +1000"
      },
      "message": "md/bitmap: disentangle two different \u0027pending\u0027 flags.\n\nThere are two different \u0027pending\u0027 concepts in the handling of the\nwrite intent bitmap.\n\nFirstly, a \u0027page\u0027 from the bitmap (which container PAGE_SIZE*8 bits)\nmay have changes (bits cleared) that should be written in due course.\nThere is no hurry for these and the page will transition from\nPENDING to NEEDWRITE and will then be written, though if it ever\nbecomes DIRTY it will be written much sooner and PENDING will be\ncleared.\n\nSecondly, a page of counters - which contains PAGE_SIZE/2 counters, one\nfor each bit, can usefully have a \u0027pending\u0027 flag which indicates if\nany of the counters are low (2 or 1) and ready to be processed by\nbitmap_daemon_work().  If this flag is clear we can skip the whole\npage.\n\nThese two concepts are currently combined in the bitmap-file flag.\nThis causes a tighter connection between the counters and the bitmap\nfile than I would like - as I want to add some flexibility to the\nbitmap file.\n\nSo introduce a new flag with the page-of-counters, and rewrite\nbitmap_daemon_work() so that it handles the two different \u0027pending\u0027\nconcepts separately.\n\nThis also allows us to clear BITMAP_PAGE_PENDING when we write out\na dirty page, which may occasionally reduce the number of times we\nwrite a page.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "b16b1b6cd052acbacc0a15f934bca9b354534d48",
      "tree": "ba5b2e72e04a18a4bd83429f089d16637b9a6343",
      "parents": [
        "69964ea4c7b68c9399f7977aa5b9aa6539a6a98a"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri May 04 17:03:18 2012 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri May 04 17:03:18 2012 +1000"
      },
      "message": "md/bitmap: fix calculation of \u0027chunks\u0027 - missing shift.\n\ncommit 61a0d80c \"md/bitmap: discard CHUNK_BLOCK_SHIFT macro\"\nreplaced CHUNK_BLOCK_RATIO() by the same text that was\nreplacing CHUNK_BLOCK_SHIFT() - which is clearly wrong.\n\nThe result is that \u0027chunks\u0027 is often too small by 1,\nwhich can sometimes result in a crash (not sure how).\n\nSo use the correct replacement, and get rid of CHUNK_BLOCK_RATIO\nwhich is no longe used.\n\nReported-by: Karl Newman \u003csiliconfiend@gmail.com\u003e\nTested-by: Karl Newman \u003csiliconfiend@gmail.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "afbaa90b80b1ec66e5137cc3824746bfdf559b18",
      "tree": "8c0307e41849eef28146343efc4fed75f83a30f1",
      "parents": [
        "f4380a915823dbed0bf8e3cf502ebcf2b7c7f833"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Apr 12 16:05:06 2012 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Apr 12 16:05:06 2012 +1000"
      },
      "message": "md/bitmap: prevent bitmap_daemon_work running while initialising bitmap\n\nIf a bitmap is added while the array is active, it is possible\nfor bitmap_daemon_work to run while the bitmap is being\ninitialised.\nThis is particularly a problem if bitmap_daemon_work sees\nbitmap-\u003efilemap as non-NULL before it has been filled in properly.\nSo hold bitmap_info.mutex while filling in -\u003efilemap\nto prevent problems.\n\nThis patch is suitable for any -stable kernel, though it might not\napply cleanly before about 3.1.\n\nCc: stable@vger.kernel.org\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "9e41dd35b39c2cf40767332b8f914d7afe25cc40",
      "tree": "b694a4d27b3fd7beb1881d5ad993303fe7309c59",
      "parents": [
        "5020ad7d143ccfcf8149974096220d59e5572120"
      ],
      "author": {
        "name": "Andrei Warkentin",
        "email": "andrey.warkentin@gmail.com",
        "time": "Thu Apr 12 15:55:21 2012 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Apr 12 15:55:21 2012 +1000"
      },
      "message": "MD: Bitmap version cleanup.\n\nbitmap_new_disk_sb() would still create V3 bitmap superblock\nwith host-endian layout.\n\nPerhaps I\u0027m confused, but shouldn\u0027t bitmap_new_disk_sb() be\ncreating a V4 bitmap superblock instead, that is portable,\nas per comment in bitmap.h?\n\nSigned-off-by: Andrei Warkentin \u003candrey.warkentin@gmail.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "267d7b23dd62f6ec55e0fba777e456495c308fc7",
      "tree": "5c9fe0f07d5b87029b9c07eb003596c05d161a8f",
      "parents": [
        "28f23d1f3b6a6078312b6e9585e583cc7326fe22",
        "ecb178bb2b154a40cfae9fa4c42e62ccfa81ac6b"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Mar 22 12:29:50 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Mar 22 12:29:50 2012 -0700"
      },
      "message": "Merge tag \u0027md-3.4\u0027 of git://neil.brown.name/md\n\nPull md updates for 3.4 from Neil Brown:\n \"Mostly tidying up code in preparation for some bigger changes next\n  time.\n\n  A few bug fixes tagged for -stable.\n\n  Main functionality change is that some RAID10 arrays can now grow to\n  use extra space that may have been made available on the individual\n  devices.\"\n\nFixed up trivial conflicts with the k[un]map_atomic() cleanups in\ndrivers/md/bitmap.c.\n\n* tag \u0027md-3.4\u0027 of git://neil.brown.name/md: (22 commits)\n  md: Add judgement bb-\u003eunacked_exist in function md_ack_all_badblocks().\n  md: fix clearing of the \u0027changed\u0027 flags for the bad blocks list.\n  md/bitmap: discard CHUNK_BLOCK_SHIFT macro\n  md/bitmap: remove unnecessary indirection when allocating.\n  md/bitmap: remove some pointless locking.\n  md/bitmap: change a \u0027goto\u0027 to a normal \u0027if\u0027 construct.\n  md/bitmap: move printing of bitmap status to bitmap.c\n  md/bitmap: remove some unused noise from bitmap.h\n  md/raid10 - support resizing some RAID10 arrays.\n  md/raid1: handle merge_bvec_fn in member devices.\n  md/raid10: handle merge_bvec_fn in member devices.\n  md: add proper merge_bvec handling to RAID0 and Linear.\n  md: tidy up rdev_for_each usage.\n  md/raid1,raid10: avoid deadlock during resync/recovery.\n  md/bitmap: ensure to load bitmap when creating via sysfs.\n  md: don\u0027t set md arrays to readonly on shutdown.\n  md: allow re-add to failed arrays.\n  md/raid5: use atomic_dec_return() instead of atomic_dec() and atomic_read().\n  md: Use existed macros instead of numbers\n  md/raid5: removed unused \u0027added_devices\u0027 variable.\n  ...\n"
    },
    {
      "commit": "b2f46e6882564897f6ea3ad904f0a65dc1c6cb3b",
      "tree": "e7c664de2956945c0c37b4895b134253196d006a",
      "parents": [
        "2a156d094d590e1cb946d1c353f1c1a89013f822"
      ],
      "author": {
        "name": "Cong Wang",
        "email": "amwang@redhat.com",
        "time": "Mon Nov 28 13:25:44 2011 +0800"
      },
      "committer": {
        "name": "Cong Wang",
        "email": "xiyou.wangcong@gmail.com",
        "time": "Tue Mar 20 21:48:18 2012 +0800"
      },
      "message": "md: remove the second argument of k[un]map_atomic()\n\nAcked-by: NeilBrown \u003cneilb@suse.de\u003e\nSigned-off-by: Cong Wang \u003camwang@redhat.com\u003e\n"
    },
    {
      "commit": "61a0d80ce4ab5b4fb9ecb38f1fb19654778b71ed",
      "tree": "21631162d46575db6645636d1c18b8797247d0c9",
      "parents": [
        "792a1d4bbf960000f066358f0a8c6e769c8c72bc"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Mar 19 12:46:41 2012 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Mar 19 12:46:41 2012 +1100"
      },
      "message": "md/bitmap: discard CHUNK_BLOCK_SHIFT macro\n\nBe redefining -\u003echunkshift as the shift from sectors to chunks rather\nthan bytes to chunks, we can just use \"bitmap-\u003echunkshift\" which is\nshorter than the macro call, and less indirect.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "792a1d4bbf960000f066358f0a8c6e769c8c72bc",
      "tree": "97e9a5c0854551c3fa80e88851ad3317af24ca13",
      "parents": [
        "5a6c824ebb7c9f8dbbc92ffd3528e6366cad1a54"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Mar 19 12:46:41 2012 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Mar 19 12:46:41 2012 +1100"
      },
      "message": "md/bitmap: remove unnecessary indirection when allocating.\n\nThese funcitons don\u0027t add anything useful except possibly the trace\npoints, and I don\u0027t think they are worth the extra indirection.\nSo remove them.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "5a6c824ebb7c9f8dbbc92ffd3528e6366cad1a54",
      "tree": "e78d8527ae9e7be05001ed12f1cad01f8719bde0",
      "parents": [
        "278c1ca2f254d0695d2eba79793d20ce785323ea"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Mar 19 12:46:40 2012 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Mar 19 12:46:40 2012 +1100"
      },
      "message": "md/bitmap: remove some pointless locking.\n\nThere is nothing gained by holding a lock while we check if a pointer\nis NULL or not.  If there could be a race, then it could become NULL\nimmediately after the unlock - but there is no race here.\n\nSo just remove the locking.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "278c1ca2f254d0695d2eba79793d20ce785323ea",
      "tree": "42be282251b17c16e030d7083eef4bbeefe60b41",
      "parents": [
        "57148964d946614ffc6621539096ded1e7d896ab"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Mar 19 12:46:40 2012 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Mar 19 12:46:40 2012 +1100"
      },
      "message": "md/bitmap: change a \u0027goto\u0027 to a normal \u0027if\u0027 construct.\n\nThe use of a goto makes the control flow more obscure here.\n\nSo make it a normal:\n  if (x) {\n     Y;\n  }\n\nNo functional change.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "57148964d946614ffc6621539096ded1e7d896ab",
      "tree": "d4bdadf58d740fcdb3c65063a5706cc3902f2b9b",
      "parents": [
        "4ba97dff719b4cbeb7a4f6beddd2feb7404102d8"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Mar 19 12:46:40 2012 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Mar 19 12:46:40 2012 +1100"
      },
      "message": "md/bitmap: move printing of bitmap status to bitmap.c\n\nThe part of /proc/mdstat which describes the bitmap should really\nbe generated by code in bitmap.c.  So move it there.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "dafb20fa34320a472deb7442f25a0c086e0feb33",
      "tree": "2ff501805f8a6d08119f1f1a7248f579d52e491b",
      "parents": [
        "d6b42dcb995e6acd7cc276774e751ffc9f0ef4bf"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Mar 19 12:46:39 2012 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Mar 19 12:46:39 2012 +1100"
      },
      "message": "md: tidy up rdev_for_each usage.\n\nmd.h has an \u0027rdev_for_each()\u0027 macro for iterating the rdevs in an\nmddev.  However it uses the \u0027safe\u0027 version of list_for_each_entry,\nand so requires the extra variable, but doesn\u0027t include \u0027safe\u0027 in the\nname, which is useful documentation.\n\nConsequently some places use this safe version without needing it, and\nmany use an explicity list_for_each entry.\n\nSo:\n - rename rdev_for_each to rdev_for_each_safe\n - create a new rdev_for_each which uses the plain\n   list_for_each_entry,\n - use the \u0027safe\u0027 version only where needed, and convert all other\n   list_for_each_entry calls to use rdev_for_each.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "4474ca42e2577563a919fd3ed782e2ec55bf11a2",
      "tree": "db451c8fad37b281ddbf1d00a779257537cc61ff",
      "parents": [
        "c744a65c1e2d59acc54333ce80a5b0702a98010b"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Mar 19 12:46:37 2012 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Mar 19 12:46:37 2012 +1100"
      },
      "message": "md/bitmap: ensure to load bitmap when creating via sysfs.\n\nWhen commit 69e51b449d383e (md/bitmap:  separate out loading a bitmap...)\ncreated bitmap_load, it missed calling it after bitmap_create when a\nbitmap is created through the sysfs interface.\nSo if a bitmap is added this way, we don\u0027t allocate memory properly\nand can crash.\n\nThis is suitable for any -stable release since 2.6.35.\nCc: stable@vger.kernel.org\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "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"
    }
  ],
  "next": "58c0fed400603a802968b23ddf78f029c5a84e41"
}
