)]}'
{
  "log": [
    {
      "commit": "4044ba58dd15cb01797c4fd034f39ef4a75f7cc3",
      "tree": "e1bea8143538fc3eaeeb8578c2f9231e32809a25",
      "parents": [
        "efeb53c0e57213e843b7ef3cc6ebcdea7d6186ac"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Jan 09 08:31:11 2009 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Jan 09 08:31:11 2009 +1100"
      },
      "message": "md: don\u0027t retry recovery of raid1 that fails due to error on source drive.\n\nIf a raid1 has only one working drive and it has a sector which\ngives an error on read, then an attempt to recover onto a spare will\nfail, but as the single remaining drive is not removed from the\narray, the recovery will be immediately re-attempted, resulting\nin an infinite recovery loop.\n\nSo detect this situation and don\u0027t retry recovery once an error\non the lone remaining drive is detected.\n\nAllow recovery to be retried once every time a spare is added\nin case the problem wasn\u0027t actually a media error.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "efeb53c0e57213e843b7ef3cc6ebcdea7d6186ac",
      "tree": "ef580effd8809fb0bc5d6ffa6f3b8abaa9180539",
      "parents": [
        "d3374825ce57ba2214d375023979f6197ccc1385"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Jan 09 08:31:10 2009 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Jan 09 08:31:10 2009 +1100"
      },
      "message": "md: Allow md devices to be created by name.\n\nUsing sequential numbers to identify md devices is somewhat artificial.\nUsing names can be a lot more user-friendly.\n\nAlso, creating md devices by opening the device special file is a bit\nawkward.\n\nSo this patch provides a new option for creating and naming devices.\n\nWriting a name such as \"md_home\" to\n    /sys/modules/md_mod/parameters/new_array\nwill cause an array with that name to be created.  It will appear in\n/sys/block/ /proc/partitions and /proc/mdstat as \u0027md_home\u0027.\nIt will have an arbitrary minor number allocated.\n\nmd devices that a created by an open are destroyed on the last\nclose when the device is inactive.\nFor named md devices, they will not be destroyed until the array\nis explicitly stopped, either with the STOP_ARRAY ioctl or by\nwriting \u0027clear\u0027 to /sys/block/md_XXXX/md/array_state.\n\nThe name of the array must start \u0027md_\u0027 to avoid conflict with\nother devices.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "d3374825ce57ba2214d375023979f6197ccc1385",
      "tree": "441ea927a7c702e4eadeafbac8be97d664bfb83b",
      "parents": [
        "a21d15042d8cd736caf82c2bac564f3f93f3d017"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Jan 09 08:31:10 2009 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Jan 09 08:31:10 2009 +1100"
      },
      "message": "md: make devices disappear when they are no longer needed.\n\nCurrently md devices, once created, never disappear until the module\nis unloaded.  This is essentially because the gendisk holds a\nreference to the mddev, and the mddev holds a reference to the\ngendisk, this a circular reference.\n\nIf we drop the reference from mddev to gendisk, then we need to ensure\nthat the mddev is destroyed when the gendisk is destroyed.  However it\nis not possible to hook into the gendisk destruction process to enable\nthis.\n\nSo we drop the reference from the gendisk to the mddev and destroy the\ngendisk when the mddev gets destroyed.  However this has a\ncomplication.\nBetween the call\n   __blkdev_get-\u003eget_gendisk-\u003ekobj_lookup-\u003emd_probe\nand the call\n   __blkdev_get-\u003emd_open\n\nthere is no obvious way to hold a reference on the mddev any more, so\nunless something is done, it will disappear and gendisk will be\ndestroyed prematurely.\n\nAlso, once we decide to destroy the mddev, there will be an unlockable\nmoment before the gendisk is unlinked (blk_unregister_region) during\nwhich a new reference to the gendisk can be created.  We need to\nensure that this reference can not be used.  i.e. the -\u003eopen must\nfail.\n\nSo:\n 1/  in md_probe we set a flag in the mddev (hold_active) which\n     indicates that the array should be treated as active, even\n     though there are no references, and no appearance of activity.\n     This is cleared by md_release when the device is closed if it\n     is no longer needed.\n     This ensures that the gendisk will survive between md_probe and\n     md_open.\n\n 2/  In md_open we check if the mddev we expect to open matches\n     the gendisk that we did open.\n     If there is a mismatch we return -ERESTARTSYS and modify\n     __blkdev_get to retry from the top in that case.\n     In the -ERESTARTSYS sys case we make sure to wait until\n     the old gendisk (that we succeeded in opening) is really gone so\n     we loop at most once.\n\nSome udev configurations will always open an md device when it first\nappears.   If we allow an md device that was just created by an open\nto disappear on an immediate close, then this can race with such udev\nconfigurations and result in an infinite loop the device being opened\nand closed, then re-open due to the \u0027ADD\u0027 even from the first open,\nand then close and so on.\nSo we make sure an md device, once created by an open, remains active\nat least until some md \u0027ioctl\u0027 has been made on it.  This means that\nall normal usage of md devices will allow them to disappear promptly\nwhen not needed, but the worst that an incorrect usage will do it\ncause an inactive md device to be left in existence (it can easily be\nremoved).\n\nAs an array can be stopped by writing to a sysfs attribute\n  echo clear \u003e /sys/block/mdXXX/md/array_state\nwe need to use scheduled work for deleting the gendisk and other\nkobjects.  This allows us to wait for any pending gendisk deletion to\ncomplete by simply calling flush_scheduled_work().\n\n\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "a21d15042d8cd736caf82c2bac564f3f93f3d017",
      "tree": "d430b6ae126e9bc8139d1c491b80a18cc86b27f1",
      "parents": [
        "8b76539823d71576927e3eb08b395eb6620f628d"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Jan 09 08:31:09 2009 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Jan 09 08:31:09 2009 +1100"
      },
      "message": "md: centralise all freeing of an \u0027mddev\u0027 in \u0027md_free\u0027\n\nmd_free is the .release handler for the md kobj_type.\nSo it makes sense to release all the objects referenced by\nthe mddev in there, rather than just prior to calling kobject_put\nfor what we think is the last time.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "8b76539823d71576927e3eb08b395eb6620f628d",
      "tree": "37f9c4da6c861a69b4695ea7818eab2cf6ce95f4",
      "parents": [
        "cd2ac9321c26dc7a76455cd2a4df89123fa2b73e"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Jan 09 08:31:08 2009 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Jan 09 08:31:08 2009 +1100"
      },
      "message": "md: move allocation of -\u003equeue from mddev_find to md_probe\n\nIt is more balanced to just do simple initialisation in mddev_find,\nwhich allocates and links a new md device, and leave all the\nmore sophisticated allocation to md_probe (which calls mddev_find).\nmd_probe already allocated the gendisk.  It should allocate the\nqueue too.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "cd2ac9321c26dc7a76455cd2a4df89123fa2b73e",
      "tree": "8163a2cc791282cf32fafed19a60f357882d6169",
      "parents": [
        "159ec1fc060ab22b157a62364045f5e98749c4d3"
      ],
      "author": {
        "name": "Cheng Renquan",
        "email": "crquan@gmail.com",
        "time": "Fri Jan 09 08:31:08 2009 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Jan 09 08:31:08 2009 +1100"
      },
      "message": "md: need another print_sb for mdp_superblock_1\n\nmd_print_devices is called in two code path: MD_BUG(...), and md_ioctl\nwith PRINT_RAID_DEBUG.  it will dump out all in use md devices\ninformation;\n\nHowever, it wrongly processed two types of superblock in one:\n\nThe header file \u003clinux/raid/md_p.h\u003e has defined two types of superblock,\nstruct mdp_superblock_s (typedefed with mdp_super_t) according to md with\nmetadata 0.90, and struct mdp_superblock_1 according to md with metadata\n1.0 and later,\n\nThese two types of superblock are very different,\n\nThe md_print_devices code processed them both in mdp_super_t, that would\nlead to wrong informaton dump like:\n\n\t[ 6742.345877]\n\t[ 6742.345887] md:\t**********************************\n\t[ 6742.345890] md:\t* \u003cCOMPLETE RAID STATE PRINTOUT\u003e *\n\t[ 6742.345892] md:\t**********************************\n\t[ 6742.345896] md1: \u003cram7\u003e\u003cram6\u003e\u003cram5\u003e\u003cram4\u003e\n\t[ 6742.345907] md: rdev ram7, SZ:00065472 F:0 S:1 DN:3\n\t[ 6742.345909] md: rdev superblock:\n\t[ 6742.345914] md:  SB: (V:0.90.0) ID:\u003c42ef13c7.598c059a.5f9f1645.801e9ee6\u003e CT:4919856d\n\t[ 6742.345918] md:     L5 S00065472 ND:4 RD:4 md1 LO:2 CS:65536\n\t[ 6742.345922] md:     UT:4919856d ST:1 AD:4 WD:4 FD:0 SD:0 CSUM:b7992907 E:00000001\n\t[ 6742.345924]      D  0:  DISK\u003cN:0,(1,8),R:0,S:6\u003e\n\t[ 6742.345930]      D  1:  DISK\u003cN:1,(1,10),R:1,S:6\u003e\n\t[ 6742.345933]      D  2:  DISK\u003cN:2,(1,12),R:2,S:6\u003e\n\t[ 6742.345937]      D  3:  DISK\u003cN:3,(1,14),R:3,S:6\u003e\n\t[ 6742.345942] md:     THIS:  DISK\u003cN:3,(1,14),R:3,S:6\u003e\n\t...\n\t[ 6742.346058] md0: \u003cram3\u003e\u003cram2\u003e\u003cram1\u003e\u003cram0\u003e\n\t[ 6742.346067] md: rdev ram3, SZ:00065472 F:0 S:1 DN:3\n\t[ 6742.346070] md: rdev superblock:\n\t[ 6742.346073] md:  SB: (V:1.0.0) ID:\u003c369aad81.00000000.00000000.00000000\u003e CT:9a322a9c\n\t[ 6742.346077] md:     L-1507699579 S976570180 ND:48 RD:0 md0 LO:65536 CS:196610\n\t[ 6742.346081] md:     UT:00000018 ST:0 AD:131048 WD:0 FD:8 SD:0 CSUM:00000000 E:00000000\n\t[ 6742.346084]      D  0:  DISK\u003cN:-1,(-1,-1),R:-1,S:-1\u003e\n\t[ 6742.346089]      D  1:  DISK\u003cN:-1,(-1,-1),R:-1,S:-1\u003e\n\t[ 6742.346092]      D  2:  DISK\u003cN:-1,(-1,-1),R:-1,S:-1\u003e\n\t[ 6742.346096]      D  3:  DISK\u003cN:-1,(-1,-1),R:-1,S:-1\u003e\n\t[ 6742.346102] md:     THIS:  DISK\u003cN:0,(0,0),R:0,S:0\u003e\n\t...\n\t[ 6742.346219] md:\t**********************************\n\t[ 6742.346221]\n\nHere md1 is metadata 0.90.0, and md0 is metadata 1.2\n\nAfter some more code to distinguish these two types of superblock, in this patch,\n\nit will generate dump information like:\n\n\t[ 7906.755790]\n\t[ 7906.755799] md:\t**********************************\n\t[ 7906.755802] md:\t* \u003cCOMPLETE RAID STATE PRINTOUT\u003e *\n\t[ 7906.755804] md:\t**********************************\n\t[ 7906.755808] md1: \u003cram7\u003e\u003cram6\u003e\u003cram5\u003e\u003cram4\u003e\n\t[ 7906.755819] md: rdev ram7, SZ:00065472 F:0 S:1 DN:3\n\t[ 7906.755821] md: rdev superblock (MJ:0):\n\t[ 7906.755826] md:  SB: (V:0.90.0) ID:\u003c3fca7a0d.a612bfed.5f9f1645.801e9ee6\u003e CT:491989f3\n\t[ 7906.755830] md:     L5 S00065472 ND:4 RD:4 md1 LO:2 CS:65536\n\t[ 7906.755834] md:     UT:491989f3 ST:1 AD:4 WD:4 FD:0 SD:0 CSUM:00fb52ad E:00000001\n\t[ 7906.755836]      D  0:  DISK\u003cN:0,(1,8),R:0,S:6\u003e\n\t[ 7906.755842]      D  1:  DISK\u003cN:1,(1,10),R:1,S:6\u003e\n\t[ 7906.755845]      D  2:  DISK\u003cN:2,(1,12),R:2,S:6\u003e\n\t[ 7906.755849]      D  3:  DISK\u003cN:3,(1,14),R:3,S:6\u003e\n\t[ 7906.755855] md:     THIS:  DISK\u003cN:3,(1,14),R:3,S:6\u003e\n\t...\n\t[ 7906.755972] md0: \u003cram3\u003e\u003cram2\u003e\u003cram1\u003e\u003cram0\u003e\n\t[ 7906.755981] md: rdev ram3, SZ:00065472 F:0 S:1 DN:3\n\t[ 7906.755984] md: rdev superblock (MJ:1):\n\t[ 7906.755989] md:  SB: (V:1) (F:0) Array-ID:\u003c5fbcf158:55aa:5fbe:9a79:1e939880dcbd\u003e\n\t[ 7906.755990] md:    Name: \"DG5:0\" CT:1226410480\n\t[ 7906.755998] md:       L5 SZ130944 RD:4 LO:2 CS:128 DO:24 DS:131048 SO:8 RO:0\n\t[ 7906.755999] md:     Dev:00000003 UUID: 9194d744:87f7:a448:85f2:7497b84ce30a\n\t[ 7906.756001] md:       (F:0) UT:1226410480 Events:0 ResyncOffset:-1 CSUM:0dbcd829\n\t[ 7906.756003] md:         (MaxDev:384)\n\t...\n\t[ 7906.756113] md:\t**********************************\n\t[ 7906.756116]\n\nthis md0 (metadata 1.2) information dumping is exactly according to struct\nmdp_superblock_1.\n\nSigned-off-by: Cheng Renquan \u003ccrquan@gmail.com\u003e\nCc: Neil Brown \u003cneilb@suse.de\u003e\nCc: Dan Williams \u003cdan.j.williams@gmail.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "159ec1fc060ab22b157a62364045f5e98749c4d3",
      "tree": "1de0edfd782245b271d2898e36ae76c00e1e1b6d",
      "parents": [
        "ccacc7d2cf03114a24ab903f710118e9e5d43273"
      ],
      "author": {
        "name": "Cheng Renquan",
        "email": "crquan@gmail.com",
        "time": "Fri Jan 09 08:31:08 2009 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Jan 09 08:31:08 2009 +1100"
      },
      "message": "md: use list_for_each_entry macro directly\n\nThe rdev_for_each macro defined in \u003clinux/raid/md_k.h\u003e is identical to\nlist_for_each_entry_safe, from \u003clinux/list.h\u003e, it should be defined to\nuse list_for_each_entry_safe, instead of reinventing the wheel.\n\nBut some calls to each_entry_safe don\u0027t really need a safe version,\njust a direct list_for_each_entry is enough, this could save a temp\nvariable (tmp) in every function that used rdev_for_each.\n\nIn this patch, most rdev_for_each loops are replaced by list_for_each_entry,\ntotally save many tmp vars; and only in the other situations that will call\nlist_del to delete an entry, the safe version is used.\n\nSigned-off-by: Cheng Renquan \u003ccrquan@gmail.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "0c3573f19d135d718264e38c46597295bd6154b7",
      "tree": "0943035f89d163d9d7b354445303fb03e5ea7fb1",
      "parents": [
        "538452700d95480c16e7aa6b10ff77cd937d33f4"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Jan 09 08:31:05 2009 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Jan 09 08:31:05 2009 +1100"
      },
      "message": "md: use sysfs_notify_dirent to notify changes to md/sync_action.\n\nThere is no compelling need for this, but sysfs_notify_dirent is a\nnicer interface and the change is good for consistency.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "cb3ac42b8af357fdd9ad838234245b39e5bdb7fe",
      "tree": "f6c354c2ec374fa35fe64902204d212f0ef30bd4",
      "parents": [
        "45beca08dd8b6d6a65c5ffd730af2eac7a2c7a03"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Nov 06 17:28:01 2008 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Nov 06 17:28:01 2008 +1100"
      },
      "message": "md: revert the recent addition of a call to the BLKRRPART ioctl.\n\nIt turns out that it is only safe to call blkdev_ioctl when the device\nis actually open (as -\u003ebd_disk is set to NULL on last close).  And it\nis quite possible for do_md_stop to be called when the device is not\nopen.  So discard the call to blkdev_ioctl(BLKRRPART) which was\nadded in\n   commit 934d9c23b4c7e31840a895ba4b7e88d6413c81f3\n\nIt is just as easy to call this ioctl from userspace when needed (on\nmdadm -S) so leave it out of the kernel\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "934d9c23b4c7e31840a895ba4b7e88d6413c81f3",
      "tree": "989d1ac0be656e51d44eaf8513076917bfed3adf",
      "parents": [
        "f8d56f1771e4867acc461146764b4feeb5245669"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Oct 28 17:01:23 2008 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Oct 28 17:01:23 2008 +1100"
      },
      "message": "md: destroy partitions and notify udev when md array is stopped.\n\nmd arrays are not currently destroyed when they are stopped - they\nremain in /sys/block.  Last time I tried this I tripped over locking\ntoo much.\n\nA consequence of this is that udev doesn\u0027t remove anything from /dev.\nThis is rather ugly.\n\nAs an interim measure until proper device removal can be achieved,\nmake sure all partitions are removed using the BLKRRPART ioctl, and\nsend a KOBJ_CHANGE when an md array is stopped.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "f8d56f1771e4867acc461146764b4feeb5245669",
      "tree": "9d4857b72287f3170818b4b883c232e3ffb677af",
      "parents": [
        "3d6eadcb5008beca1b289983ffd7771d1e947bac",
        "92850bbd71228730c80efd491e7427650188d359"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Oct 26 16:42:18 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Oct 26 16:42:18 2008 -0700"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://neil.brown.name/md\n\n* \u0027for-linus\u0027 of git://neil.brown.name/md:\n  md: allow extended partitions on md devices.\n  md: use sysfs_notify_dirent to notify changes to md/dev-xxx/state\n  md: use sysfs_notify_dirent to notify changes to md/array_state\n"
    },
    {
      "commit": "9a1c3542768b5a58e45a9216921cd10a3bae1205",
      "tree": "c20ffda950db868ec7e1e35aed532962de2ecfd9",
      "parents": [
        "511de73ff09034fb89c8d54bed201a10d057328c"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Fri Feb 22 20:40:24 2008 -0500"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue Oct 21 07:48:58 2008 -0400"
      },
      "message": "[PATCH] pass fmode_t to blkdev_put()\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "a39907fa2fdb73d3c0fb06eff06d855c3298d707",
      "tree": "d8be7f2fb0fe6ddf037e40b2cc958a6c07a32d95",
      "parents": [
        "fe5f9f2cd57c2ce56f36c66e87a10d4b7a158505"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sun Mar 02 10:31:15 2008 -0500"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue Oct 21 07:48:31 2008 -0400"
      },
      "message": "[PATCH] switch md\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "d4430d62fa77208824a37fe6f85ab2831d274769",
      "tree": "5d4d0bca31e63eb208fbebe4f39c912b964c1e4d",
      "parents": [
        "badf8082c33d18b118d3a6f1b32d5ea6b97d3839"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sun Mar 02 09:09:22 2008 -0500"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue Oct 21 07:47:32 2008 -0400"
      },
      "message": "[PATCH] beginning of methods conversion\n\nTo keep the size of changesets sane we split the switch by drivers;\nto keep the damn thing bisectable we do the following:\n\t1) rename the affected methods, add ones with correct\nprototypes, make (few) callers handle both.  That\u0027s this changeset.\n\t2) for each driver convert to new methods.  *ALL* drivers\nare converted in this series.\n\t3) kill the old (renamed) methods.\n\nNote that it _is_ a flagday; all in-tree drivers are converted and by the\nend of this series no trace of old methods remain.  The only reason why\nwe do that this way is to keep the damn thing bisectable and allow per-driver\ndebugging if anything goes wrong.\n\nNew methods:\n\topen(bdev, mode)\n\trelease(disk, mode)\n\tioctl(bdev, mode, cmd, arg)\t\t/* Called without BKL */\n\tcompat_ioctl(bdev, mode, cmd, arg)\n\tlocked_ioctl(bdev, mode, cmd, arg)\t/* Called with BKL, legacy */\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "92850bbd71228730c80efd491e7427650188d359",
      "tree": "1d9d87d8eead78e2f6d37db62b580a8b7961844e",
      "parents": [
        "3c0ee63a64a20351ed6c16ec797e1f8c850741ea"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Oct 21 13:25:32 2008 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Oct 21 13:25:32 2008 +1100"
      },
      "message": "md: allow extended partitions on md devices.\n\nThe new extended partition support provides a much nicer was\nto have partitions on md devices that the \u0027mdp\u0027 alternate major.\nWe cannot really get rid of \u0027mdp\u0027 at this time, but we can\nenable extended partitions as that will probably make life\neasier for sysadmins.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "3c0ee63a64a20351ed6c16ec797e1f8c850741ea",
      "tree": "482b825a00356a2b7b605065ce1d6ebe87591eb5",
      "parents": [
        "b62b75905d571c29262a6c38cf9e5f089c203871"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Oct 21 13:25:28 2008 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Oct 21 13:25:28 2008 +1100"
      },
      "message": "md: use sysfs_notify_dirent to notify changes to md/dev-xxx/state\n\nThe \u0027state\u0027 file for a device reports, for example, when the device\nhas failed.  Changes should be reported to userspace ASAP without\nthe possibility of blocking on low-memory.  sysfs_notify does\nhave that possibility (as it takes a mutex which can be held\nacross a kmalloc) so use sysfs_notify_dirent instead.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "b62b75905d571c29262a6c38cf9e5f089c203871",
      "tree": "0ca9a74c1d53aad0532aaebebb031b9d8edc5d90",
      "parents": [
        "0cfd81031a26717fe14380d18275f8e217571615"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Oct 21 13:25:21 2008 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Oct 21 13:25:21 2008 +1100"
      },
      "message": "md: use sysfs_notify_dirent to notify changes to md/array_state\n\nNow that we have sysfs_notify_dirent, use it to notify changes\nto md/array_state.\nAs sysfs_notify_dirent can be called in atomic context, we can\nremove the delayed notify and the MD_NOTIFY_ARRAY_STATE flag.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "97ce0a7f9caf9d715cee815a016ee21575f71c95",
      "tree": "b35d4f84795a9b3f20a22faa43148a9c2c68d051",
      "parents": [
        "08ff39f1c8f2134f7d0f38123ca5952371665cc5"
      ],
      "author": {
        "name": "Dan Williams",
        "email": "dan.j.williams@gmail.com",
        "time": "Wed Sep 24 22:48:19 2008 -0700"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Oct 16 17:03:08 2008 +1100"
      },
      "message": "md: fix input truncation in safe_delay_store()\n\nsafe_delay_store() currently truncates the last character of input since\nit tells strlcpy that the buffer can only hold \u0027len\u0027 characters, off by\none.  sysfs already null terminates the buffer, so just increase the\nlast argument to strlcpy.\n\nSigned-off-by: Dan Williams \u003cdan.j.williams@intel.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "255707274ea25d486b7de060a30ba4ac50593408",
      "tree": "2057cd3ee600f4b5a88c743674fcf9c138d44b48",
      "parents": [
        "4bbf3771ca40d0aaec8316d0e7476b16010288e5"
      ],
      "author": {
        "name": "Stephen Rothwell",
        "email": "sfr@canb.auug.org.au",
        "time": "Wed Oct 15 09:09:21 2008 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed Oct 15 21:57:05 2008 +1100"
      },
      "message": "md: build failure due to missing delay.h\n\nToday\u0027s linux-next build (powerpc ppc64_defconfig) failed like this:\n\ndrivers/md/raid1.c: In function \u0027sync_request\u0027:\ndrivers/md/raid1.c:1759: error: implicit declaration of function \u0027msleep_interruptible\u0027\nmake[3]: *** [drivers/md/raid1.o] Error 1\nmake[3]: *** Waiting for unfinished jobs....\ndrivers/md/raid10.c: In function \u0027sync_request\u0027:\ndrivers/md/raid10.c:1749: error: implicit declaration of function \u0027msleep_interruptible\u0027\nmake[3]: *** [drivers/md/raid10.o] Error 1\ndrivers/md/md.c: In function \u0027md_do_sync\u0027:\ndrivers/md/md.c:5915: error: implicit declaration of function \u0027msleep\u0027\n\nCaused by commit 6caa3b0bbdb474647f6bdd8a958ffc46f78d8d58 (\"md: Remove\nunnecessary #includes, #defines, and function declarations\").  I added\nthe following patch.\n\nSigned-off-by: Stephen Rothwell \u003csfr@canb.auug.org.au\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "4bbf3771ca40d0aaec8316d0e7476b16010288e5",
      "tree": "f7cba1f72612c5d2132f549881c46ff572e01933",
      "parents": [
        "d710e13812600037a723a673dc5c96a071de98d3"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Oct 13 11:55:12 2008 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Oct 13 11:55:12 2008 +1100"
      },
      "message": "md: Relax minimum size restrictions on chunk_size.\n\nCurrently, the \u0027chunk_size\u0027 of an array must be at-least PAGE_SIZE.\n\nThis makes moving an array to a machine with a larger PAGE_SIZE, or\nchanging the kernel to use a larger PAGE_SIZE, can stop an array from\nworking.\n\nFor RAID10 and RAID4/5/6, this is non-trivial to fix as the resync\nprocess works on whole pages at a time, and assumes them to be wholly\nwithin a stripe.  For other raid personalities, this restriction is\nnot needed at all and can be dropped.\n\nSo remove the test on chunk_size from common can, and add it in just\nthe places where it is needed: raid10 and raid4/5/6.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "d710e13812600037a723a673dc5c96a071de98d3",
      "tree": "df8e34fb02cb7909090aa697da7c1db4814ee122",
      "parents": [
        "fb4d8c76e56a887b9eee99fbc55fe82b18625d30"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Oct 13 11:55:12 2008 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Oct 13 11:55:12 2008 +1100"
      },
      "message": "md: remove space after function name in declaration and call.\n\nHaving\n   function (args)\ninstead of\n   function(args)\n\nmake is harder to search for calls of particular functions.\nSo remove all those spaces.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "fb4d8c76e56a887b9eee99fbc55fe82b18625d30",
      "tree": "0ca96887e40db671957b79d493830b9527b04949",
      "parents": [
        "ab5bd5cbc8d4b868378d062eed3d4240930fbb86"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Oct 13 11:55:12 2008 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Oct 13 11:55:12 2008 +1100"
      },
      "message": "md: Remove unnecessary #includes, #defines, and function declarations.\n\nA lot of cruft has gathered over the years.  Time to remove it.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "80268ee9270ebe4847365a7426de91d179e870d0",
      "tree": "0f5d10d1cc86b64030d036e6e322b23caf6aec5c",
      "parents": [
        "ea43ddd8491feccf36267349748ea91b1194481e"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Oct 13 11:55:12 2008 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Oct 13 11:55:12 2008 +1100"
      },
      "message": "md: Don\u0027t try to set an array to \u0027read-auto\u0027 if it is already in that state.\n\n\u0027read-auto\u0027 is a variant of \u0027readonly\u0027 which will switch to writable\non the first write attempt.\n\nCalling do_md_stop to set the array readonly when it is already readonly\nreturns an error.  So make sure not to do that.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "ea43ddd8491feccf36267349748ea91b1194481e",
      "tree": "89ca77c1f9794994eefa16b76f985b502326cfcd",
      "parents": [
        "7d3c6f8717ee6c2bf6cba5fa0bda3b28fbda6015"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Oct 13 11:55:11 2008 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Oct 13 11:55:11 2008 +1100"
      },
      "message": "md: Allow metadata_version to be updated for externally managed metadata.\n\nFor externally managed metadata, the \u0027metadata_version\u0027 sysfs\nattribute is really just a channel for user-space programs to\ncommunicate about how the array is being managed.\nIt can be useful for this to be changed while the array is active.\n\nNormally changes to metadata_version are not permitted while the array\nis active.  Change that so that if the metadata is externally managed,\nthe metadata_version can be changed to a different flavour of external\nmanagement.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "7d3c6f8717ee6c2bf6cba5fa0bda3b28fbda6015",
      "tree": "118b13de811d5eca3e6e3e6410c667ca9cbba607",
      "parents": [
        "fd048088306656824958e7783ffcee27e241b361"
      ],
      "author": {
        "name": "Chris Webb",
        "email": "chris@arachsys.com",
        "time": "Mon Oct 13 11:55:11 2008 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Oct 13 11:55:11 2008 +1100"
      },
      "message": "md: Fix rdev_size_store with size \u003d\u003d 0\n\n\nFix rdev_size_store with size \u003d\u003d 0.\nsize \u003d\u003d 0 means to use the largest size allowed by the\nunderlying device and is used when modifying an active array.\n\nThis fixes a regression introduced by\n commit d7027458d68b2f1752a28016dcf2ffd0a7e8f567\n\nCc: \u003cstable@kernel.org\u003e\nSigned-off-by: Chris Webb \u003cchris@arachsys.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "074a7aca7afa6f230104e8e65eba3420263714a5",
      "tree": "f418313e45bd55be8156c8a3e8f9a216cf63058d",
      "parents": [
        "eddb2e26b5ee3c5da68ba4bf1921ba20e2097bff"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Mon Aug 25 19:56:14 2008 +0900"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Thu Oct 09 08:56:08 2008 +0200"
      },
      "message": "block: move stats from disk to part0\n\nMove stats related fields - stamp, in_flight, dkstats - from disk to\npart0 and unify stat handling such that...\n\n* part_stat_*() now updates part0 together if the specified partition\n  is not part0.  ie. part_stat_*() are now essentially all_stat_*().\n\n* {disk|all}_stat_*() are gone.\n\n* part_round_stats() is updated similary.  It handles part0 stats\n  automatically and disk_round_stats() is killed.\n\n* part_{inc|dec}_in_fligh() is implemented which automatically updates\n  part0 stats for parts other than part0.\n\n* disk_map_sector_rcu() is updated to return part0 if no part matches.\n  Combined with the above changes, this makes NULL special case\n  handling in callers unnecessary.\n\n* Separate stats show code paths for disk are collapsed into part\n  stats show code paths.\n\n* Rename disk_stat_lock/unlock() to part_stat_lock/unlock()\n\nWhile at it, reposition stat handling macros a bit and add missing\nparentheses around macro parameters.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "0762b8bde9729f10f8e6249809660ff2ec3ad735",
      "tree": "12aa94ef16b840f713f833c712d335646c816dc1",
      "parents": [
        "4c46501d1659475dc6c89554af6ce7fe6ecf615c"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Mon Aug 25 19:56:12 2008 +0900"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Thu Oct 09 08:56:08 2008 +0200"
      },
      "message": "block: always set bdev-\u003ebd_part\n\nTill now, bdev-\u003ebd_part is set only if the bdev was for parts other\nthan part0.  This patch makes bdev-\u003ebd_part always set so that code\npaths don\u0027t have to differenciate common handling.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "ed9e1982347b36573cd622ee5f4e2a7ccd79b3fd",
      "tree": "79d834094d655ec97cfc0a382a9207ebc8e711a5",
      "parents": [
        "870d6656126add8e383645732b03df2b7ccd4f94"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Mon Aug 25 19:56:05 2008 +0900"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Thu Oct 09 08:56:07 2008 +0200"
      },
      "message": "block: implement and use {disk|part}_to_dev()\n\nImplement {disk|part}_to_dev() and use them to access generic device\ninstead of directly dereferencing {disk|part}-\u003edev.  To make sure no\nuser is left behind, rename generic devices fields to __dev.\n\nThis is in preparation of unifying partition 0 handling with other\npartitions.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "9744197c3d7b329590c2be33ad7b17409bd798fe",
      "tree": "b82478694d768a54bad23661e31830cc48e95e0f",
      "parents": [
        "45e9c0de2e86485f8b6633fd64ab19cfbff167f6"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Sep 19 11:49:54 2008 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Sep 19 11:49:54 2008 +1000"
      },
      "message": "md: Don\u0027t wait UNINTERRUPTIBLE for other resync to finish\n\nWhen two md arrays share some block device (e.g each uses different\npartitions on the one device), a resync of one array will wait for\nthe resync on the other to finish.\n\nThis can be a long time and as it currently waits TASK_UNINTERRUPTIBLE,\nthe softlockup code notices and complains.\n\nSo use TASK_INTERRUPTIBLE instead and make sure to flush signals\nbefore calling schedule.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "271f5a9b8f8ae0db95de72779d115c9d0b9d3cc5",
      "tree": "814bfe03f1c5ae97da163c8f6b24a0cf67cfd783",
      "parents": [
        "bef69ea0dcce574a425feb0a5aa4c63dd108b9a6"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Sep 01 12:32:52 2008 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Sep 01 12:32:52 2008 +1000"
      },
      "message": "Remove invalidate_partition call from do_md_stop.\n\nWhen stopping an md array, or just switching to read-only, we\ncurrently call invalidate_partition while holding the mddev lock.\nThe main reason for this is probably to ensure all dirty buffers\nare flushed (invalidate_partition calls fsync_bdev).\n\nHowever if any dirty buffers are found, it will almost certainly cause\na deadlock as starting writeout will require an update to the\nsuperblock, and performing that updates requires taking the mddev\nlock - which is already held.\n\nThis deadlock can be demonstrated by running \"reboot -f -n\" with\na root filesystem on md/raid, and some dirty buffers in memory.\n\nAll other calls to stop an array should already happen after a flush.\nThe normal sequence is to stop using the array (e.g. umount) which\nwill cause __blkdev_put to call sync_blockdev.  Then open the\narray and issue the STOP_ARRAY ioctl while the buffers are all still\nclean.\n\nSo this invalidate_partition is normally a no-op, except for one case\nwhere it will cause a deadlock.\n\nSo remove it.\n\nThis patch possibly addresses the regression recored in\n   http://bugzilla.kernel.org/show_bug.cgi?id\u003d11460\nand\n   http://bugzilla.kernel.org/show_bug.cgi?id\u003d11452\n\nthough it isn\u0027t yet clear how it ever worked.\n\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "56ac36d722d0d27c03599d1245ac0ab59e474e5c",
      "tree": "e65f4d860549532a570b92995906f3c3dec9c529",
      "parents": [
        "0310fa216decc3ecfab41f327638fa48a81f3735"
      ],
      "author": {
        "name": "Dan Williams",
        "email": "dan.j.williams@intel.com",
        "time": "Thu Aug 07 10:02:47 2008 -0700"
      },
      "committer": {
        "name": "Dan Williams",
        "email": "dan.j.williams@intel.com",
        "time": "Thu Aug 07 10:02:47 2008 -0700"
      },
      "message": "md: cancel check/repair requests when recovery is needed\n\nIf a \u0027repair\u0027 is requested when an array is in a position to \u0027recover\u0027 raid1\nwill perform the repair while md believes a recovery is happening.  Address\nthis at both ends, i.e. cancel check/repair requests upon detecting a\nrecover condition and do not call -\u003espare_active after completing a\ncheck/repair.\n\nSigned-off-by: Dan Williams \u003cdan.j.williams@intel.com\u003e\n"
    },
    {
      "commit": "c89a8eee61540df04fc83f32f51ef0f46ec018b1",
      "tree": "7bffba40357f654de8ed31bc6a0e7468daa61234",
      "parents": [
        "ac4090d24c6a26211bc4523d920376e054d4f3f8"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Aug 05 15:54:13 2008 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Aug 05 15:56:32 2008 +1000"
      },
      "message": "Allow faulty devices to be removed from a readonly array.\n\nRemoving faulty devices from an array is a two stage process.\nFirst the device is moved from being a part of the active array\nto being similar to a spare device.  Then it can be removed\nby a request from user space.\n\nThe first step is currently not performed for read-only arrays,\nso the second step can never succeed.\n\nSo allow readonly arrays to remove failed devices (which aren\u0027t\nblocked).\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "dba034eef2456d2a9f9a76806846c97acf6c3ad1",
      "tree": "3cf51b72fc5be671e986a39c389aa5332994e2a2",
      "parents": [
        "2b25000bf5157c28d8591f03f0575248a8cbd900"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Aug 05 15:54:13 2008 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Aug 05 15:56:32 2008 +1000"
      },
      "message": "Fail safely when trying to grow an array with a write-intent bitmap.\n\nWe cannot currently change the size of a write-intent bitmap.\nSo if we change the size of an array which has such a bitmap, it\ntries to set bits beyond the end of the bitmap.\n\nFor now, simply reject any request to change the size of an array\nwhich has a bitmap.  mdadm can remove the bitmap and add a new one\nafter the array has changed size.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "2b25000bf5157c28d8591f03f0575248a8cbd900",
      "tree": "f01260723348738076becc9f62872d87819f3159",
      "parents": [
        "19052c0e85a3e9d3b7d190b29fcdbf0e6c105381"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Aug 05 15:54:13 2008 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Aug 05 15:56:31 2008 +1000"
      },
      "message": "Restore force switch of md array to readonly at reboot time.\n\nA recent patch allowed do_md_stop to know whether it was being called\nvia an ioctl or not, and thus where to allow for an extra open file\ndescriptor when checking if it is in use.\nThis broke then switch to readonly performed by the shutdown notifier,\nwhich needs to work even when the array is still (apparently) active\n(as md doesn\u0027t get told when the filesystem becomes readonly).\n\nSo restore this feature by pretending that there can be lots of\nfile descriptors open, but we still want do_md_stop to switch to\nreadonly.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "19052c0e85a3e9d3b7d190b29fcdbf0e6c105381",
      "tree": "6f61eacfe7ade13f0bf06adba5efac052e1038c0",
      "parents": [
        "2b12a4c524812fb3f6ee590a02e65b95c8c32229"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Aug 05 15:54:13 2008 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Aug 05 15:56:31 2008 +1000"
      },
      "message": "Make writes to md/safe_mode_delay immediately effective.\n\nIf we reduce the \u0027safe_mode_delay\u0027, it could still wait for the old\ndelay to completely expire before doing anything about safe_mode.\nThus the effect if the change is delayed.\n\nTo make the effect more immediate, run the timeout function\nimmediately if the delay was reduced.  This may cause it to run\nslightly earlier that required, but that is the safer option.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "e542713529e323ff09d7aeb5806cf29f6f160f53",
      "tree": "751dffc2043342eb6f76b0c37a07a698462b5516",
      "parents": [
        "df10cfbc4d7ab93260d997df754219d390d62a9d"
      ],
      "author": {
        "name": "Dan Williams",
        "email": "dan.j.williams@intel.com",
        "time": "Mon Jul 28 23:28:06 2008 -0700"
      },
      "committer": {
        "name": "Dan Williams",
        "email": "dan.j.williams@intel.com",
        "time": "Mon Jul 28 17:52:44 2008 -0700"
      },
      "message": "md: do not count blocked devices as spares\n\nremove_and_add_spares() assumes that failed devices have been hot-removed\nfrom the array.  Removal is skipped in the \u0027blocked\u0027 case so do not count a\ndevice in this state as \u0027spare\u0027.\n\nSigned-off-by: Dan Williams \u003cdan.j.williams@intel.com\u003e\n"
    },
    {
      "commit": "d8e64406a037a64444175730294e449c9e21f5ec",
      "tree": "5ac7525899ebc1d2fd9a83a6e19cd0b1b1b1711d",
      "parents": [
        "2339788376e2d69a9154130e4dacd5b21ce63094"
      ],
      "author": {
        "name": "Dan Williams",
        "email": "dan.j.williams@intel.com",
        "time": "Wed Jul 23 13:09:48 2008 -0700"
      },
      "committer": {
        "name": "Dan Williams",
        "email": "dan.j.williams@intel.com",
        "time": "Wed Jul 23 13:09:48 2008 -0700"
      },
      "message": "md: delay notification of \u0027active_idle\u0027 to the recovery thread\n\nsysfs_notify might sleep, so do not call it from md_safemode_timeout.\n\nSigned-off-by: Dan Williams \u003cdan.j.williams@intel.com\u003e\n"
    },
    {
      "commit": "4b80991c6cb9efa607bc4fd6f3ecdf5511c31bb0",
      "tree": "5e2ba7d509af245c29bdf04b00960cc367972c44",
      "parents": [
        "f2ea68cf42aafdd93393b6b8b20fc3c2b5f4390c"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Jul 21 17:05:25 2008 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Jul 21 17:05:25 2008 +1000"
      },
      "message": "md: Protect access to mddev-\u003edisks list using RCU\n\nAll modifications and most access to the mddev-\u003edisks list are made\nunder the reconfig_mutex lock.  However there are three places where\nthe list is walked without any locking.  If a reconfig happens at this\ntime, havoc (and oops) can ensue.\n\nSo use RCU to protect these accesses:\n  - wrap them in rcu_read_{,un}lock()\n  - use list_for_each_entry_rcu\n  - add to the list with list_add_rcu\n  - delete from the list with list_del_rcu\n  - delay the \u0027free\u0027 with call_rcu rather than schedule_work\n\nNote that export_rdev did a list_del_init on this list.  In almost all\ncases the entry was not in the list anymore so it was a no-op and so\nsafe.  It is no longer safe as after list_del_rcu we may not touch\nthe list_head.\nAn audit shows that export_rdev is called:\n  - after unbind_rdev_from_array, in which case the delete has\n     already been done,\n  - after bind_rdev_to_array fails, in which case the delete isn\u0027t needed.\n  - before the device has been put on a list at all (e.g. in\n      add_new_disk where reading the superblock fails).\n  - and in autorun devices after a failure when the device is on a\n      different list.\n\nSo remove the list_del_init call from export_rdev, and add it back\nimmediately before the called to export_rdev for that last case.\n\nNote also that -\u003esame_set is sometimes used for lists other than\nmddev-\u003elist (e.g. candidates).  In these cases rcu is not needed.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "f2ea68cf42aafdd93393b6b8b20fc3c2b5f4390c",
      "tree": "00b025b91898ff32dba742b5075dd290fec4dc91",
      "parents": [
        "d6e2215052810678bc9782fd980b52706fc71f50"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Jul 21 17:05:25 2008 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Jul 21 17:05:25 2008 +1000"
      },
      "message": "md: only count actual openers as access which prevent a \u0027stop\u0027\n\nOpen isn\u0027t the only thing that increments -\u003eactive.  e.g. reading\n/proc/mdstat will increment it briefly.  So to avoid false positives\nin testing for concurrent access, introduce a new counter that counts\njust the number of times the md device it open.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "f233ea5c9e0d8b95e4283bf6a3436b88f6fd3586",
      "tree": "8a36b621de46da23f3957c6e3ea4d653c2937544",
      "parents": [
        "15f4a5fdf3aa07b53f6a7969664741db5882e485"
      ],
      "author": {
        "name": "Andre Noll",
        "email": "maan@systemlinux.org",
        "time": "Mon Jul 21 17:05:22 2008 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Jul 21 17:05:22 2008 +1000"
      },
      "message": "md: Make mddev-\u003earray_size sector-based.\n\nThis patch renames the array_size field of struct mddev_s to array_sectors\nand converts all instances to use units of 512 byte sectors instead of 1k\nblocks.\n\nSigned-off-by: Andre Noll \u003cmaan@systemlinux.org\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "15f4a5fdf3aa07b53f6a7969664741db5882e485",
      "tree": "1bd897fbbcf512d3c0c3b2b55633ae590558f314",
      "parents": [
        "d07bd3bcc456228b56a790897162a634691fed9b"
      ],
      "author": {
        "name": "Andre Noll",
        "email": "maan@systemlinux.org",
        "time": "Mon Jul 21 14:42:12 2008 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Jul 21 14:42:12 2008 +1000"
      },
      "message": "md: Make super_type-\u003erdev_size_change() take sector-based sizes.\n\nAlso, change the type of the size parameter from unsigned long long to\nsector_t and rename it to num_sectors.\n\nSigned-off-by: Andre Noll \u003cmaan@systemlinux.org\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "d07bd3bcc456228b56a790897162a634691fed9b",
      "tree": "cabb0feee45a7b3383fff4202adc35793c8bdbb1",
      "parents": [
        "d7027458d68b2f1752a28016dcf2ffd0a7e8f567"
      ],
      "author": {
        "name": "Andre Noll",
        "email": "maan@systemlinux.org",
        "time": "Mon Jul 21 14:42:07 2008 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Jul 21 14:42:07 2008 +1000"
      },
      "message": "md: Fix check for overlapping devices.\n\nThe checks in overlaps() expect all parameters either in block-based\nor sector-based quantities. However, its single caller passes two\nrdev-\u003edata_offset arguments as well as two rdev-\u003esize arguments, the\nformer being sector counts while the latter are measured in 1K blocks.\n\nThis could cause rdev_size_store() to accept an invalid size from user\nspace. Fix it by passing only sector-based quantities to overlaps().\n\nSigned-off-by: Andre Noll \u003cmaan@systemlinux.org\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "d7027458d68b2f1752a28016dcf2ffd0a7e8f567",
      "tree": "03bb7d75f4951eba4eff21926d1ce71c6d728260",
      "parents": [
        "7e93a89251d4ed7bd4475db62616ccd03ddfd01a"
      ],
      "author": {
        "name": "Neil Brown",
        "email": "neilb@suse.de",
        "time": "Sat Jul 12 10:37:50 2008 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Jul 21 14:22:18 2008 +1000"
      },
      "message": "md: Tidy up rdev_size_store a bit:\n\n - used strict_strtoull in place of simple_strtoull\n - use my_mddev in place of rdev-\u003emddev (they have the same value)\nand more significantly,\n - don\u0027t adjust mddev-\u003esize to fit, rather reject changes which make\n   rdev-\u003esize smaller than mddev-\u003esize\n\nAdjusting mddev-\u003esize is a hangover from bind_rdev_to_array which\ndoes a similar thing.  But it really is a better design to insist that\nmddev-\u003esize is set as required, then the rdev-\u003esizes are set to allow\nfor that.  The previous way invites confusion.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "0f420358e3a2abc028320ace7783e2e38cae77bf",
      "tree": "99b068212ad1dd8c5e97b151d796d66f53d1f3bb",
      "parents": [
        "b73df2d3d629aefa187a0a3574fd81455e026bc8"
      ],
      "author": {
        "name": "Andre Noll",
        "email": "maan@systemlinux.org",
        "time": "Fri Jul 11 22:02:23 2008 +1000"
      },
      "committer": {
        "name": "Neil Brown",
        "email": "neilb@suse.de",
        "time": "Fri Jul 11 22:02:23 2008 +1000"
      },
      "message": "md: Turn rdev-\u003esb_offset into a sector-based quantity.\n\nRename it to sb_start to make sure all users have been converted.\n\nSigned-off-by: Andre Noll \u003cmaan@systemlinux.org\u003e\nSigned-off-by: Neil Brown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "b73df2d3d629aefa187a0a3574fd81455e026bc8",
      "tree": "87e2a32c602c99cf69c298d3ed6e145a6202b481",
      "parents": [
        "e7debaa4951b37d6c9ace4c6b984cd4805c5bfbb"
      ],
      "author": {
        "name": "Andre Noll",
        "email": "maan@systemlinux.org",
        "time": "Fri Jul 11 22:02:23 2008 +1000"
      },
      "committer": {
        "name": "Neil Brown",
        "email": "neilb@suse.de",
        "time": "Fri Jul 11 22:02:23 2008 +1000"
      },
      "message": "md: Make calc_dev_sboffset() return a sector count.\n\nAs BLOCK_SIZE_BITS is 10 and\n\n\tMD_NEW_SIZE_SECTORS(2 * x) \u003d 2 * NEW_SIZE_BLOCKS(x),\n\nthe return value of calc_dev_sboffset() doubles. Fix up all three\ncallers accordingly.\n\nSigned-off-by: Andre Noll \u003cmaan@systemlinux.org\u003e\nSigned-off-by: Neil Brown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "e7debaa4951b37d6c9ace4c6b984cd4805c5bfbb",
      "tree": "9d61e2341af2161c0298c1396e6a85a1d4437eef",
      "parents": [
        "d71f9f88d74166dcdef743a057f9222d64d2d509"
      ],
      "author": {
        "name": "Andre Noll",
        "email": "maan@systemlinux.org",
        "time": "Fri Jul 11 22:02:23 2008 +1000"
      },
      "committer": {
        "name": "Neil Brown",
        "email": "neilb@suse.de",
        "time": "Fri Jul 11 22:02:23 2008 +1000"
      },
      "message": "md: Replace calc_dev_size() by calc_num_sectors().\n\nNumber of sectors is the preferred unit for sizes of raid devices,\nso change calc_dev_size() so that it returns this unit instead of\nthe number of 1K blocks.\n\nSigned-off-by: Andre Noll \u003cmaan@systemlinux.org\u003e\nSigned-off-by: Neil Brown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "d71f9f88d74166dcdef743a057f9222d64d2d509",
      "tree": "af2c0a93855347bce2fc24ecffa27be035bc8ef0",
      "parents": [
        "df5b20cf68f9c90204c5fd36b7b090635cee3cdf"
      ],
      "author": {
        "name": "Andre Noll",
        "email": "maan@systemlinux.org",
        "time": "Fri Jul 11 22:02:22 2008 +1000"
      },
      "committer": {
        "name": "Neil Brown",
        "email": "neilb@suse.de",
        "time": "Fri Jul 11 22:02:22 2008 +1000"
      },
      "message": "md: Make update_size() take the number of sectors.\n\nChanging the internal representations of sizes of raid devices\nfrom 1K blocks to sector counts (512B units) is desirable because\nit allows to get rid of many divisions/multiplications and unnecessary\ncasts that are present in the current code.\n\nThis patch is a first step in this direction. It replaces the old\n1K-based \"size\" argument of update_size() by \"num_sectors\" and\nfixes up its two callers.\n\nSigned-off-by: Andre Noll \u003cmaan@systemlinux.org\u003e\nSigned-off-by: Neil Brown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "df5b20cf68f9c90204c5fd36b7b090635cee3cdf",
      "tree": "d3d5690609085352485e8ddcc1650833df4be224",
      "parents": [
        "26ef379f53993b1da3c19b63257cd47e1d9cd672"
      ],
      "author": {
        "name": "Neil Brown",
        "email": "neilb@suse.de",
        "time": "Fri Jul 11 22:02:22 2008 +1000"
      },
      "committer": {
        "name": "Neil Brown",
        "email": "neilb@suse.de",
        "time": "Fri Jul 11 22:02:22 2008 +1000"
      },
      "message": "md: Better control of when do_md_stop is allowed to stop the array.\n\ndo_md_stop check the number of active users before allowing the array\nto be stopped.\nTwo problems:\n  1/ it assumes the request is coming through an open file descriptor\n     (via ioctl) so it allows for that.  This is not always the case.\n  2/ it doesn\u0027t do the check it the array hasn\u0027t been activated.\n     This is not good for cases when we use an inactive array to hold\n     some devices in a container.\n\nSigned-off-by: Neil Brown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "26ef379f53993b1da3c19b63257cd47e1d9cd672",
      "tree": "c02f2acfb14c6b8294e101f53fb10a9d978844bb",
      "parents": [
        "80fab1d77b2852711917baa437e4fdab31c21fef"
      ],
      "author": {
        "name": "Andre Noll",
        "email": "maan@systemlinux.org",
        "time": "Fri Jul 11 22:02:21 2008 +1000"
      },
      "committer": {
        "name": "Neil Brown",
        "email": "neilb@suse.de",
        "time": "Fri Jul 11 22:02:21 2008 +1000"
      },
      "message": "md: get_disk_info(): Don\u0027t convert between signed and unsigned and back.\n\nThe current code copies a signed int from user space, converts it to\nunsigned and passes the unsigned value to find_rdev_nr() which expects\na signed value. Simply pass the signed value from user space directly.\n\nSigned-off-by: Andre Noll \u003cmaan@systemlinux.org\u003e\nSigned-off-by: Neil Brown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "80fab1d77b2852711917baa437e4fdab31c21fef",
      "tree": "ee5fb082245d49780a890c09a3ba23c714fc4359",
      "parents": [
        "ebc243372842a81dddbe00bd047a25b8ee7d8b87"
      ],
      "author": {
        "name": "Andre Noll",
        "email": "maan@systemlinux.org",
        "time": "Fri Jul 11 22:02:21 2008 +1000"
      },
      "committer": {
        "name": "Neil Brown",
        "email": "neilb@suse.de",
        "time": "Fri Jul 11 22:02:21 2008 +1000"
      },
      "message": "md: Simplify restart_array().\n\nSigned-off-by: Andre Noll \u003cmaan@systemlinux.org\u003e\nSigned-off-by: Neil Brown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "ebc243372842a81dddbe00bd047a25b8ee7d8b87",
      "tree": "8c362c91d8628b1362b7abb8abcd0a1e7ca7803c",
      "parents": [
        "ce0c8e05f8ef93d991d665aade8c4bf35806ea1a"
      ],
      "author": {
        "name": "Andre Noll",
        "email": "maan@systemlinux.org",
        "time": "Fri Jul 11 22:02:20 2008 +1000"
      },
      "committer": {
        "name": "Neil Brown",
        "email": "neilb@suse.de",
        "time": "Fri Jul 11 22:02:20 2008 +1000"
      },
      "message": "md: alloc_disk_sb(): Return proper error value.\n\nIf alloc_page() fails, ENOMEM is a more suitable error value\nthan EINVAL.\n\nSigned-off-by: Andre Noll \u003cmaan@systemlinux.org\u003e\nSigned-off-by: Neil Brown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "ce0c8e05f8ef93d991d665aade8c4bf35806ea1a",
      "tree": "e3fb5bb279452161aca0351993f76b98ffbbb662",
      "parents": [
        "05710466c9ef2e3ee55166934c801a2393c32f80"
      ],
      "author": {
        "name": "Andre Noll",
        "email": "maan@systemlinux.org",
        "time": "Fri Jul 11 22:02:20 2008 +1000"
      },
      "committer": {
        "name": "Neil Brown",
        "email": "neilb@suse.de",
        "time": "Fri Jul 11 22:02:20 2008 +1000"
      },
      "message": "md: Simplify sb_equal().\n\nThe only caller of sb_equal() tests the return value against\nzero, so it\u0027s OK to return the negated return value of memcmp().\n\nSigned-off-by: Andre Noll \u003cmaan@systemlinux.org\u003e\nSigned-off-by: Neil Brown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "05710466c9ef2e3ee55166934c801a2393c32f80",
      "tree": "a0560ff7920fcb4de9af3b054dc40033b429701f",
      "parents": [
        "0306d5efbf897c7d410fd30b89fc7d97372aa501"
      ],
      "author": {
        "name": "Andre Noll",
        "email": "maan@systemlinux.org",
        "time": "Fri Jul 11 22:02:20 2008 +1000"
      },
      "committer": {
        "name": "Neil Brown",
        "email": "neilb@suse.de",
        "time": "Fri Jul 11 22:02:20 2008 +1000"
      },
      "message": "md: Simplify uuid_equal().\n\nSigned-off-by: Andre Noll \u003cmaan@systemlinux.org\u003e\nSigned-off-by: Neil Brown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "35020f1a06edade6f52fc8349e150d95cdf7fd90",
      "tree": "97941f31c713ddb4a5882a81af891fc1e9cc92e3",
      "parents": [
        "7f6ce7692807ad60d9341e41d565a7888a5bc2dd"
      ],
      "author": {
        "name": "Andre Noll",
        "email": "maan@systemlinux.org",
        "time": "Sun Mar 23 15:10:33 2008 +0100"
      },
      "committer": {
        "name": "Neil Brown",
        "email": "neilb@suse.de",
        "time": "Tue Jul 08 10:53:20 2008 +1000"
      },
      "message": "md: sb_equal(): Fix misleading printk.\n\nSigned-off-by: Andre Noll \u003cmaan@systemlinux.org\u003e\nSigned-off-by: Neil Brown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "7f6ce7692807ad60d9341e41d565a7888a5bc2dd",
      "tree": "35ba61e02f4287c93c43a4c789000f67aed2b410",
      "parents": [
        "910d8cb3f4ef2c4a5914176592d2f2bc3cd94cdd"
      ],
      "author": {
        "name": "Andre Noll",
        "email": "maan@systemlinux.org",
        "time": "Sun Mar 23 18:34:54 2008 +0100"
      },
      "committer": {
        "name": "Neil Brown",
        "email": "neilb@suse.de",
        "time": "Tue Jul 08 10:53:00 2008 +1000"
      },
      "message": "md: Fix a typo in the comment to cmd_match().\n\nSigned-off-by: Andre Noll \u003cmaan@systemlinux.org\u003e\nSigned-off-by: Neil Brown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "910d8cb3f4ef2c4a5914176592d2f2bc3cd94cdd",
      "tree": "3f3a692af0b19088762a9f2f7327f025243fb42a",
      "parents": [
        "9687a60c78bbf5649d9acbde1e8818be4c8c8b94"
      ],
      "author": {
        "name": "Andre Noll",
        "email": "maan@systemlinux.org",
        "time": "Tue Mar 25 21:00:53 2008 +0100"
      },
      "committer": {
        "name": "Neil Brown",
        "email": "neilb@suse.de",
        "time": "Tue Jul 08 10:52:45 2008 +1000"
      },
      "message": "md: Fix typo in array_state comment.\n\nSigned-off-by: Andre Noll \u003cmaan@systemlinux.org\u003e\nSigned-off-by: Neil Brown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "9687a60c78bbf5649d9acbde1e8818be4c8c8b94",
      "tree": "df518b5c38d064c838e9304ceca5b2dbc9d4b903",
      "parents": [
        "13e53df354caea8986df951dcb6353c823e1f858"
      ],
      "author": {
        "name": "Andre Noll",
        "email": "maan@systemlinux.org",
        "time": "Tue Mar 25 22:24:09 2008 +0100"
      },
      "committer": {
        "name": "Neil Brown",
        "email": "neilb@suse.de",
        "time": "Tue Jul 08 10:52:26 2008 +1000"
      },
      "message": "md: sync_speed_show(): Trivial cleanups.\n\n- Remove superfluous parentheses.\n- Make format string match the type of the variable that is printed.\n\nSigned-off-by: Andre Noll \u003cmaan@systemlinux.org\u003e\nSigned-off-by: Neil Brown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "13e53df354caea8986df951dcb6353c823e1f858",
      "tree": "16c6c2cde80cea148d467cffe7d08bfee042091e",
      "parents": [
        "2f9618ce63cb049c5587f5c650f2725c0035aa96"
      ],
      "author": {
        "name": "Andre Noll",
        "email": "maan@systemlinux.org",
        "time": "Wed Mar 26 00:07:03 2008 +0100"
      },
      "committer": {
        "name": "Neil Brown",
        "email": "neilb@suse.de",
        "time": "Tue Jul 08 10:52:15 2008 +1000"
      },
      "message": "md: do_md_run(): Fix misleading error message.\n\nIn case pers-\u003erun() succeeds but creating the bitmap fails, we\nprint an error message stating that pers-\u003erun() has failed.\n\nPrint this message only if pers-\u003erun() really failed.\n\nSigned-off-by: Andre Noll \u003cmaan@systemlinux.org\u003e\nSigned-off-by: Neil Brown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "2f9618ce63cb049c5587f5c650f2725c0035aa96",
      "tree": "87dbc733f7bc0fcbe753854055e42e1002d6f8bd",
      "parents": [
        "bb57fc64b251d2696900d8a8f25ad5272d5d9c2a"
      ],
      "author": {
        "name": "Andre Noll",
        "email": "maan@systemlinux.org",
        "time": "Fri Apr 25 18:57:58 2008 +0200"
      },
      "committer": {
        "name": "Neil Brown",
        "email": "neilb@suse.de",
        "time": "Tue Jul 08 10:52:00 2008 +1000"
      },
      "message": "md: md_getgeo(): Move comment to proper position.\n\nSigned-off-by: Andre Noll \u003cmaan@systemlinux.org\u003e\nSigned-off-by: Neil Brown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "bb57fc64b251d2696900d8a8f25ad5272d5d9c2a",
      "tree": "62192d4c890c41e7a75307b0fcf586c7c4d00d56",
      "parents": [
        "0529613a1970fef1ba82ded431e2e2ee35b658af"
      ],
      "author": {
        "name": "Andre Noll",
        "email": "maan@systemlinux.org",
        "time": "Fri Apr 25 19:06:35 2008 +0200"
      },
      "committer": {
        "name": "Neil Brown",
        "email": "neilb@suse.de",
        "time": "Tue Jul 08 10:51:29 2008 +1000"
      },
      "message": "md: md_ioctl(): Fix misleading indentation.\n\nSigned-off-by: Andre Noll \u003cmaan@systemlinux.org\u003e\nSigned-off-by: Neil Brown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "b5470dc5fc18a8ff6517c3bb538d1479e58ecb02",
      "tree": "37b0eb3a4691bdbe58dc5c6c73b2dc8d3925b332",
      "parents": [
        "1fe797e67fb07d605b82300934d0de67068a0aca"
      ],
      "author": {
        "name": "Dan Williams",
        "email": "dan.j.williams@intel.com",
        "time": "Fri Jun 27 21:44:04 2008 -0700"
      },
      "committer": {
        "name": "Dan Williams",
        "email": "dan.j.williams@intel.com",
        "time": "Mon Jun 30 17:18:19 2008 -0700"
      },
      "message": "md: resolve external metadata handling deadlock in md_allow_write\n\nmd_allow_write() marks the metadata dirty while holding mddev-\u003elock and then\nwaits for the write to complete.  For externally managed metadata this causes a\ndeadlock as userspace needs to take the lock to communicate that the metadata\nupdate has completed.\n\nChange md_allow_write() in the \u0027external\u0027 case to start the \u0027mark active\u0027\noperation and then return -EAGAIN.  The expected side effects while waiting for\nuserspace to write \u0027active\u0027 to \u0027array_state\u0027 are holding off reshape (code\ncurrently handles -ENOMEM), cause some \u0027stripe_cache_size\u0027 change requests to\nfail, cause some GET_BITMAP_FILE ioctl requests to fall back to GFP_NOIO, and\ncause updates to \u0027raid_disks\u0027 to fail.  Except for \u0027stripe_cache_size\u0027 changes\nthese failures can be mitigated by coordinating with mdmon.\n\nmd_write_start() still prevents writes from occurring until the metadata\nhandler has had a chance to take action as it unconditionally waits for\nMD_CHANGE_CLEAN to be cleared.\n\n[neilb@suse.de: return -EAGAIN, try GFP_NOIO]\nSigned-off-by: Dan Williams \u003cdan.j.williams@intel.com\u003e\n"
    },
    {
      "commit": "0cd17fec983b6bca505eecee1af33138687220b6",
      "tree": "0b2209223c9aeeff0415e9a11c58f8801607006b",
      "parents": [
        "526647320e696f434647f38421a6ecf65b859c43"
      ],
      "author": {
        "name": "Chris Webb",
        "email": "chris@arachsys.com",
        "time": "Sat Jun 28 08:31:46 2008 +1000"
      },
      "committer": {
        "name": "Neil Brown",
        "email": "neilb@notabene.brown",
        "time": "Sat Jun 28 08:31:46 2008 +1000"
      },
      "message": "Support changing rdev size on running arrays.\n\nFrom: Chris Webb \u003cchris@arachsys.com\u003e\n\nAllow /sys/block/mdX/md/rdY/size to change on running arrays, moving the\nsuperblock if necessary for this metadata version. We prevent the available\nspace from shrinking to less than the used size, and allow it to be set to zero\nto fill all the available space on the underlying device.\n\nSigned-off-by: Chris Webb \u003cchris@arachsys.com\u003e\nSigned-off-by: Neil Brown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "526647320e696f434647f38421a6ecf65b859c43",
      "tree": "aa6bf13e6aa766051ba32a8b64157f4adf9fcd3e",
      "parents": [
        "a99ac97113d5bc25ddc4d17f404c2024ac6c57f9"
      ],
      "author": {
        "name": "Neil Brown",
        "email": "neilb@notabene.brown",
        "time": "Sat Jun 28 08:31:44 2008 +1000"
      },
      "committer": {
        "name": "Neil Brown",
        "email": "neilb@notabene.brown",
        "time": "Sat Jun 28 08:31:44 2008 +1000"
      },
      "message": "Make sure all changes to md/dev-XX/state are notified\n\nThe important state change happens during an interrupt\nin md_error.  So just set a flag there and call sysfs_notify\nlater in process context.\n\nSigned-off-by: Neil Brown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "a99ac97113d5bc25ddc4d17f404c2024ac6c57f9",
      "tree": "b1848af670eb9f67961f7abc7cd5a19a07b9b37e",
      "parents": [
        "72a23c211e4587859d5bf61ac4962d76e593fb02"
      ],
      "author": {
        "name": "Neil Brown",
        "email": "neilb@notabene.brown",
        "time": "Sat Jun 28 08:31:43 2008 +1000"
      },
      "committer": {
        "name": "Neil Brown",
        "email": "neilb@notabene.brown",
        "time": "Sat Jun 28 08:31:43 2008 +1000"
      },
      "message": "Make sure all changes to md/degraded are notified.\n\nWhen a device fails, when a spare is activated, when\nan array is reshaped, or when an array is started,\nthe extent to which the array is degraded can change.\n\nSigned-off-by: Neil Brown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "72a23c211e4587859d5bf61ac4962d76e593fb02",
      "tree": "b35b554d7eb9c4b3a2cbc4d9378d362e5e56e44f",
      "parents": [
        "0fd62b861eac7d2dea9b7e939953b20f37186ea1"
      ],
      "author": {
        "name": "Neil Brown",
        "email": "neilb@notabene.brown",
        "time": "Sat Jun 28 08:31:41 2008 +1000"
      },
      "committer": {
        "name": "Neil Brown",
        "email": "neilb@notabene.brown",
        "time": "Sat Jun 28 08:31:41 2008 +1000"
      },
      "message": "Make sure all changes to md/sync_action are notified.\n\nWhen the \u0027resync\u0027 thread starts or stops, when we explicitly\nset sync_action, or when we determine that there is definitely nothing\nto do, we notify sync_action.\n\nTo stop \"sync_action\" from occasionally showing the wrong value,\nwe introduce a new flags - MD_RECOVERY_RECOVER - to say that a\nrecovery is probably needed or happening, and we make sure\nthat we set MD_RECOVERY_RUNNING before clearing MD_RECOVERY_NEEDED.\n\nSigned-off-by: Neil Brown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "0fd62b861eac7d2dea9b7e939953b20f37186ea1",
      "tree": "c15b1481076244c7093f6a0368c3cbc85fc9b7c6",
      "parents": [
        "c7d0c941ae7f82940a13f785be70dc3097d96687"
      ],
      "author": {
        "name": "Neil Brown",
        "email": "neilb@notabene.brown",
        "time": "Sat Jun 28 08:31:36 2008 +1000"
      },
      "committer": {
        "name": "Neil Brown",
        "email": "neilb@notabene.brown",
        "time": "Sat Jun 28 08:31:36 2008 +1000"
      },
      "message": "Make sure all changes to md/array_state are notified.\n\nChanges in md/array_state could be of interest to a monitoring\nprogram.  So make sure all changes trigger a notification.\n\nExceptions:\n   changing active_idle to active is not reported because it\n      is frequent and not interesting.\n   changing active to active_idle is only reported on arrays\n      with externally managed metadata, as it is not interesting\n      otherwise.\n\nSigned-off-by: Neil Brown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "c7d0c941ae7f82940a13f785be70dc3097d96687",
      "tree": "3d9a59ae9367f3b8955580dd31d5927e7b6d1f42",
      "parents": [
        "199050ea1ff2270174ee525b73bc4c3323098897"
      ],
      "author": {
        "name": "Neil Brown",
        "email": "neilb@notabene.brown",
        "time": "Sat Jun 28 08:31:34 2008 +1000"
      },
      "committer": {
        "name": "Neil Brown",
        "email": "neilb@notabene.brown",
        "time": "Sat Jun 28 08:31:34 2008 +1000"
      },
      "message": "Don\u0027t reject HOT_REMOVE_DISK request for an array that is not yet started.\n\nThere is really no need for this test here, and there are valid\ncases for selectively removing devices from an array that\nit not actually active.\n\nSigned-off-by: Neil Brown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "199050ea1ff2270174ee525b73bc4c3323098897",
      "tree": "b2a7851511b2ddb943b9ff7ce7c8a96c3ac2a8bb",
      "parents": [
        "6c2fce2ef6b4821c21b5c42c7207cb9cf8c87eda"
      ],
      "author": {
        "name": "Neil Brown",
        "email": "neilb@notabene.brown",
        "time": "Sat Jun 28 08:31:33 2008 +1000"
      },
      "committer": {
        "name": "Neil Brown",
        "email": "neilb@notabene.brown",
        "time": "Sat Jun 28 08:31:33 2008 +1000"
      },
      "message": "rationalise return value for -\u003ehot_add_disk method.\n\nFor all array types but linear, -\u003ehot_add_disk returns 1 on\nsuccess, 0 on failure.\nFor linear, it returns 0 on success and -errno on failure.\n\nThis doesn\u0027t cause a functional problem because the -\u003ehot_add_disk\nfunction of linear is used quite differently to the others.\nHowever it is confusing.\n\nSo convert all to return 0 for success or -errno on failure\nand fix call sites to match.\n\nSigned-off-by: Neil Brown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "6c2fce2ef6b4821c21b5c42c7207cb9cf8c87eda",
      "tree": "726b16f46c039df387f7cdfe0d195821d8955532",
      "parents": [
        "8ed0a5216a0238f53b482ec88ce4aeed4b9f0da1"
      ],
      "author": {
        "name": "Neil Brown",
        "email": "neilb@notabene.brown",
        "time": "Sat Jun 28 08:31:31 2008 +1000"
      },
      "committer": {
        "name": "Neil Brown",
        "email": "neilb@notabene.brown",
        "time": "Sat Jun 28 08:31:31 2008 +1000"
      },
      "message": "Support adding a spare to a live md array with external metadata.\n\ni.e. extend the \u0027md/dev-XXX/slot\u0027 attribute so that you can\ntell a device to fill an vacant slot in an and md array.\n\nSigned-off-by: Neil Brown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "8ed0a5216a0238f53b482ec88ce4aeed4b9f0da1",
      "tree": "31383b73c6d471dc8620b0bda044d5d514fd1d8b",
      "parents": [
        "1a0fd497733bd029a7d5f2e5c69b1dff715b7792"
      ],
      "author": {
        "name": "Neil Brown",
        "email": "neilb@notabene.brown",
        "time": "Sat Jun 28 08:31:29 2008 +1000"
      },
      "committer": {
        "name": "Neil Brown",
        "email": "neilb@notabene.brown",
        "time": "Sat Jun 28 08:31:29 2008 +1000"
      },
      "message": "Enable setting of \u0027offset\u0027 and \u0027size\u0027 of a hot-added spare.\n\noffset_store and rdev_size_store allow control of the region of a\ndevice which is to be using in an md/raid array.\nThey only allow these values to be set when an array is being assembled,\nas changing them on an active array could be dangerous.\nHowever when adding a spare device to an array, we might need to\nset the offset and size before starting recovery.  So allow\nthese values to be set also if \"-\u003eraid_disk \u003c 0\" which indicates that\nthe device is still a spare.\n\nSigned-off-by: Neil Brown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "1a0fd497733bd029a7d5f2e5c69b1dff715b7792",
      "tree": "30f7d07f1ae8cdbebc757d3dfb3fe81e0406e2b5",
      "parents": [
        "f48ed538386cb41559282d989354e8f5d442d71c"
      ],
      "author": {
        "name": "Neil Brown",
        "email": "neilb@notabene.brown",
        "time": "Sat Jun 28 08:31:27 2008 +1000"
      },
      "committer": {
        "name": "Neil Brown",
        "email": "neilb@notabene.brown",
        "time": "Sat Jun 28 08:31:27 2008 +1000"
      },
      "message": "Don\u0027t try to make md arrays dirty if that is not meaningful.\n\nArrays personalities such as \u0027raid0\u0027 and \u0027linear\u0027 have no redundancy,\nand so marking them as \u0027clean\u0027 or \u0027dirty\u0027 is not meaningful.\nSo always allow write requests without requiring a superblock update.\n\nSuch arrays types are detected by -\u003esync_request being NULL.  If it is\nnot possible to send a sync request we don\u0027t need a \u0027dirty\u0027 flag because\nall a dirty flag does is trigger some sync_requests.\n\nSigned-off-by: Neil Brown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "f48ed538386cb41559282d989354e8f5d442d71c",
      "tree": "3faa24718c098f19b7e331eae0ba29f145e902da",
      "parents": [
        "5e96ee65c8bd629ce093da67a066d3946468298a"
      ],
      "author": {
        "name": "Neil Brown",
        "email": "neilb@notabene.brown",
        "time": "Sat Jun 28 08:31:26 2008 +1000"
      },
      "committer": {
        "name": "Neil Brown",
        "email": "neilb@notabene.brown",
        "time": "Sat Jun 28 08:31:26 2008 +1000"
      },
      "message": "Close race in md_probe\n\nThere is a possible race in md_probe.  If two threads call md_probe\nfor the same device, then one could exit (having checked that\n-\u003egendisk exists) before the other has called kobject_init_and_add,\nthus returning an incomplete kobj which will cause problems when\nwe try to add children to it.\n\nSo extend the range of protection of disks_mutex slightly to\navoid this possibility.\n\nSigned-off-by: Neil Brown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "5e96ee65c8bd629ce093da67a066d3946468298a",
      "tree": "e1ff9e4984d71ffaa842e7e1d19c282fa9e01bcd",
      "parents": [
        "a0da84f35b25875870270d16b6eccda4884d61a7"
      ],
      "author": {
        "name": "Neil Brown",
        "email": "neilb@notabene.brown",
        "time": "Sat Jun 28 08:31:24 2008 +1000"
      },
      "committer": {
        "name": "Neil Brown",
        "email": "neilb@notabene.brown",
        "time": "Sat Jun 28 08:31:24 2008 +1000"
      },
      "message": "Allow setting start point for requested check/repair\n\nThis makes it possible to just resync a small part of an array.\ne.g. if a drive reports that it has questionable sectors,\na \u0027repair\u0027 of just the region covering those sectors will\ncause them to be read and, if there is an error, re-written\nwith correct data.\n\nSigned-off-by: Neil Brown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "9bbbca3a0ee09293108b67835c6bdf6196d7bcb3",
      "tree": "32526078700e26c6e67aea5eb141fe152d1da9f7",
      "parents": [
        "efe311431869b40d67911820a309f9a1a41306f3"
      ],
      "author": {
        "name": "Neil Brown",
        "email": "neilb@notabene.brown",
        "time": "Sat Jun 28 08:31:17 2008 +1000"
      },
      "committer": {
        "name": "Neil Brown",
        "email": "neilb@notabene.brown",
        "time": "Sat Jun 28 08:31:17 2008 +1000"
      },
      "message": "Fix error paths if md_probe fails.\n\nmd_probe can fail (e.g. alloc_disk could fail) without\nreturning an error (as it alway returns NULL).\nSo when we call mddev_find immediately afterwards, we need\nto check that md_probe actually succeeded.  This means checking\nthat mdev-\u003egendisk is non-NULL.\n\ncc: \u003cstable@kernel.org\u003e\nCc: Dave Jones \u003cdavej@redhat.com\u003e\nSigned-off-by: Neil Brown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "a6d8113a986c66aeb379a26b6e0062488b3e59e1",
      "tree": "b66aea459f4f3dcb9b13b8852f3e2b12b385ce94",
      "parents": [
        "e0a115e5aa554b93150a8dc1c3fe15467708abb2"
      ],
      "author": {
        "name": "Dan Williams",
        "email": "dan.j.williams@intel.com",
        "time": "Thu Jun 05 22:45:53 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Jun 06 11:29:08 2008 -0700"
      },
      "message": "md: fix uninitialized use of mddev-\u003erecovery_wait\n\nIf an array was created with --assume-clean we will oops when trying to\nset -\u003eresync_max.\n\nFix this by initializing -\u003erecovery_wait in mddev_find.\n\nCc: \u003cstable@kernel.org\u003e\nSigned-off-by: Dan Williams \u003cdan.j.williams@intel.com\u003e\nSigned-off-by: Neil Brown \u003cneilb@suse.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "dfc7064500061677720fa26352963c772d3ebe6b",
      "tree": "a8ca495bccf98837c6762ffba54a8009c9772259",
      "parents": [
        "90b08710e41a07d4ff0fb8940dcce3a552991a56"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri May 23 13:04:39 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat May 24 09:56:10 2008 -0700"
      },
      "message": "md: restart recovery cleanly after device failure.\n\nWhen we get any IO error during a recovery (rebuilding a spare), we abort\nthe recovery and restart it.\n\nFor RAID6 (and multi-drive RAID1) it may not be best to restart at the\nbeginning: when multiple failures can be tolerated, the recovery may be\nable to continue and re-doing all that has already been done doesn\u0027t make\nsense.\n\nWe already have the infrastructure to record where a recovery is up to\nand restart from there, but it is not being used properly.\nThis is because:\n  - We sometimes abort with MD_RECOVERY_ERR rather than just MD_RECOVERY_INTR,\n    which causes the recovery not be be checkpointed.\n  - We remove spares and then re-added them which loses important state\n    information.\n\nThe distinction between MD_RECOVERY_ERR and MD_RECOVERY_INTR really isn\u0027t\nneeded.  If there is an error, the relevant drive will be marked as\nFaulty, and that is enough to ensure correct handling of the error.  So we\nfirst remove MD_RECOVERY_ERR, changing some of the uses of it to\nMD_RECOVERY_INTR.\n\nThen we cause the attempt to remove a non-faulty device from an array to\nfail (unless recovery is impossible as the array is too degraded).  Then\nwhen remove_and_add_spares attempts to remove the devices on which\nrecovery can continue, it will fail, they will remain in place, and\nrecovery will continue on them as desired.\n\nIssue:  If we are halfway through rebuilding a spare and another drive\nfails, and a new spare is immediately available,  do we want to:\n 1/ complete the current rebuild, then go back and rebuild the new spare or\n 2/ restart the rebuild from the start and rebuild both devices in\n    parallel.\n\nBoth options can be argued for.  The code currently takes option 2 as\n  a/ this requires least code change\n  b/ this results in a minimally-degraded array in minimal time.\n\nCc: \"Eivind Sarto\" \u003civan@kasenna.com\u003e\nSigned-off-by: Neil Brown \u003cneilb@suse.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "90b08710e41a07d4ff0fb8940dcce3a552991a56",
      "tree": "8e45d1c6d9b4020099fd36781065bf8b8fdb76e4",
      "parents": [
        "4f54b0e9485644a3c5fca2ae43bcbe7376825747"
      ],
      "author": {
        "name": "Bernd Schubert",
        "email": "bs@q-leap.de",
        "time": "Fri May 23 13:04:38 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat May 24 09:56:10 2008 -0700"
      },
      "message": "md: allow parallel resync of md-devices.\n\nIn some configurations, a raid6 resync can be limited by CPU speed\n(Calculating P and Q and moving data) rather than by device speed.  In\nthese cases there is nothing to be gained byt serialising resync of arrays\nthat share a device, and doing the resync in parallel can provide benefit.\n So add a sysfs tunable to flag an array as being allowed to resync in\nparallel with other arrays that use (a different part of) the same device.\n\nSigned-off-by: Bernd Schubert \u003cbs@q-leap.de\u003e\nSigned-off-by: Neil Brown \u003cneilb@suse.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "4f54b0e9485644a3c5fca2ae43bcbe7376825747",
      "tree": "10033228aa5efc868c25aed924b5a0d6b98ac090",
      "parents": [
        "09a44cc15079f80c1416cde1a1d5b2cdd8f2118a"
      ],
      "author": {
        "name": "Dan Williams",
        "email": "dan.j.williams@intel.com",
        "time": "Fri May 23 13:04:37 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat May 24 09:56:10 2008 -0700"
      },
      "message": "md: notify userspace on \u0027stop\u0027 events\n\nThis additional notification to \u0027array_state\u0027 is needed to allow the\nmonitor application to learn about stop events via sysfs.  The\nsysfs_notify(\"sync_action\") call that comes at the end of do_md_stop()\n(via md_new_event) is insufficient since the \u0027sync_action\u0027 attribute has\nbeen removed by this point.\n\n(Seems like a sysfs-notify-on-removal patch is a better fix.  Currently\nremoval updates the event count but does not wake up waiters)\n\nSigned-off-by: Dan Williams \u003cdan.j.williams@intel.com\u003e\nSigned-off-by: Neil Brown \u003cneilb@suse.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "09a44cc15079f80c1416cde1a1d5b2cdd8f2118a",
      "tree": "5a01eeb38627026ace5b8956fdddec08b414cf76",
      "parents": [
        "698b18c1e8bddf39cbf1ba50792b0fe302dbe6d6"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri May 23 13:04:36 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat May 24 09:56:10 2008 -0700"
      },
      "message": "md: notify userspace on \u0027write-pending\u0027 changes to array_state\n\nWhen an array enters write pending, \u0027array_state\u0027 changes, so we must be\nsure to sysfs_notify.\n\nAlso, when waiting for user-space to acknowledge \u0027write-pending\u0027 by\nmarking the metadata as dirty, we don\u0027t want to wait for MD_CHANGE_DEVS to\nbe cleared as that might not happen.  So explicity test for the bits that\nwe are really interested in.\n\nSigned-off-by: Neil Brown \u003cneilb@suse.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "6bcfd601861cce45ca73ac1d714f1286b6b3f0d4",
      "tree": "175173d057e10dd006d6dbd033395977aff55dd9",
      "parents": [
        "03de250a269bfa8e6a9e6ccb4a1dbce19dae8a61"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@lst.de",
        "time": "Fri May 23 13:04:34 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat May 24 09:56:09 2008 -0700"
      },
      "message": "md: kill file_path wrapper\n\nKill the trivial and rather pointless file_path wrapper around d_path.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Neil Brown \u003cneilb@suse.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "6bfe0b499082fd3950429017cd8ebf2a6c458aa5",
      "tree": "81476cf7f7ddbea135bdb93729e0bffae0e7c163",
      "parents": [
        "11e2ede0228ee0f81ccacd15894908c3bf241f73"
      ],
      "author": {
        "name": "Dan Williams",
        "email": "dan.j.williams@intel.com",
        "time": "Wed Apr 30 00:52:32 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Apr 30 08:29:33 2008 -0700"
      },
      "message": "md: support blocking writes to an array on device failure\n\nAllows a userspace metadata handler to take action upon detecting a device\nfailure.\n\nBased on an original patch by Neil Brown.\n\nChanges:\n-added blocked_wait waitqueue to rdev\n-don\u0027t qualify Blocked with Faulty always let userspace block writes\n-added md_wait_for_blocked_rdev to wait for the block device to be clear, if\n userspace misses the notification another one is sent every 5 seconds\n-set MD_RECOVERY_NEEDED after clearing \"blocked\"\n-kill DoBlock flag, just test mddev-\u003eexternal\n\nSigned-off-by: Dan Williams \u003cdan.j.williams@intel.com\u003e\nSigned-off-by: Neil Brown \u003cneilb@suse.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "11e2ede0228ee0f81ccacd15894908c3bf241f73",
      "tree": "78bf7c8e2762d5dc07f2b9acb92ef5804ac40f38",
      "parents": [
        "242b363e2207d14125f52a6701cfda7376a2a2fc"
      ],
      "author": {
        "name": "Dan Williams",
        "email": "dan.j.williams@intel.com",
        "time": "Wed Apr 30 00:52:32 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Apr 30 08:29:33 2008 -0700"
      },
      "message": "md: prevent duplicates in bind_rdev_to_array\n\nFound when trying to reassemble an active externally managed array.  Without\nthis check we hit the more noisy \"sysfs duplicate\" warning in the later call\nto kobject_add.\n\nSigned-off-by: Dan Williams \u003cdan.j.williams@intel.com\u003e\nSigned-off-by: Neil Brown \u003cneilb@suse.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "242b363e2207d14125f52a6701cfda7376a2a2fc",
      "tree": "1ae3f6c59f01f22bde668799674d57a0daacc50b",
      "parents": [
        "648b629ed406233b0a607a3cf29d8a169876131f"
      ],
      "author": {
        "name": "Dan Williams",
        "email": "dan.j.williams@intel.com",
        "time": "Wed Apr 30 00:52:31 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Apr 30 08:29:33 2008 -0700"
      },
      "message": "md: remove a stray command from a copy and paste error in resync_start_store\n\nSigned-off-by: Dan Williams \u003cdan.j.williams@intel.com\u003e\nSigned-off-by: Neil Brown \u003cneilb@suse.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "648b629ed406233b0a607a3cf29d8a169876131f",
      "tree": "4faf3a965c6f369608b5187a3ecdd25e00264d63",
      "parents": [
        "31a59e3425d32743738e043c1df1668e0f22bbab"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed Apr 30 00:52:30 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Apr 30 08:29:32 2008 -0700"
      },
      "message": "md: fix up switching md arrays between read-only and read-write\n\nWhen setting an array to \u0027readonly\u0027 or to \u0027active\u0027 via sysfs, we must make the\nappropriate set_disk_ro call too.\n\nAlso when switching to \"read_auto\" (which is like readonly, but blocks on the\nfirst write so that metadata can be marked \u0027dirty\u0027) we need to be more careful\nabout what state we are changing from.\n\nSigned-off-by: Neil Brown \u003cneilb@suse.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "31a59e3425d32743738e043c1df1668e0f22bbab",
      "tree": "0329549fd16aeedb767511e6a58df3ed84f463c7",
      "parents": [
        "d897dbf91490f26dccef3d7056ffd09eb83a15a5"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed Apr 30 00:52:30 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Apr 30 08:29:32 2008 -0700"
      },
      "message": "md: fix \u0027safemode\u0027 handling for external metadata.\n\n\u0027safemode\u0027 relates to marking an array as \u0027clean\u0027 if there has been no write\ntraffic for a while (a couple of seconds), to reduce the chance of the array\nbeing found dirty on reboot.\n\n-\u003esafemode is set to \u00271\u0027 when there have been no write for a while, and it\ngets set to \u00270\u0027 when the superblock is updates with the \u0027clean\u0027 flag set.\n\nThis requires a few fixes for \u0027external\u0027 metadata:\n - When an array is set to \u0027clean\u0027 via sysfs, \u0027safemode\u0027 must be cleared.\n - when we write to an array that has \u0027safemode\u0027 set (there must have been\n        some delay in updating the metadata), we need to clear safemode.\n - Don\u0027t try to update external metadata in md_check_recovery for safemode\n        transitions - it won\u0027t work.\n\nAlso, don\u0027t try to support \"immediate safe mode\" (safemode\u003d\u003d2) for external\nmetadata, it cannot really work (the safemode timeout can be set very low if\nthis is really needed).\n\nSigned-off-by: Neil Brown \u003cneilb@suse.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "d897dbf91490f26dccef3d7056ffd09eb83a15a5",
      "tree": "c9e812bf24f39a497d197f516cf3023482403d19",
      "parents": [
        "8377bc808029251c2c0f52116cf87d80291b25bf"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed Apr 30 00:52:29 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Apr 30 08:29:32 2008 -0700"
      },
      "message": "md: reinitialise more mddev fields in do_md_stop.\n\nI keep finding problems where an mddev gets reused and some fields has a value\nfrom a previous usage that confuses the new usage.  So clear all fields that\ncould possible need clearing when calling do_md_stop.\n\nAlso initialise the \u0027level\u0027 of a new array to LEVEL_NONE (which isn\u0027t 0).\n\nSigned-off-by: Neil Brown \u003cneilb@suse.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "8377bc808029251c2c0f52116cf87d80291b25bf",
      "tree": "4cf50fc32d81a6c5f6f98a0503cc05ea924b58eb",
      "parents": [
        "6a51830e14529063cb2685921e1177d9af50e49a"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed Apr 30 00:52:28 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Apr 30 08:29:32 2008 -0700"
      },
      "message": "md: skip all metadata update processing when using external metadata.\n\nAll the metadata update processing for external metadata is on in user-space\nor through the sysfs interfaces, so make \"md_update_sb\" a no-op in that case.\n\nSigned-off-by: Neil Brown \u003cneilb@suse.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "6a51830e14529063cb2685921e1177d9af50e49a",
      "tree": "d10f96946d36928e8b4cd021be67072321eb4943",
      "parents": [
        "7f1133cbf20bc308d73ba49f971180924e12119b"
      ],
      "author": {
        "name": "Dan Williams",
        "email": "dan.j.williams@intel.com",
        "time": "Wed Apr 30 00:52:28 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Apr 30 08:29:32 2008 -0700"
      },
      "message": "md: fix use after free when removing rdev via sysfs\n\nrdev-\u003emddev is no longer valid upon return from entry-\u003estore() when the\n\u0027remove\u0027 command is given.\n\nCc: \u003cstable@kernel.org\u003e\nSigned-off-by: Dan Williams \u003cdan.j.williams@intel.com\u003e\nSigned-off-by: Neil Brown \u003cneilb@suse.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "bd5d435a96837c3495e62eef37cbe4cb728b79ae",
      "tree": "82aacaf5a1d220910c4b0a1088d7d2482c0d9ee0",
      "parents": [
        "fee4b19fb3f28d17c0b9f9ea0668db5275697178",
        "ac9fafa1243640349aa481adf473db283a695766"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Apr 29 08:18:03 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Apr 29 08:18:03 2008 -0700"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.dk/linux-2.6-block\n\n* \u0027for-linus\u0027 of git://git.kernel.dk/linux-2.6-block:\n  block: Skip I/O merges when disabled\n  block: add large command support\n  block: replace sizeof(rq-\u003ecmd) with BLK_MAX_CDB\n  ide: use blk_rq_init() to initialize the request\n  block: use blk_rq_init() to initialize the request\n  block: rename and export rq_init()\n  block: no need to initialize rq-\u003ecmd with blk_get_request\n  block: no need to initialize rq-\u003ecmd in prepare_flush_fn hook\n  block/blk-barrier.c:blk_ordered_cur_seq() mustn\u0027t be inline\n  block/elevator.c:elv_rq_merge_ok() mustn\u0027t be inline\n  block: make queue flags non-atomic\n  block: add dma alignment and padding support to blk_rq_map_kern\n  unexport blk_max_pfn\n  ps3disk: Remove superfluous cast\n  block: make rq_init() do a full memset()\n  relay: fix splice problem\n"
    },
    {
      "commit": "c7705f3449c7edd5c1744871097f93977227afc4",
      "tree": "d2f121a4b1ae3ae458db76ec0210ea2172c31e5a",
      "parents": [
        "1b50221738108c438d5f25c7a043fb89e9e27044"
      ],
      "author": {
        "name": "Denis V. Lunev",
        "email": "den@openvz.org",
        "time": "Tue Apr 29 01:02:35 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Apr 29 08:06:22 2008 -0700"
      },
      "message": "drivers: use non-racy method for proc entries creation (2)\n\nUse proc_create()/proc_create_data() to make sure that -\u003eproc_fops and -\u003edata\nbe setup before gluing PDE to main tree.\n\nSigned-off-by: Denis V. Lunev \u003cden@openvz.org\u003e\nCc: Greg Kroah-Hartman \u003cgregkh@suse.de\u003e\nCc: Alexey Dobriyan \u003cadobriyan@gmail.com\u003e\nCc: \"Eric W. Biederman\" \u003cebiederm@xmission.com\u003e\nCc: Peter Osterlund \u003cpetero2@telia.com\u003e\nCc: Bartlomiej Zolnierkiewicz \u003cbzolnier@gmail.com\u003e\nCc: Dmitry Torokhov \u003cdtor@mail.ru\u003e\nCc: Neil Brown \u003cneilb@suse.de\u003e\nCc: Mauro Carvalho Chehab \u003cmchehab@infradead.org\u003e\nCc: Bjorn Helgaas \u003cbjorn.helgaas@hp.com\u003e\nCc: Alessandro Zummo \u003ca.zummo@towertech.it\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "75ad23bc0fcb4f992a5d06982bf0857ab1738e9e",
      "tree": "8668ef63b1f420252ae41aed9e13737d49fd8054",
      "parents": [
        "68154e90c9d1492d570671ae181d9a8f8530da55"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@suse.de",
        "time": "Tue Apr 29 14:48:33 2008 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Tue Apr 29 14:48:33 2008 +0200"
      },
      "message": "block: make queue flags non-atomic\n\nWe can save some atomic ops in the IO path, if we clearly define\nthe rules of how to modify the queue flags.\n\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "9a7b2b0f36c40beeb252cb5ceff36bb295e88d97",
      "tree": "2a9623989c9f32eac319e1220499e596f9b0fa19",
      "parents": [
        "5ae121705bed9ea7425daef4d7d29038f7312f3f"
      ],
      "author": {
        "name": "Harvey Harrison",
        "email": "harvey.harrison@gmail.com",
        "time": "Mon Apr 28 02:15:49 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Apr 28 08:58:42 2008 -0700"
      },
      "message": "md: fix integer as NULL pointer warnings in md.c\n\ndrivers/md/md.c:734:16: warning: Using plain integer as NULL pointer\ndrivers/md/md.c:1115:16: warning: Using plain integer as NULL pointer\n\nAdd some braces to match the else-block as well.\n\nSigned-off-by: Harvey Harrison \u003charvey.harrison@gmail.com\u003e\nCc: Neil Brown \u003cneilb@suse.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "fdefa4d87e2f07ffe5888a7c2ed87dd12f9cfe37",
      "tree": "ae6680b701ee0b24aa917f491e6229938077029b",
      "parents": [
        "8a5703f846e2363fc466aff3f53608340a1ae33f"
      ],
      "author": {
        "name": "Nick Andrew",
        "email": "nick@nick-andrew.net",
        "time": "Mon Apr 21 22:42:58 2008 +0000"
      },
      "committer": {
        "name": "Jesper Juhl",
        "email": "juhl@hera.kernel.org",
        "time": "Mon Apr 21 22:42:58 2008 +0000"
      },
      "message": "RAID: remove trailing space from printk line\n\ndrivers/md/*.[ch] contains only one more printk line with a trailing space.\nRemove it.\n\nSigned-off-by: Nick Andrew \u003cnick@nick-andrew.net\u003e\nSigned-off-by: Jesper Juhl \u003cjesper.juhl@gmail.com\u003e\n"
    },
    {
      "commit": "0e82989d95cc46cc58622381eafa54f7428ee679",
      "tree": "bbf94838940302b2e4683c224cd5c6d176b658ff",
      "parents": [
        "43d8eac44f28d384d2377dcdd1407f51f79dda55"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed Mar 19 17:00:44 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Mar 19 18:53:35 2008 -0700"
      },
      "message": "md: remove the \u0027super\u0027 sysfs attribute from devices in an \u0027md\u0027 array\n\nExposing the binary blob which is the md \u0027super-block\u0027 via sysfs doesn\u0027t\nreally fit with the whole sysfs model, and ever since commit\n8118a859dc7abd873193986c77a8d9bdb877adc8 (\"sysfs: fix off-by-one error\nin fill_read_buffer()\") it doesn\u0027t actually work at all (as the size of\nthe blob is often one page).\n\n(akpm: as in, fs/sysfs/file.c:fill_read_buffer() goes BUG)\n\nSo just remove it altogether.  It isn\u0027t really useful.\n\nSigned-off-by: Neil Brown \u003cneilb@suse.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "52720ae77d392d3f4c12281c37304edbc8cb51f1",
      "tree": "2a04d72705155fbdf2fe5181da414bc0c5261525",
      "parents": [
        "69682d852f5c94ee94e21174b3e8b719626c98db"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Mar 10 11:43:47 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Mon Mar 10 18:01:19 2008 -0700"
      },
      "message": "md: fix formatting error in /proc/mdstat\n\nIf an md array is \"auto-read-only\", then this appears in /proc/mdstat as\n\n   /dev/md0: active(auto-read-only)\n\nwhereas if it is truely readonly, it appears as\n\n   /dev/md0: active (read-only)\n\nThe difference being a space.\n\nOne program known to parse this file expects the space and gets badly\nconfused.  It will be fixed, but it would be best if what the kernel generates\nis more consistent too.\n\nSigned-off-by: Neil Brown \u003cneilb@suse.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "27c529bb8e906d5d692152bc127cc09477d3629e",
      "tree": "1bcfa43a45206e03bbc729c5d3af4bed830d4439",
      "parents": [
        "25156198235325805cd7295ed694509fd6e3a29e"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Mar 04 14:29:33 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue Mar 04 16:35:18 2008 -0800"
      },
      "message": "md: lock access to rdev attributes properly\n\nWhen we access attributes of an rdev (component device on an md array) through\nsysfs, we really need to lock the array against concurrent changes.  We\ncurrently do that when we change an attribute, but not when we read an\nattribute.  We need to lock when reading as well else rdev-\u003emddev could become\nNULL while we are accessing it.\n\nSo add appropriate locking (mddev_lock) to rdev_attr_show.\n\nrdev_size_store requires some extra care as well as it needs to unlock the\nmddev while scanning other mddevs for overlapping regions.  We currently\nassume that rdev-\u003emddev will still be unchanged after the scan, but that\ncannot be certain.  So take a copy of rdev-\u003emddev for use at the end of the\nfunction.\n\nSigned-off-by: Neil Brown \u003cneilb@suse.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "25156198235325805cd7295ed694509fd6e3a29e",
      "tree": "0f1b8ae0f6e4da99afa2ab5e59c866becb1dc136",
      "parents": [
        "d0fae18f1b53a1d39135a968792be034bdf7ff26"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Mar 04 14:29:32 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue Mar 04 16:35:18 2008 -0800"
      },
      "message": "md: make sure a reshape is started when device switches to read-write\n\nA resync/reshape/recovery thread will refuse to progress when the array is\nmarked read-only.  So whenever it mark it not read-only, it is important to\nwake up thread resync thread.  There is one place we didn\u0027t do this.\n\nThe problem manifests if the start_ro module parameters is set, and a raid5\narray that is in the middle of a reshape (restripe) is started.  The array\nwill initially be semi-read-only (meaning it acts like it is readonly until\nthe first write).  So the reshape will not proceed.\n\nOn the first write, the array will become read-write, but the reshape will not\nbe started, and there is no event which will ever restart that thread.\n\nSigned-off-by: Neil Brown \u003cneilb@suse.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "d0fae18f1b53a1d39135a968792be034bdf7ff26",
      "tree": "3448dab652696848df47dcafb7772220b9e58e4f",
      "parents": [
        "a1801f858e57f87a7f79914346921cc729632295"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Mar 04 14:29:31 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue Mar 04 16:35:18 2008 -0800"
      },
      "message": "md: clean up irregularity with raid autodetect\n\nWhen a raid1 array is stopped, all components currently get added to the list\nfor auto-detection.  However we should really only add components that were\nfound by autodetection in the first place.  So add a flag to record that\ninformation, and use it.\n\nSigned-off-by: Neil Brown \u003cneilb@suse.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "a1801f858e57f87a7f79914346921cc729632295",
      "tree": "1ac8c153af0512382c387316a6882df555eb721e",
      "parents": [
        "8311c29d40235062a843f4a8e8a70a44af6fe4c9"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Mar 04 14:29:31 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue Mar 04 16:35:17 2008 -0800"
      },
      "message": "md: guard against possible bad array geometry in v1 metadata\n\nMake sure the data doesn\u0027t start before the end of the superblock when the\nsuperblock is at the start of the device.\n\nSigned-off-by: Neil Brown \u003cneilb@suse.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "c32c2f63a9d6c953aaf168c0b2551da9734f76d2",
      "tree": "14eca3083f3de4a87a95359ab66109c10add1ae7",
      "parents": [
        "e83aece3afad4d56cc01abe069d3519e851cd2de"
      ],
      "author": {
        "name": "Jan Blunck",
        "email": "jblunck@suse.de",
        "time": "Thu Feb 14 19:38:43 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Thu Feb 14 21:17:08 2008 -0800"
      },
      "message": "d_path: Make seq_path() use a struct path argument\n\nseq_path() is always called with a dentry and a vfsmount from a struct path.\nMake seq_path() take it directly as an argument.\n\nSigned-off-by: Jan Blunck \u003cjblunck@suse.de\u003e\nCc: Christoph Hellwig \u003chch@lst.de\u003e\nCc: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nCc: \"J. Bruce Fields\" \u003cbfields@fieldses.org\u003e\nCc: Neil Brown \u003cneilb@suse.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    }
  ],
  "next": "73c34431c7119d0bc7d3436abfad75fe47b2c51f"
}
