)]}'
{
  "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": "ccacc7d2cf03114a24ab903f710118e9e5d43273",
      "tree": "c856e2a17f6c6a26996a8cfba87680a2375061d5",
      "parents": [
        "83838ed87898e0a8ff8dbf001e54e6c017f0a011"
      ],
      "author": {
        "name": "Andre Noll",
        "email": "maan@systemlinux.org",
        "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: raid0: make hash_spacing and preshift sector-based.\n\nThis patch renames the hash_spacing and preshift members of struct\nraid0_private_data to spacing and sector_shift respectively and\nchanges the semantics as follows:\n\nWe always have spacing \u003d 2 * hash_spacing. In case\nsizeof(sector_t) \u003e sizeof(u32) we also have sector_shift \u003d preshift + 1\nwhile sector_shift \u003d preshift \u003d 0 otherwise.\n\nNote that the values of nb_zone and zone are unaffected by these changes\nbecause in the sector_div() preceeding the assignement of these two\nvariables both arguments double.\n\nSigned-off-by: Andre Noll \u003cmaan@systemlinux.org\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "83838ed87898e0a8ff8dbf001e54e6c017f0a011",
      "tree": "218e6c8dbe52257251f165cd544c4bebbeae3c40",
      "parents": [
        "0825b87a7dd9645c7e16489fec839a3cb5c40a08"
      ],
      "author": {
        "name": "Andre Noll",
        "email": "maan@systemlinux.org",
        "time": "Fri Jan 09 08:31:07 2009 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Jan 09 08:31:07 2009 +1100"
      },
      "message": "md: raid0: Represent the size of strip zones in sectors.\n\nThis completes the block -\u003e sector conversion of struct strip_zone.\n\nSigned-off-by: Andre Noll \u003cmaan@systemlinux.org\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "0825b87a7dd9645c7e16489fec839a3cb5c40a08",
      "tree": "35c009c01470ce79fd1bc93d19c5bdb6b2a3b761",
      "parents": [
        "6b8796cc3decb43c7c67a13a0699b6a21b754c78"
      ],
      "author": {
        "name": "Andre Noll",
        "email": "maan@systemlinux.org",
        "time": "Fri Jan 09 08:31:07 2009 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Jan 09 08:31:07 2009 +1100"
      },
      "message": "md: raid0 create_strip_zones(): Add KERN_INFO/KERN_ERR to printk\u0027s.\n\nThis patch consists only of these trivial changes.\n\nSigned-off-by: Andre Noll \u003cmaan@systemlinux.org\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "6b8796cc3decb43c7c67a13a0699b6a21b754c78",
      "tree": "6096c9da13baa3983d96f69f5b3dbcd099d35c49",
      "parents": [
        "6199d3db0fc34f8ada895879d04a353a6ae632bc"
      ],
      "author": {
        "name": "Andre Noll",
        "email": "maan@systemlinux.org",
        "time": "Fri Jan 09 08:31:07 2009 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Jan 09 08:31:07 2009 +1100"
      },
      "message": "md: raid0 create_strip_zones(): Make two local variables sector-based.\n\ncurrent_offset and curr_zone_offset stored the corresponding offsets\nas 1K quantities. Rename them to current_start and curr_zone_start\nto match the naming of struct strip_zone and store the offsets as\nsector counts.\n\nAlso, add KERN_INFO to the printk() affected by this change to make\ncheckpatch happy.\n\nSigned-off-by: Andre Noll \u003cmaan@systemlinux.org\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "6199d3db0fc34f8ada895879d04a353a6ae632bc",
      "tree": "5a7d5f4a080abf6c46a87f121a859fd45fd53254",
      "parents": [
        "019c4e2f3e02aac4b44003913b54ca4b332e4371"
      ],
      "author": {
        "name": "Andre Noll",
        "email": "maan@systemlinux.org",
        "time": "Fri Jan 09 08:31:07 2009 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Jan 09 08:31:07 2009 +1100"
      },
      "message": "md: raid0: Represent zone-\u003ezone_offset in sectors.\n\nFor the same reason as in the previous patch, rename it from zone_offset\nto zone_start.\n\nSigned-off-by: Andre Noll \u003cmaan@systemlinux.org\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "019c4e2f3e02aac4b44003913b54ca4b332e4371",
      "tree": "ebdd73075be543d5feb1a1e86a793a2b3311ea9b",
      "parents": [
        "e0f06868341700c5c1964a04f6c5b51d0a2d5bca"
      ],
      "author": {
        "name": "Andre Noll",
        "email": "maan@systemlinux.org",
        "time": "Fri Jan 09 08:31:06 2009 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Jan 09 08:31:06 2009 +1100"
      },
      "message": "md: raid0: Represent device offset in sectors.\n\nRename zone-\u003edev_offset to zone-\u003edev_start to make sure all users\nhave been converted.\n\nSigned-off-by: Andre Noll \u003cmaan@systemlinux.org\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "e0f06868341700c5c1964a04f6c5b51d0a2d5bca",
      "tree": "3709a5c7868c721086416737f71b1382a2690be6",
      "parents": [
        "a471200595b24fb1907ad12107a6a66db02c63f2"
      ],
      "author": {
        "name": "Andre Noll",
        "email": "maan@systemlinux.org",
        "time": "Fri Jan 09 08:31:06 2009 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Jan 09 08:31:06 2009 +1100"
      },
      "message": "md: raid0_make_request(): Replace local variable block by sector.\n\nThis change already simplifies the code a bit.\n\nSigned-off-by: Andre Noll \u003cmaan@systemlinux.org\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "a471200595b24fb1907ad12107a6a66db02c63f2",
      "tree": "55c04f45ca294cdd765d386a4f2539e4f4d7b069",
      "parents": [
        "1b7fdf8ff7c0e3fba9c679def4e98d5701d2949e"
      ],
      "author": {
        "name": "Andre Noll",
        "email": "maan@systemlinux.org",
        "time": "Fri Jan 09 08:31:06 2009 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Jan 09 08:31:06 2009 +1100"
      },
      "message": "md: raid0_make_request(): Remove local variable chunk_size.\n\nWe might as well use chunk_sects instead.\n\nSigned-off-by: Andre Noll \u003cmaan@systemlinux.org\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "1b7fdf8ff7c0e3fba9c679def4e98d5701d2949e",
      "tree": "c24c3a5f0c5f36a2af9b2a860074995b18537d06",
      "parents": [
        "0c3573f19d135d718264e38c46597295bd6154b7"
      ],
      "author": {
        "name": "Andre Noll",
        "email": "maan@systemlinux.org",
        "time": "Fri Jan 09 08:31:06 2009 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Jan 09 08:31:06 2009 +1100"
      },
      "message": "md: raid0_make_request(): Replace chunksize_bits by chunksect_bits.\n\nAs ffz(~(2 * x)) \u003d ffz(~x) + 1, we have\n\n\tchunksect_bits \u003d chunksize_bits + 1.\n\nFixup all users accordingly.\n\nSigned-off-by: Andre Noll \u003cmaan@systemlinux.org\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": "538452700d95480c16e7aa6b10ff77cd937d33f4",
      "tree": "f0a25315e64ee38e59cefca1fb3bd064ffaedc46",
      "parents": [
        "9e42d0cf5020aaf217433cad1a224745241d212a"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Jan 09 08:31:05 2009 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Jan 09 08:31:05 2009 +1100"
      },
      "message": "md: fix bitmap-on-external-file bug.\n\ncommit a2ed9615e3222645007fc19991aedf30eed3ecfd\nfixed a bug with \u0027internal\u0027 bitmaps, but in the process broke\n\u0027in a file\u0027 bitmaps.  So they are broken in 2.6.28\n\nThis fixes it, and needs to go in 2.6.28-stable.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\nCc: stable@kernel.org\n"
    },
    {
      "commit": "a159c1ac5f33c6cf0f5aa3c9d1ccdc82c907ee46",
      "tree": "2cb6bfd3f376e2366f3e3820ebd07a0a86a01cfc",
      "parents": [
        "4db6bfe02bdc7dc5048f46dd682a94801d029adc"
      ],
      "author": {
        "name": "Jonathan Brassow",
        "email": "jbrassow@redhat.com",
        "time": "Tue Jan 06 03:05:19 2009 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Tue Jan 06 03:05:19 2009 +0000"
      },
      "message": "dm snapshot: extend exception store functions\n\nSupply dm_add_exception as a callback to the read_metadata function.\nAdd a status function ready for a later patch and name the functions\nconsistently.\n\nSigned-off-by: Jonathan Brassow \u003cjbrassow@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "4db6bfe02bdc7dc5048f46dd682a94801d029adc",
      "tree": "780a41560ea05266288853204f0d7e4eef4f6355",
      "parents": [
        "1ae25f9c933d1432fbffdf3e126051a974608abf"
      ],
      "author": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Tue Jan 06 03:05:17 2009 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Tue Jan 06 03:05:17 2009 +0000"
      },
      "message": "dm snapshot: split out exception store implementations\n\nMove the existing snapshot exception store implementations out into\nseparate files.  Later patches will place these behind a new\ninterface in preparation for alternative implementations.\n\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "1ae25f9c933d1432fbffdf3e126051a974608abf",
      "tree": "5a15a6330107a70a51d0c3cfe0bf703762e79839",
      "parents": [
        "aea53d92f70eeb00ae480e399a997dd55fd5055d"
      ],
      "author": {
        "name": "Jonathan Brassow",
        "email": "jbrassow@redhat.com",
        "time": "Tue Jan 06 03:05:16 2009 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Tue Jan 06 03:05:16 2009 +0000"
      },
      "message": "dm snapshot: rename struct exception_store\n\nRename struct exception_store to dm_exception_store.\n\nSigned-off-by: Jonathan Brassow \u003cjbrassow@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "aea53d92f70eeb00ae480e399a997dd55fd5055d",
      "tree": "55e087e5e22168ed87f6d51ca0c8557a7678834f",
      "parents": [
        "fe9cf30eb8186ef267d1868dc9f12f2d0f40835a"
      ],
      "author": {
        "name": "Jonathan Brassow",
        "email": "jbrassow@redhat.com",
        "time": "Tue Jan 06 03:05:15 2009 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Tue Jan 06 03:05:15 2009 +0000"
      },
      "message": "dm snapshot: separate out exception store interface\n\nPull structures that bridge the gap between snapshot and\nexception store out of dm-snap.h and put them in a new\n.h file - dm-exception-store.h.  This file will define the\nAPI for new exception stores.\n\nUltimately, dm-snap.h is unnecessary, since only dm-snap.c\nshould be using it.\n\nSigned-off-by: Jonathan Brassow \u003cjbrassow@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "fe9cf30eb8186ef267d1868dc9f12f2d0f40835a",
      "tree": "357db984073d7362b6c31dd431f77768c65800bf",
      "parents": [
        "784aae735d9b0bba3f8b9faef4c8b30df3bf0128"
      ],
      "author": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Tue Jan 06 03:05:13 2009 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Tue Jan 06 03:05:13 2009 +0000"
      },
      "message": "dm mpath: move trigger_event to system workqueue\n\nThe same workqueue is used both for sending uevents and processing queued I/O.\nDeadlock has been reported in RHEL5 when sending a uevent was blocked waiting\nfor the queued I/O to be processed.  Use scheduled_work() for the asynchronous\nuevents instead.\n\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "784aae735d9b0bba3f8b9faef4c8b30df3bf0128",
      "tree": "7e2e956c395b27f63569d7a6adc1098f116cc3a4",
      "parents": [
        "d58168763f74d1edbc296d7038c60efe6493fdd4"
      ],
      "author": {
        "name": "Milan Broz",
        "email": "mbroz@redhat.com",
        "time": "Tue Jan 06 03:05:12 2009 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Tue Jan 06 03:05:12 2009 +0000"
      },
      "message": "dm: add name and uuid to sysfs\n\nImplement simple read-only sysfs entry for device-mapper block device.\n\nThis patch adds a simple sysfs directory named \"dm\" under block device\nproperties and implements\n\t- name attribute (string containing mapped device name)\n\t- uuid attribute (string containing UUID, or empty string if not set)\n\nThe kobject is embedded in mapped_device struct, so no additional\nmemory allocation is needed for initializing sysfs entry.\n\nDuring the processing of sysfs attribute we need to lock mapped device\nwhich is done by a new function dm_get_from_kobj, which returns the md\nassociated with kobject and increases the usage count.\n\nEach \u0027show attribute\u0027 function is responsible for its own locking.\n\nSigned-off-by: Milan Broz \u003cmbroz@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "d58168763f74d1edbc296d7038c60efe6493fdd4",
      "tree": "03866d641211fe16961a5b8aab6d9132bf07d9c8",
      "parents": [
        "ab4c1424882be9cd70b89abf2b484add355712fa"
      ],
      "author": {
        "name": "Mikulas Patocka",
        "email": "mpatocka@redhat.com",
        "time": "Tue Jan 06 03:05:10 2009 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Tue Jan 06 03:05:10 2009 +0000"
      },
      "message": "dm table: rework reference counting\n\nRework table reference counting.\n\nThe existing code uses a reference counter. When the last reference is\ndropped and the counter reaches zero, the table destructor is called.\nTable reference counters are acquired/released from upcalls from other\nkernel code (dm_any_congested, dm_merge_bvec, dm_unplug_all).\nIf the reference counter reaches zero in one of the upcalls, the table\ndestructor is called from almost random kernel code.\n\nThis leads to various problems:\n* dm_any_congested being called under a spinlock, which calls the\n  destructor, which calls some sleeping function.\n* the destructor attempting to take a lock that is already taken by the\n  same process.\n* stale reference from some other kernel code keeps the table\n  constructed, which keeps some devices open, even after successful\n  return from \"dmsetup remove\". This can confuse lvm and prevent closing\n  of underlying devices or reusing device minor numbers.\n\nThe patch changes reference counting so that the table destructor can be\ncalled only at predetermined places.\n\nThe table has always exactly one reference from either mapped_device-\u003emap\nor hash_cell-\u003enew_map. After this patch, this reference is not counted\nin table-\u003eholders.  A pair of dm_create_table/dm_destroy_table functions\nis used for table creation/destruction.\n\nTemporary references from the other code increase table-\u003eholders. A pair\nof dm_table_get/dm_table_put functions is used to manipulate it.\n\nWhen the table is about to be destroyed, we wait for table-\u003eholders to\nreach 0. Then, we call the table destructor.  We use active waiting with\nmsleep(1), because the situation happens rarely (to one user in 5 years)\nand removing the device isn\u0027t performance-critical task: the user doesn\u0027t\ncare if it takes one tick more or not.\n\nThis way, the destructor is called only at specific points\n(dm_table_destroy function) and the above problems associated with lazy\ndestruction can\u0027t happen.\n\nFinally remove the temporary protection added to dm_any_congested().\n\nSigned-off-by: Mikulas Patocka \u003cmpatocka@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "ab4c1424882be9cd70b89abf2b484add355712fa",
      "tree": "8baed3606be67900df9f02e42fcdb091b78c5def",
      "parents": [
        "7d76345da6ed3927c9cbf5d3f7a7021e8bba7374"
      ],
      "author": {
        "name": "Andi Kleen",
        "email": "ak@suse.de",
        "time": "Tue Jan 06 03:05:09 2009 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Tue Jan 06 03:05:09 2009 +0000"
      },
      "message": "dm: support barriers on simple devices\n\nImplement barrier support for single device DM devices\n\nThis patch implements barrier support in DM for the common case of dm linear\njust remapping a single underlying device. In this case we can safely\npass the barrier through because there can be no reordering between\ndevices.\n\n NB. Any DM device might cease to support barriers if it gets\n     reconfigured so code must continue to allow for a possible\n     -EOPNOTSUPP on every barrier bio submitted.  - agk\n\nSigned-off-by: Andi Kleen \u003cak@suse.de\u003e\nSigned-off-by: Mikulas Patocka \u003cmpatocka@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "8fbf26ad5b16ad3a826ca7fe3e86700420abed1f",
      "tree": "43bc5cc2ca90ea394682daa4b665a46ebb110b97",
      "parents": [
        "23d39f63aa87e812fd879b8bc32ee6ccfe733de3"
      ],
      "author": {
        "name": "Kiyoshi Ueda",
        "email": "k-ueda@ct.jp.nec.com",
        "time": "Tue Jan 06 03:05:06 2009 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Tue Jan 06 03:05:06 2009 +0000"
      },
      "message": "dm request: add caches\n\nThis patch prepares some kmem_caches for request-based dm.\n\nSigned-off-by: Kiyoshi Ueda \u003ck-ueda@ct.jp.nec.com\u003e\nSigned-off-by: Jun\u0027ichi Nomura \u003cj-nomura@ce.jp.nec.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "23d39f63aa87e812fd879b8bc32ee6ccfe733de3",
      "tree": "3535af0aff56260cdbf573a704e3f0122c6cfc8b",
      "parents": [
        "ac1f0ac22c7be908fd33407273b9808bfaedada4"
      ],
      "author": {
        "name": "Milan Broz",
        "email": "mbroz@redhat.com",
        "time": "Tue Jan 06 03:05:04 2009 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Tue Jan 06 03:05:04 2009 +0000"
      },
      "message": "dm ioctl: allow dm_copy_name_and_uuid to return only one field\n\nAllow NULL buffer in dm_copy_name_and_uuid if you only want to return one of\nthe fields.\n\n(Required by a following patch that adds these fields to sysfs.)\n\nSigned-off-by: Milan Broz \u003cmbroz@redhat.com\u003e\nReviewed-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "ac1f0ac22c7be908fd33407273b9808bfaedada4",
      "tree": "f6a867138918b591639464802744506f6b83ad14",
      "parents": [
        "2045e88edb4e0c9ce62d317f77dc59d27d9c530e"
      ],
      "author": {
        "name": "Milan Broz",
        "email": "mbroz@redhat.com",
        "time": "Tue Jan 06 03:05:02 2009 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Tue Jan 06 03:05:02 2009 +0000"
      },
      "message": "dm log: ensure log bitmap fits on log device\n\nCheck that the log bitmap will fit within the log device.\n\nSigned-off-by: Milan Broz \u003cmbroz@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "2045e88edb4e0c9ce62d317f77dc59d27d9c530e",
      "tree": "324eeea271b889263d0141fe0c82d4b0e43d0079",
      "parents": [
        "6f3af01cb0eda0ec50fe1e4cbdf028269dc396fe"
      ],
      "author": {
        "name": "Milan Broz",
        "email": "mbroz@redhat.com",
        "time": "Tue Jan 06 03:05:01 2009 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Tue Jan 06 03:05:01 2009 +0000"
      },
      "message": "dm log: move region_size validation\n\nMove log size validation from mirror target to log constructor.\n\nRemoved PAGE_SIZE restriction we no longer think necessary.\n\nSigned-off-by: Milan Broz \u003cmbroz@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "6f3af01cb0eda0ec50fe1e4cbdf028269dc396fe",
      "tree": "29988ebe5a40ee1092bdbeac45eb0bdc312ff670",
      "parents": [
        "10d3bd09a3c25df114f74f7f86e1b58d070bef32"
      ],
      "author": {
        "name": "Takahiro Yasui",
        "email": "tyasui@redhat.com",
        "time": "Tue Jan 06 03:04:59 2009 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Tue Jan 06 03:04:59 2009 +0000"
      },
      "message": "dm log: avoid reinitialising io_req on every operation\n\nrw_header function updates three members of io_req data every time\nwhen I/O is processed. bi_rw and notify.fn are never modified once\nthey get initialized, and so they can be set in advance.\n\nheader_to_disk() can also be pulled out of write_header() since only one\ncaller needs it and write_header() can be replaced by rw_header()\ndirectly.\n\nSigned-off-by: Takahiro Yasui \u003ctyasui@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "10d3bd09a3c25df114f74f7f86e1b58d070bef32",
      "tree": "a44e2fe5ccc5950b87a1d31849e5f0ac24fdcc16",
      "parents": [
        "d460c65a6a9ec9e0d284864ec3a9a2d1b73f0e43"
      ],
      "author": {
        "name": "Mikulas Patocka",
        "email": "mpatocka@redhat.com",
        "time": "Tue Jan 06 03:04:58 2009 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Tue Jan 06 03:04:58 2009 +0000"
      },
      "message": "dm: consolidate target deregistration error handling\n\nChange dm_unregister_target to return void and use BUG() for error\nreporting.\n\ndm_unregister_target can only fail because of programming bug in the\ntarget driver. It can\u0027t fail because of user\u0027s behavior or disk errors.\n\nThis patch changes unregister_target to return void and use BUG if\nsomeone tries to unregister non-registered target or unregister target\nthat is in use.\n\nThis patch removes code duplication (testing of error codes in all dm\ntargets) and reports bugs in just one place, in dm_unregister_target. In\nsome target drivers, these return codes were ignored, which could lead\nto a situation where bugs could be missed.\n\nSigned-off-by: Mikulas Patocka \u003cmpatocka@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "d460c65a6a9ec9e0d284864ec3a9a2d1b73f0e43",
      "tree": "84131d888f5ec610cc343ca7188a5d4044043c2b",
      "parents": [
        "c7a2bd19b7c1e0bd2c7604c53d2583e91e536948"
      ],
      "author": {
        "name": "Jonathan Brassow",
        "email": "jbrassow@redhat.com",
        "time": "Tue Jan 06 03:04:57 2009 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Tue Jan 06 03:04:57 2009 +0000"
      },
      "message": "dm raid1: fix error count\n\nAlways increase the error count when I/O on a leg of a mirror fails.\n\nThe error count is used to decide whether to select an alternative\nmirror leg.  If the target doesn\u0027t use the \"handle_errors\" feature, the\nerror count is not updated and the bio can get requeued forever by the\nread callback.\n\nFix it by increasing error_count before the handle_errors feature\nchecking.\n\nCc: stable@kernel.org\nSigned-off-by: Milan Broz \u003cmbroz@redhat.com\u003e\nSigned-off-by: Jonathan Brassow \u003cjbrassow@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "c7a2bd19b7c1e0bd2c7604c53d2583e91e536948",
      "tree": "bb896040c05397026745de9d05bd6f491d26603f",
      "parents": [
        "90fa1527bddc7147dc0d590ee6184ca88bc50ecf"
      ],
      "author": {
        "name": "Takahiro Yasui",
        "email": "tyasui@redhat.com",
        "time": "Tue Jan 06 03:04:56 2009 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Tue Jan 06 03:04:56 2009 +0000"
      },
      "message": "dm log: fix dm_io_client leak on error paths\n\nIn create_log_context function, dm_io_client_destroy function needs\nto be called, when memory allocation of disk_header, sync_bits and\nrecovering_bits failed, but dm_io_client_destroy is not called.\n\nCc: stable@kernel.org\nSigned-off-by: Takahiro Yasui \u003ctyasui@redhat.com\u003e\nAcked-by: Jonathan Brassow \u003cjbrassow@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "90fa1527bddc7147dc0d590ee6184ca88bc50ecf",
      "tree": "a6b692b5a7ef777cbd8f2927783f593234b091d1",
      "parents": [
        "a1b51e98676932d031f5eec1325b2df4bbdc8f26"
      ],
      "author": {
        "name": "Mikulas Patocka",
        "email": "mpatocka@redhat.com",
        "time": "Tue Jan 06 03:04:54 2009 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Tue Jan 06 03:04:54 2009 +0000"
      },
      "message": "dm snapshot: change yield to msleep\n\nChange yield() to msleep(1). If the thread had realtime priority,\nyield() doesn\u0027t really yield, so the yielding process would loop\nindefinitely and cause machine lockup.\n\nSigned-off-by: Mikulas Patocka \u003cmpatocka@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "a1b51e98676932d031f5eec1325b2df4bbdc8f26",
      "tree": "0dda5c172f6ef1880dbc9eafb9eb6d404c9447c6",
      "parents": [
        "fe0bdec68b77020281dc814805edfe594ae89e0f"
      ],
      "author": {
        "name": "Mikulas Patocka",
        "email": "mpatocka@redhat.com",
        "time": "Tue Jan 06 03:04:53 2009 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Tue Jan 06 03:04:53 2009 +0000"
      },
      "message": "dm table: drop reference at unbind\n\nMove one dm_table_put() so that the last reference in the thread\ngets dropped in __unbind().\n\nThis is required for a following patch,\ndm-table-rework-reference-counting.patch, which will change the logic in\nsuch a way that table destructor is called only at specific points in\nthe code.\n\nSigned-off-by: Mikulas Patocka \u003cmpatocka@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "bb799ca0202a360fa74d5f17039b9100caebdde7",
      "tree": "048b6cedfd2644edd82a606db6d9e8b19d31328b",
      "parents": [
        "1b4344986926da324b5cd10b683e5a1a5e1b7db3"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Wed Dec 10 15:35:05 2008 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Mon Dec 29 08:29:23 2008 +0100"
      },
      "message": "bio: allow individual slabs in the bio_set\n\nInstead of having a global bio slab cache, add a reference to one\nin each bio_set that is created. This allows for personalized slabs\nin each bio_set, so that they can have bios of different sizes.\n\nThis means we can personalize the bios we return. File systems may\nwant to embed the bio inside another structure, to avoid allocation\nmore items (and stuffing them in -\u003ebi_private) after the get a bio.\nOr we may want to embed a number of bio_vecs directly at the end\nof a bio, to avoid doing two allocations to return a bio. This is now\npossible.\n\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "db8862eafe8a5d030a3b02e81b8bb47447c315e3",
      "tree": "073ea7b46809bf804134cbf008a593413c02a99c",
      "parents": [
        "c5dee6177f4bd2095aab7d9be9f6ebdddd6deee9",
        "c20137fc5329eaf24093fc48c52608dc66be8e5c"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Wed Dec 24 21:08:26 2008 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Wed Dec 24 21:08:26 2008 +0100"
      },
      "message": "Merge branch \u0027linus\u0027 into tracing/hw-branch-tracing\n"
    },
    {
      "commit": "a2ed9615e3222645007fc19991aedf30eed3ecfd",
      "tree": "2a07cc815f5c348f085ad96a5660e3213da955f4",
      "parents": [
        "55dac3a5553b13891f0ae4bbd11920619b5436d4"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Dec 19 16:25:01 2008 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Dec 19 16:25:01 2008 +1100"
      },
      "message": "md: Don\u0027t read past end of bitmap when reading bitmap.\n\nWhen we read the write-intent-bitmap off the device, we currently\nread a whole number of pages.\nWhen PAGE_SIZE is 4K, this works due to the alignment we enforce\non the superblock and bitmap.\nWhen PAGE_SIZE is 64K, this case read past the end-of-device\nwhich causes an error.\n\nWhen we write the superblock, we ensure to clip the last page\nto just be the required size.  Copy that code into the read path\nto just read the required number of sectors.\n\nSigned-off-by: Neil Brown \u003cneilb@suse.de\u003e\nCc: stable@kernel.org\n"
    },
    {
      "commit": "970987beb9c99ca806edc464518d411cc399fb4d",
      "tree": "51e2298b6eb7e6412009428b380a51e1f17b531b",
      "parents": [
        "faec2ec505d397e9426754722b6e80d519c4938f",
        "1fd8f2a3f9a91b287a876cef830b21baafc8a799",
        "feaf3848a813a106f163013af6fcf6c4bfec92d9"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Fri Dec 05 14:45:22 2008 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Fri Dec 05 14:45:22 2008 +0100"
      },
      "message": "Merge branches \u0027tracing/ftrace\u0027, \u0027tracing/function-graph-tracer\u0027 and \u0027tracing/urgent\u0027 into tracing/core\n"
    },
    {
      "commit": "0e435ac26e3f951d83338ed3d4ab7dc0fe0055bc",
      "tree": "8f208a3093de1a314a981ae47e5ef92a5909c13b",
      "parents": [
        "53a08807c01989c6847bb135d8d43f61c5dfdda5"
      ],
      "author": {
        "name": "Milan Broz",
        "email": "mbroz@redhat.com",
        "time": "Wed Dec 03 12:55:08 2008 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Wed Dec 03 12:55:55 2008 +0100"
      },
      "message": "block: fix setting of max_segment_size and seg_boundary mask\n\nFix setting of max_segment_size and seg_boundary mask for stacked md/dm\ndevices.\n\nWhen stacking devices (LVM over MD over SCSI) some of the request queue\nparameters are not set up correctly in some cases by default, namely\nmax_segment_size and and seg_boundary mask.\n\nIf you create MD device over SCSI, these attributes are zeroed.\n\nProblem become when there is over this mapping next device-mapper mapping\n- queue attributes are set in DM this way:\n\nrequest_queue   max_segment_size  seg_boundary_mask\nSCSI                65536             0xffffffff\nMD RAID1                0                      0\nLVM                 65536                 -1 (64bit)\n\nUnfortunately bio_add_page (resp.  bio_phys_segments) calculates number of\nphysical segments according to these parameters.\n\nDuring the generic_make_request() is segment cout recalculated and can\nincrease bio-\u003ebi_phys_segments count over the allowed limit.  (After\nbio_clone() in stack operation.)\n\nThi is specially problem in CCISS driver, where it produce OOPS here\n\n    BUG_ON(creq-\u003enr_phys_segments \u003e MAXSGENTRIES);\n\n(MAXSEGENTRIES is 31 by default.)\n\nSometimes even this command is enough to cause oops:\n\n  dd iflag\u003ddirect if\u003d/dev/\u003cvg\u003e/\u003clv\u003e of\u003d/dev/null bs\u003d128000 count\u003d10\n\nThis command generates bios with 250 sectors, allocated in 32 4k-pages\n(last page uses only 1024 bytes).\n\nFor LVM layer, it allocates bio with 31 segments (still OK for CCISS),\nunfortunatelly on lower layer it is recalculated to 32 segments and this\nviolates CCISS restriction and triggers BUG_ON().\n\nThe patch tries to fix it by:\n\n * initializing attributes above in queue request constructor\n   blk_queue_make_request()\n\n * make sure that blk_queue_stack_limits() inherits setting\n\n (DM uses its own function to set the limits because it\n blk_queue_stack_limits() was introduced later.  It should probably switch\n to use generic stack limit function too.)\n\n * sets the default seg_boundary value in one place (blkdev.h)\n\n * use this mask as default in DM (instead of -1, which differs in 64bit)\n\nBugs related to this:\nhttps://bugzilla.redhat.com/show_bug.cgi?id\u003d471639\nhttp://bugzilla.kernel.org/show_bug.cgi?id\u003d8672\n\nSigned-off-by: Milan Broz \u003cmbroz@redhat.com\u003e\nReviewed-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\nCc: Neil Brown \u003cneilb@suse.de\u003e\nCc: FUJITA Tomonori \u003cfujita.tomonori@lab.ntt.co.jp\u003e\nCc: Tejun Heo \u003chtejun@gmail.com\u003e\nCc: Mike Miller \u003cmike.miller@hp.com\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "0bfc24559d7945506184d86739fe365a181f06b7",
      "tree": "5c152128faac7080f4802ce03d1c6b6bc7173227",
      "parents": [
        "5f3ea37c7716db4e894a480e0c18b24399595b6b"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Wed Nov 26 11:59:56 2008 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Wed Nov 26 13:04:35 2008 +0100"
      },
      "message": "blktrace: port to tracepoints, update\n\nPort to the new tracepoints API: split DEFINE_TRACE() and DECLARE_TRACE()\nsites. Spread them out to the usage sites, as suggested by\nMathieu Desnoyers.\n\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nAcked-by: Mathieu Desnoyers \u003cmathieu.desnoyers@polymtl.ca\u003e\n"
    },
    {
      "commit": "5f3ea37c7716db4e894a480e0c18b24399595b6b",
      "tree": "db6784635d024894f641b340dcd7c5060c446077",
      "parents": [
        "509dceef6470442d8c7b8a43ec34125205840b3c"
      ],
      "author": {
        "name": "Arnaldo Carvalho de Melo",
        "email": "acme@redhat.com",
        "time": "Thu Oct 30 08:34:33 2008 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Wed Nov 26 12:13:34 2008 +0100"
      },
      "message": "blktrace: port to tracepoints\n\nThis was a forward port of work done by Mathieu Desnoyers, I changed it to\nencode the \u0027what\u0027 parameter on the tracepoint name, so that one can register\ninterest in specific events and not on classes of events to then check the\n\u0027what\u0027 parameter.\n\nSigned-off-by: Arnaldo Carvalho de Melo \u003cacme@redhat.com\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "8a57dfc6f943c92b861c9a19b0c86ddcb2aba768",
      "tree": "18090d42e647cda854c93aa304cf03fbad44f6c0",
      "parents": [
        "d221d2e77696e70e94b13989ea15db2ba5b34f8e"
      ],
      "author": {
        "name": "Chandra Seetharaman",
        "email": "sekharan@us.ibm.com",
        "time": "Thu Nov 13 23:39:14 2008 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Thu Nov 13 23:39:14 2008 +0000"
      },
      "message": "dm: avoid destroying table in dm_any_congested\n\ndm_any_congested() just checks for the DMF_BLOCK_IO and has no\ncode to make sure that suspend waits for dm_any_congested() to\ncomplete.  This patch adds such a check.\n\nWithout it, a race can occur with dm_table_put() attempting to\ndestroying the table in the wrong thread, the one running\ndm_any_congested() which is meant to be quick and return\nimmediately.\n\nTwo examples of problems:\n1. Sleeping functions called from congested code, the caller\n   of which holds a spin lock.\n2. An ABBA deadlock between pdflush and multipathd. The two locks\n   in contention are inode lock and kernel lock.\n\nSigned-off-by: Chandra Seetharaman \u003csekharan@us.ibm.com\u003e\nSigned-off-by: Mikulas Patocka \u003cmpatocka@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "d221d2e77696e70e94b13989ea15db2ba5b34f8e",
      "tree": "82afcee59db83104d31848e2304eb51baeee3aa4",
      "parents": [
        "14e98c5ca8bed825f65cbf11cb0ffd2c09dac2f4"
      ],
      "author": {
        "name": "Mikulas Patocka",
        "email": "mpatocka@redhat.com",
        "time": "Thu Nov 13 23:39:10 2008 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Thu Nov 13 23:39:10 2008 +0000"
      },
      "message": "dm: move pending queue wake_up end_io_acct\n\nThis doesn\u0027t fix any bug, just moves wake_up immediately after decrementing\nmd-\u003epending, for better code readability.\n\nIt must be clear to anyone manipulating md-\u003epending to wake up\nthe queue if md-\u003epending reaches zero, so move the wakeup as close to\nthe decrementing as possible.\n\nSigned-off-by: Mikulas Patocka \u003cmpatocka@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "14e98c5ca8bed825f65cbf11cb0ffd2c09dac2f4",
      "tree": "62cb7234d156c0523584343796d0e3c89d7a80bf",
      "parents": [
        "b81aa1c79201cb424114fd198607951900babe18"
      ],
      "author": {
        "name": "Chandra Seetharaman",
        "email": "sekharan@us.ibm.com",
        "time": "Thu Nov 13 23:39:06 2008 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Thu Nov 13 23:39:06 2008 +0000"
      },
      "message": "dm mpath: warn if args ignored\n\nCurrently dm ignores the parameters provided to hardware handlers\nwithout providing any notifications to the user.\n\nThis patch just prints a warning message so that the user knows that\nthe arguments are ignored.\n\nSigned-off-by: Chandra Seetharaman \u003csekharan@us.ibm.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "b81aa1c79201cb424114fd198607951900babe18",
      "tree": "f05501c670fd9919779b6759e2ff816f574186fe",
      "parents": [
        "6edebdee48729ab4ba564bbfcb8dbf6a6cd68a39"
      ],
      "author": {
        "name": "Chandra Seetharaman",
        "email": "sekharan@us.ibm.com",
        "time": "Thu Nov 13 23:39:00 2008 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Thu Nov 13 23:39:00 2008 +0000"
      },
      "message": "dm mpath: avoid attempting to activate null path\n\nPath activation code is called even when the pgpath is NULL. This could\nlead to a panic in activate_path(). Such a panic is seen in -rt kernel.\n\nThis problem has been there before the pg_init() was moved to a\nworkqueue.\n\nSigned-off-by: Chandra Seetharaman \u003csekharan@us.ibm.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "6edebdee48729ab4ba564bbfcb8dbf6a6cd68a39",
      "tree": "29b92a961e503e9257e3f34fc2e933d51315ec42",
      "parents": [
        "18776c7316545482a02bfaa2629a2aa1afc48357"
      ],
      "author": {
        "name": "Heinz Mauelshagen",
        "email": "heinzm@redhat.com",
        "time": "Thu Nov 13 23:38:56 2008 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Thu Nov 13 23:38:56 2008 +0000"
      },
      "message": "dm stripe: fix init failure\n\nDon\u0027t proceed if dm_stripe_init() fails to register itself as a dm target.\n\nSigned-off-by: Heinz Mauelshagen \u003cheinzm@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "18776c7316545482a02bfaa2629a2aa1afc48357",
      "tree": "ecd30db869eff5968921af7df8f055794ed3730f",
      "parents": [
        "4ffaf869c7780bbdfc11291e5fd4b61dde662b1c"
      ],
      "author": {
        "name": "Mikulas Patocka",
        "email": "mpatocka@redhat.com",
        "time": "Thu Nov 13 23:38:52 2008 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Thu Nov 13 23:38:52 2008 +0000"
      },
      "message": "dm raid1: flush workqueue before destruction\n\nWe queue work on keventd queue --- so this queue must be flushed in the\ndestructor. Otherwise, keventd could access mirror_set after it was freed.\n\nSigned-off-by: Mikulas Patocka \u003cmpatocka@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\nCc: stable@kernel.org\n"
    },
    {
      "commit": "f1cd14ae52985634d0389e934eba25b5ecf24565",
      "tree": "131e1fedd27d63d30896233d695594508bdbd04f",
      "parents": [
        "a53a6c85756339f82ff19e001e90cfba2d6299a8"
      ],
      "author": {
        "name": "Andre Noll",
        "email": "maan@systemlinux.org",
        "time": "Thu Nov 06 19:41:24 2008 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Nov 06 19:41:24 2008 +1100"
      },
      "message": "md: linear: Fix a division by zero bug for very small arrays.\n\nWe currently oops with a divide error on starting a linear software\nraid array consisting of at least two very small (\u003c 500K) devices.\n\nThe bug is caused by the calculation of the hash table size which\ntries to compute sector_div(sz, base) with \"base\" being zero due to\nthe small size of the component devices of the array.\n\nFix this by requiring the hash spacing to be at least one which\nimplies that also \"base\" is non-zero.\n\nThis bug has existed since about 2.6.14.\n\nCc: stable@kernel.org\nSigned-off-by: Andre Noll \u003cmaan@systemlinux.org\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "a53a6c85756339f82ff19e001e90cfba2d6299a8",
      "tree": "1c2d2601ad6c75aae1f47313f7df256556161fc7",
      "parents": [
        "cb3ac42b8af357fdd9ad838234245b39e5bdb7fe"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Nov 06 17:28:20 2008 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Nov 06 17:28:20 2008 +1100"
      },
      "message": "md: fix bug in raid10 recovery.\n\nAdding a spare to a raid10 doesn\u0027t cause recovery to start.\nThis is due to an silly type in\n  commit 6c2fce2ef6b4821c21b5c42c7207cb9cf8c87eda\nand so is a bug in 2.6.27 and .28-rc.\n\nThanks to Thomas Backlund for bisecting to find this.\n\nCc: Thomas Backlund \u003ctmb@mandriva.org\u003e\nCc: stable@kernel.org\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": "721d5dfe7e516954c501d5e9d0dfab379cf4241a",
      "tree": "3056d4ffeecd171cf9f091437e721d2556e63c6d",
      "parents": [
        "f2347dfcd14fd9e30714656cb27be2b7abe59c63",
        "934d9c23b4c7e31840a895ba4b7e88d6413c81f3"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Oct 30 18:36:16 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Oct 30 18:36:16 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: destroy partitions and notify udev when md array is stopped.\n"
    },
    {
      "commit": "879129d208f725267366296b631aef31409cf304",
      "tree": "7dd927ae094580f6a3fe420c0cc5f8e251ce9e9e",
      "parents": [
        "60c856c8e2f57a3f69c505735ef66e3719ea0bd6"
      ],
      "author": {
        "name": "Mikulas Patocka",
        "email": "mpatocka@redhat.com",
        "time": "Thu Oct 30 13:33:16 2008 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Thu Oct 30 13:33:16 2008 +0000"
      },
      "message": "dm snapshot: wait for chunks in destructor\n\nIf there are several snapshots sharing an origin and one is removed\nwhile the origin is being written to, the snapshot\u0027s mempool may get\ndeleted while elements are still referenced.\n\nPrior to dm-snapshot-use-per-device-mempools.patch the pending\nexceptions may still have been referenced after the snapshot was\ndestroyed, but this was not a problem because the shared mempool\nwas still there.\n\nThis patch fixes the problem by tracking the number of mempool elements\nin use.\n\nThe scenario:\n- You have an origin and two snapshots 1 and 2.\n- Someone writes to the origin.\n- It creates two exceptions in the snapshots, snapshot 1 will be primary\nexception, snapshot 2\u0027s pending_exception-\u003eprimary_pe will point to the\nexception in snapshot 1.\n- The exceptions are being relocated, relocation of exception 1 finishes\n(but it\u0027s pending_exception is still allocated, because it is referenced\nby an exception from snapshot 2)\n- The user lvremoves snapshot 1 --- it calls just suspend (does nothing)\nand destructor. md-\u003epending is zero (there is no I/O submitted to the\nsnapshot by md layer), so it won\u0027t help us.\n- The destructor waits for kcopyd jobs to finish on snapshot 1 --- but\nthere are none.\n- The destructor on snapshot 1 cleans up everything.\n- The relocation of exception on snapshot 2 finishes, it drops reference\non primary_pe. This frees its primary_pe pointer. Primary_pe points to\npending exception created for snapshot 1. So it frees memory into\nnon-existing mempool.\n\nSigned-off-by: Mikulas Patocka \u003cmpatocka@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "60c856c8e2f57a3f69c505735ef66e3719ea0bd6",
      "tree": "a6295bec9c1fa01885ef14befa4ae3618f51ca57",
      "parents": [
        "b34578a48459ed1bd5396631aaa4a65d6bcc7726"
      ],
      "author": {
        "name": "Mikulas Patocka",
        "email": "mpatocka@redhat.com",
        "time": "Thu Oct 30 13:33:12 2008 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Thu Oct 30 13:33:12 2008 +0000"
      },
      "message": "dm snapshot: fix register_snapshot deadlock\n\nregister_snapshot() performs a GFP_KERNEL allocation while holding\n_origins_lock for write, but that could write out dirty pages onto a\ndevice that attempts to acquire _origins_lock for read, resulting in\ndeadlock.\n\nSo move the allocation up before taking the lock.\n\nThis path is not performance-critical, so it doesn\u0027t matter that we\nallocate memory and free it if we find that we won\u0027t need it.\n\nSigned-off-by: Mikulas Patocka \u003cmpatocka@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "b34578a48459ed1bd5396631aaa4a65d6bcc7726",
      "tree": "3b7bf0d60d7491403b4a541775b42b8763dbf32d",
      "parents": [
        "e946217e4fdaa67681bbabfa8e6b18641921f750"
      ],
      "author": {
        "name": "Ilpo Jarvinen",
        "email": "ilpo.jarvinen@helsinki.fi",
        "time": "Thu Oct 30 13:33:07 2008 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Thu Oct 30 13:33:07 2008 +0000"
      },
      "message": "dm raid1: fix do_failures\n\nMissing braces.  Commit 1f965b1943 (dm raid1: separate region_hash interface\npart1) broke it.\n\nSigned-off-by: Ilpo Jarvinen \u003cilpo.jarvinen@helsinki.fi\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\nCc: Heinz Mauelshagen \u003chjm@redhat.com\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": "22484856402bfa1ff3defe47f6029ab0418240d9",
      "tree": "140c67bf59674da350a7b51765d6ff7eb101b597",
      "parents": [
        "5ed487bc2c44ca4e9668ef9cb54c830e2a9fac47",
        "56b26add02b4bdea81d5e0ebda60db1fe3311ad4"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Oct 23 10:23:07 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Oct 23 10:23:07 2008 -0700"
      },
      "message": "Merge git://git.kernel.org/pub/scm/linux/kernel/git/viro/bdev\n\n* git://git.kernel.org/pub/scm/linux/kernel/git/viro/bdev: (66 commits)\n  [PATCH] kill the rest of struct file propagation in block ioctls\n  [PATCH] get rid of struct file use in blkdev_ioctl() BLKBSZSET\n  [PATCH] get rid of blkdev_locked_ioctl()\n  [PATCH] get rid of blkdev_driver_ioctl()\n  [PATCH] sanitize blkdev_get() and friends\n  [PATCH] remember mode of reiserfs journal\n  [PATCH] propagate mode through swsusp_close()\n  [PATCH] propagate mode through open_bdev_excl/close_bdev_excl\n  [PATCH] pass fmode_t to blkdev_put()\n  [PATCH] kill the unused bsize on the send side of /dev/loop\n  [PATCH] trim file propagation in block/compat_ioctl.c\n  [PATCH] end of methods switch: remove the old ones\n  [PATCH] switch sr\n  [PATCH] switch sd\n  [PATCH] switch ide-scsi\n  [PATCH] switch tape_block\n  [PATCH] switch dcssblk\n  [PATCH] switch dasd\n  [PATCH] switch mtd_blkdevs\n  [PATCH] switch mmc\n  ...\n"
    },
    {
      "commit": "5ed487bc2c44ca4e9668ef9cb54c830e2a9fac47",
      "tree": "af19ed28db83e8f52690872ac99336da1cf2fd3b",
      "parents": [
        "5b34653963de7a6d0d8c783527457d68fddc60fb",
        "fd217f4d70172c526478f2bc76859e909fdfa674"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Oct 23 10:22:40 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Oct 23 10:22:40 2008 -0700"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs-2.6\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs-2.6: (46 commits)\n  [PATCH] fs: add a sanity check in d_free\n  [PATCH] i_version: remount support\n  [patch] vfs: make security_inode_setattr() calling consistent\n  [patch 1/3] FS_MBCACHE: don\u0027t needlessly make it built-in\n  [PATCH] move executable checking into -\u003epermission()\n  [PATCH] fs/dcache.c: update comment of d_validate()\n  [RFC PATCH] touch_mnt_namespace when the mount flags change\n  [PATCH] reiserfs: add missing llseek method\n  [PATCH] fix -\u003ellseek for more directories\n  [PATCH vfs-2.6 6/6] vfs: add LOOKUP_RENAME_TARGET intent\n  [PATCH vfs-2.6 5/6] vfs: remove LOOKUP_PARENT from non LOOKUP_PARENT lookup\n  [PATCH vfs-2.6 4/6] vfs: remove unnecessary fsnotify_d_instantiate()\n  [PATCH vfs-2.6 3/6] vfs: add __d_instantiate() helper\n  [PATCH vfs-2.6 2/6] vfs: add d_ancestor()\n  [PATCH vfs-2.6 1/6] vfs: replace parent \u003d\u003d dentry-\u003ed_parent by IS_ROOT()\n  [PATCH] get rid of on-stack dentry in udf\n  [PATCH 2/2] anondev: switch to IDA\n  [PATCH 1/2] anondev: init IDR statically\n  [JFFS2] Use d_splice_alias() not d_add() in jffs2_lookup()\n  [PATCH] Optimise NFS readdir hack slightly.\n  ...\n"
    },
    {
      "commit": "72e8264eda02b6ba85a222b9620802ebf23c6a10",
      "tree": "4c82b49f538b1ae4e469bbf9a98d76766ab3f768",
      "parents": [
        "3516586a424ea5727be089da6541cbd5644f0497"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@lst.de",
        "time": "Mon Aug 11 00:24:08 2008 +0200"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Thu Oct 23 05:12:57 2008 -0400"
      },
      "message": "[PATCH] dm: kill lookup_device wrapper\n\nNow that lookup_bdev is exported and used by dm just use it directly\ninstead of through a trivial wrapper.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "51157b4ab47e1376c2b93cb854b14b637efeaff2",
      "tree": "76889af489b15aaf8c75d457f29d36336ca0a0a6",
      "parents": [
        "f431d9666fd6e69fbaf305cebc7278d1428950c2"
      ],
      "author": {
        "name": "Kiyoshi Ueda",
        "email": "k-ueda@ct.jp.nec.com",
        "time": "Tue Oct 21 17:45:08 2008 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Tue Oct 21 17:45:08 2008 +0100"
      },
      "message": "dm: tidy local_init\n\nThis patch tidies local_init() in preparation for request-based dm.\nNo functional change.\n\nSigned-off-by: Kiyoshi Ueda \u003ck-ueda@ct.jp.nec.com\u003e\nSigned-off-by: Jun\u0027ichi Nomura \u003cj-nomura@ce.jp.nec.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "f431d9666fd6e69fbaf305cebc7278d1428950c2",
      "tree": "ebd0e7c5deb3e6782f0de657223d071bc11b1983",
      "parents": [
        "1f965b19437017cea6d3f3f46acdc5acae5fd011"
      ],
      "author": {
        "name": "Kiyoshi Ueda",
        "email": "k-ueda@ct.jp.nec.com",
        "time": "Tue Oct 21 17:45:07 2008 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Tue Oct 21 17:45:07 2008 +0100"
      },
      "message": "dm: remove unused flush_all\n\nThis patch removes the DM_WQ_FLUSH_ALL state that is unnecessary.\n\nThe dm_queue_flush(md, DM_WQ_FLUSH_ALL, NULL) in dm_suspend()\nis never invoked because:\n  - \u0027goto flush_and_out\u0027 is the same as \u0027goto out\u0027 because\n    the \u0027goto flush_and_out\u0027 is called only when \u0027!noflush\u0027\n  - If r is non-zero, then the code above will invoke \u0027goto out\u0027\n    and skip this code.\n\nNo functional change.\n\nSigned-off-by: Kiyoshi Ueda \u003ck-ueda@ct.jp.nec.com\u003e\nSigned-off-by: Jun\u0027ichi Nomura \u003cj-nomura@ce.jp.nec.com\u003e\nSigned-off-by: Milan Broz \u003cmbroz@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "1f965b19437017cea6d3f3f46acdc5acae5fd011",
      "tree": "f70fd0684d1afbde7f0031a6f8cb6aa58880723c",
      "parents": [
        "f3e1d26ede3fb15c06904d700f1d7b21bba2215e"
      ],
      "author": {
        "name": "Heinz Mauelshagen",
        "email": "hjm@redhat.com",
        "time": "Tue Oct 21 17:45:06 2008 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Tue Oct 21 17:45:06 2008 +0100"
      },
      "message": "dm raid1: separate region_hash interface part1\n\nSeparate the region hash code from raid1 so it can be shared by forthcoming\ntargets.  Use BUG_ON() for failed async dm_io() calls.\n\nSigned-off-by: Heinz Mauelshagen \u003chjm@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "f3e1d26ede3fb15c06904d700f1d7b21bba2215e",
      "tree": "18ce3a0e4c4005d9737b840b37440e4ad85ed860",
      "parents": [
        "0a4a1047a445062793d9004bcb0d52756726fdf5"
      ],
      "author": {
        "name": "Martin K. Petersen",
        "email": "martin.petersen@oracle.com",
        "time": "Tue Oct 21 17:45:04 2008 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Tue Oct 21 17:45:04 2008 +0100"
      },
      "message": "dm: mark split bio as cloned\n\nWhen a bio gets split, mark its fragments with the BIO_CLONED flag.\n\nSigned-off-by: Martin K. Petersen \u003cmartin.petersen@oracle.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "0a4a1047a445062793d9004bcb0d52756726fdf5",
      "tree": "4fb581827ae3951c0737188301208a4fb73831e3",
      "parents": [
        "393b47ef23bbcf16890c907d0144b5a8ec4caebf"
      ],
      "author": {
        "name": "Milan Broz",
        "email": "mbroz@redhat.com",
        "time": "Tue Oct 21 17:45:03 2008 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Tue Oct 21 17:45:03 2008 +0100"
      },
      "message": "dm crypt: remove waitqueue\n\nRemove waitqueue no longer needed with the async crypto interface.\n\nSigned-off-by: Milan Broz \u003cmbroz@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "393b47ef23bbcf16890c907d0144b5a8ec4caebf",
      "tree": "8f3f26715fe81ef5fb78a6f30a46e163873de6b9",
      "parents": [
        "b635b00e0e159d858486fd899c4021d1d67757e2"
      ],
      "author": {
        "name": "Milan Broz",
        "email": "mbroz@redhat.com",
        "time": "Tue Oct 21 17:45:02 2008 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Tue Oct 21 17:45:02 2008 +0100"
      },
      "message": "dm crypt: fix async split\n\nWhen writing io, dm-crypt has to allocate a new cloned bio\nand encrypt the data into newly-allocated pages attached to this bio.\nIn rare cases, because of hw restrictions (e.g. physical segment limit)\nor memory pressure, sometimes more than one cloned bio has to be used,\neach processing a different fragment of the original.\n\nCurrently there is one waitqueue which waits for one fragment to finish\nand continues processing the next fragment.\n\nBut when using asynchronous crypto this doesn\u0027t work, because several\nfragments may be processed asynchronously or in parallel and there is\nonly one crypt context that cannot be shared between the bio fragments.\nThe result may be corruption of the data contained in the encrypted bio.\n\nThe patch fixes this by allocating new dm_crypt_io structs (with new\ncrypto contexts) and running them independently.\n\nThe fragments contains a pointer to the base dm_crypt_io struct to\nhandle reference counting, so the base one is properly deallocated\nafter all the fragments are finished.\n\nIn a low memory situation, this only uses one additional object from the\nmempool.  If the mempool is empty, the next allocation simple waits for\nprevious fragments to complete.\n\nSigned-off-by: Milan Broz \u003cmbroz@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "b635b00e0e159d858486fd899c4021d1d67757e2",
      "tree": "ceb7bb5bd97142fe4fb5412cbf1f19fa867869c1",
      "parents": [
        "586e80e6ee0d137c7d79fbae183bb37bc60ee97e"
      ],
      "author": {
        "name": "Milan Broz",
        "email": "mbroz@redhat.com",
        "time": "Tue Oct 21 17:45:00 2008 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Tue Oct 21 17:45:00 2008 +0100"
      },
      "message": "dm crypt: tidy sector\n\nPrepare local sector variable (offset) for later patch.\nDo not update io-\u003esector for still-running I/O.\n\nNo functional change.\n\nSigned-off-by: Milan Broz \u003cmbroz@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "586e80e6ee0d137c7d79fbae183bb37bc60ee97e",
      "tree": "1f3cc124ed6ad93abd4c14f9c8900333c6cba6fb",
      "parents": [
        "d63a5ce3c0d25c96bdadc78792e5b48b846e899d"
      ],
      "author": {
        "name": "Mikulas Patocka",
        "email": "mpatocka@redhat.com",
        "time": "Tue Oct 21 17:44:59 2008 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Tue Oct 21 17:44:59 2008 +0100"
      },
      "message": "dm: remove dm header from targets\n\nChange #include \"dm.h\" to #include \u003clinux/device-mapper.h\u003e in all targets.\nTargets should not need direct access to internal DM structures.\n\nSigned-off-by: Mikulas Patocka \u003cmpatocka@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "d63a5ce3c0d25c96bdadc78792e5b48b846e899d",
      "tree": "ac46375b47f784dff17d1e657d5115b45ad86844",
      "parents": [
        "7acedc5b98a2fcff64f00c21110aae7d3ac2f7df"
      ],
      "author": {
        "name": "Mikulas Patocka",
        "email": "mpatocka@redhat.com",
        "time": "Tue Oct 21 17:44:57 2008 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Tue Oct 21 17:44:57 2008 +0100"
      },
      "message": "dm: publish array_too_big\n\nMove array_too_big to include/linux/device-mapper.h because it is\nused by targets.\n\nRemove the test from dm-raid1 as the number of mirror legs is limited\nsuch that it can never fail.  (Even for stripes it seems rather\nunlikely.)\n\nSigned-off-by: Mikulas Patocka \u003cmpatocka@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "7acedc5b98a2fcff64f00c21110aae7d3ac2f7df",
      "tree": "ed9eda05b30d3606f1ad16e368c313b40c616c3d",
      "parents": [
        "7c9e6c17325fab380fbe9c9787680ff7d4a51abd"
      ],
      "author": {
        "name": "Mikulas Patocka",
        "email": "mpatocka@redhat.com",
        "time": "Tue Oct 21 17:44:56 2008 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Tue Oct 21 17:44:56 2008 +0100"
      },
      "message": "dm exception store: fix misordered writes\n\nWe must zero the next chunk on disk *before* writing out the current chunk, not\nafter.  Otherwise if the machine crashes at the wrong time, the \"end of metadata\"\nmarker may be missing.\n\nSigned-off-by: Mikulas Patocka \u003cmpatocka@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\nCc: stable@kernel.org\n"
    },
    {
      "commit": "7c9e6c17325fab380fbe9c9787680ff7d4a51abd",
      "tree": "3d92b66810b90bcef66a0e021e3944f335ebf9fa",
      "parents": [
        "f68d4f3d394da5b1f69d855b8513f4256ccc803e"
      ],
      "author": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Tue Oct 21 17:44:55 2008 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Tue Oct 21 17:44:55 2008 +0100"
      },
      "message": "dm exception store: refactor zero_area\n\nUse a separate buffer for writing zeroes to the on-disk snapshot\nexception store, make the updating of ps-\u003ecurrent_area explicit and\nrefactor the code in preparation for the fix in the next patch.\n\nNo functional change.\n\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\nSigned-off-by: Mikulas Patocka \u003cmpatocka@redhat.com\u003e\nCc: stable@kernel.org\n"
    },
    {
      "commit": "f68d4f3d394da5b1f69d855b8513f4256ccc803e",
      "tree": "0302fdc83ab62aeb9ad891dffd772625219bcbfc",
      "parents": [
        "7c5f78b9d7f21937e46c26db82976df4b459c95c"
      ],
      "author": {
        "name": "Mikulas Patocka",
        "email": "mpatocka@redhat.com",
        "time": "Tue Oct 21 17:44:53 2008 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Tue Oct 21 17:44:53 2008 +0100"
      },
      "message": "dm snapshot: drop unused last_percent\n\nThe last_percent field is unused - remove it.\n(It dates from when events were triggered as each X% filled up.)\n\nSigned-off-by: Mikulas Patocka \u003cmpatocka@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "7c5f78b9d7f21937e46c26db82976df4b459c95c",
      "tree": "dce6b094836929224af2ff16af60ee3109598652",
      "parents": [
        "b673c3a8192e28f13e2050a4b82c1986be92cc15"
      ],
      "author": {
        "name": "Mikulas Patocka",
        "email": "mpatocka@redhat.com",
        "time": "Tue Oct 21 17:44:51 2008 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Tue Oct 21 17:44:51 2008 +0100"
      },
      "message": "dm snapshot: fix primary_pe race\n\nFix a race condition with primary_pe ref_count handling.\n\nput_pending_exception runs under dm_snapshot-\u003elock, it does atomic_dec_and_test\non primary_pe-\u003eref_count, and later does atomic_read primary_pe-\u003eref_count.\n\n__origin_write does atomic_dec_and_test on primary_pe-\u003eref_count without holding\ndm_snapshot-\u003elock.\n\nThis opens the following race condition:\nAssume two CPUs, CPU1 is executing put_pending_exception (and holding\ndm_snapshot-\u003elock). CPU2 is executing __origin_write in parallel.\nprimary_pe-\u003eref_count \u003d\u003d 2.\n\nCPU1:\nif (primary_pe \u0026\u0026 atomic_dec_and_test(\u0026primary_pe-\u003eref_count))\n\torigin_bios \u003d bio_list_get(\u0026primary_pe-\u003eorigin_bios);\n... decrements primary_pe-\u003eref_count to 1. Doesn\u0027t load origin_bios\n\nCPU2:\nif (first \u0026\u0026 atomic_dec_and_test(\u0026primary_pe-\u003eref_count)) {\n\tflush_bios(bio_list_get(\u0026primary_pe-\u003eorigin_bios));\n\tfree_pending_exception(primary_pe);\n\t/* If we got here, pe_queue is necessarily empty. */\n\treturn r;\n}\n... decrements primary_pe-\u003eref_count to 0, submits pending bios, frees\nprimary_pe.\n\nCPU1:\nif (!primary_pe || primary_pe !\u003d pe)\n\tfree_pending_exception(pe);\n... this has no effect.\nif (primary_pe \u0026\u0026 !atomic_read(\u0026primary_pe-\u003eref_count))\n\tfree_pending_exception(primary_pe);\n... sees ref_count \u003d\u003d 0 (written by CPU 2), does double free !!\n\nThis bug can happen only if someone is simultaneously writing to both the\norigin and the snapshot.\n\nIf someone is writing only to the origin, __origin_write will submit kcopyd\nrequest after it decrements primary_pe-\u003eref_count (so it can\u0027t happen that the\nfinished copy races with primary_pe-\u003eref_count decrementation).\n\nIf someone is writing only to the snapshot, __origin_write isn\u0027t invoked at all\nand the race can\u0027t happen.\n\nThe race happens when someone writes to the snapshot --- this creates\npending_exception with primary_pe \u003d\u003d NULL and starts copying. Then, someone\nwrites to the same chunk in the snapshot, and __origin_write races with\ntermination of already submitted request in pending_complete (that calls\nput_pending_exception).\n\nThis race may be reason for bugs:\n  http://bugzilla.kernel.org/show_bug.cgi?id\u003d11636\n  https://bugzilla.redhat.com/show_bug.cgi?id\u003d465825\n\nThe patch fixes the code to make sure that:\n1. If atomic_dec_and_test(\u0026primary_pe-\u003eref_count) returns false, the process\nmust no longer dereference primary_pe (because someone else may free it under\nus).\n2. If atomic_dec_and_test(\u0026primary_pe-\u003eref_count) returns true, the process\nis responsible for freeing primary_pe.\n\nSigned-off-by: Mikulas Patocka \u003cmpatocka@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\nCc: stable@kernel.org\n"
    },
    {
      "commit": "b673c3a8192e28f13e2050a4b82c1986be92cc15",
      "tree": "6d4f2f3565cc046750eb482a0ccb15cbe28ba7f9",
      "parents": [
        "2515ddc6db8eb49a79f0fe5e67ff09ac7c81eab4"
      ],
      "author": {
        "name": "Kazuo Ito",
        "email": "ito.kazuo@oss.ntt.co.jp",
        "time": "Tue Oct 21 17:44:50 2008 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Tue Oct 21 17:44:50 2008 +0100"
      },
      "message": "dm kcopyd: avoid queue shuffle\n\nWrite throughput to LVM snapshot origin volume is an order\nof magnitude slower than those to LV without snapshots or\nsnapshot target volumes, especially in the case of sequential\nwrites with O_SYNC on.\n\nThe following patch originally written by Kevin Jamieson and\nJan Blunck and slightly modified for the current RCs by myself\ntries to improve the performance by modifying the behaviour\nof kcopyd, so that it pushes back an I/O job to the head of\nthe job queue instead of the tail as process_jobs() currently\ndoes when it has to wait for free pages. This way, write\nrequests aren\u0027t shuffled to cause extra seeks.\n\nI tested the patch against 2.6.27-rc5 and got the following results.\nThe test is a dd command writing to snapshot origin followed by fsync\nto the file just created/updated.  A couple of filesystem benchmarks\ngave me similar results in case of sequential writes, while random\nwrites didn\u0027t suffer much.\n\ndd if\u003d/dev/zero of\u003d\u003csomewhere on snapshot origin\u003e bs\u003d4096 count\u003d...\n   [conv\u003dnotrunc when updating]\n\n1) linux 2.6.27-rc5 without the patch, write to snapshot origin,\naverage throughput (MB/s)\n                     10M     100M    1000M\ncreate,dd         511.46   610.72    11.81\ncreate,dd+fsync     7.10     6.77     8.13\nupdate,dd         431.63   917.41    12.75\nupdate,dd+fsync     7.79     7.43     8.12\n\ncompared with write throughput to LV without any snapshots,\nall dd+fsync and 1000 MiB writes perform very poorly.\n\n                     10M     100M    1000M\ncreate,dd         555.03   608.98   123.29\ncreate,dd+fsync   114.27    72.78    76.65\nupdate,dd         152.34  1267.27   124.04\nupdate,dd+fsync   130.56    77.81    77.84\n\n2) linux 2.6.27-rc5 with the patch, write to snapshot origin,\naverage throughput (MB/s)\n\n                     10M     100M    1000M\ncreate,dd         537.06   589.44    46.21\ncreate,dd+fsync    31.63    29.19    29.23\nupdate,dd         487.59   897.65    37.76\nupdate,dd+fsync    34.12    30.07    26.85\n\nAlthough still not on par with plain LV performance -\ncannot be avoided because it\u0027s copy on write anyway -\nthis simple patch successfully improves throughtput\nof dd+fsync while not affecting the rest.\n\nSigned-off-by: Jan Blunck \u003cjblunck@suse.de\u003e\nSigned-off-by: Kazuo Ito \u003cito.kazuo@oss.ntt.co.jp\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\nCc: stable@kernel.org\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": "fe5f9f2cd57c2ce56f36c66e87a10d4b7a158505",
      "tree": "76bfbf4e634fcd043f4764cfff45ce6ea12171f8",
      "parents": [
        "a4600f81393d685043fe2d485cf2b123301f467d"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sun Mar 02 10:29:31 2008 -0500"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue Oct 21 07:48:29 2008 -0400"
      },
      "message": "[PATCH] switch dm\n\nioctl() doesn\u0027t need BKL here\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": "633a08b81206122469365b4c72eaeb71f04f2cb4",
      "tree": "9cd30507efd30645d30d351c7ad0d5966f806532",
      "parents": [
        "a0eb62a0a4470fef5a5f41e7f1442fdd667220ef"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Aug 29 20:34:12 2007 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue Oct 21 07:47:26 2008 -0400"
      },
      "message": "[PATCH] introduce __blkdev_driver_ioctl()\n\nAnalog of blkdev_driver_ioctl() with sane arguments.  For\nnow uses fake struct file, by the end of the series it won\u0027t\nand blkdev_driver_ioctl() will become a wrapper around it.\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "647b3d0084158c47b1aea8f34d13cab9cd0a5b49",
      "tree": "c36d61d8c85c4e0e6160153ab99a6e7568b44a70",
      "parents": [
        "1bddd9e6453ef1c7bc5b6f4ddbf7d31f4aee7a44"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue Aug 28 22:15:59 2007 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue Oct 21 07:47:18 2008 -0400"
      },
      "message": "[PATCH] lose unused arguments in dm ioctl callbacks\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "aeb5d727062a0238a2f96c9c380fbd2be4640c6f",
      "tree": "51dae8a071fcf42e4431a66d37c5b843c8e99cf6",
      "parents": [
        "2515ddc6db8eb49a79f0fe5e67ff09ac7c81eab4"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue Sep 02 15:28:45 2008 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue Oct 21 07:47:06 2008 -0400"
      },
      "message": "[PATCH] introduce fmode_t, do annotations\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": "ed09441dacc2a2d6c170aa3b1f79a041291a813f",
      "tree": "95c35bdf4f0b679806984093dce627a66d0d7cf1",
      "parents": [
        "b225ee5bed70254a100896c473e6dd8c2be45c18",
        "4c393e6e457fb41169dd110c1b96a138394c2d7b"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Oct 17 09:00:23 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Oct 17 09:00:23 2008 -0700"
      },
      "message": "Merge git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi-misc-2.6\n\n* git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi-misc-2.6: (39 commits)\n  [SCSI] sd: fix compile failure with CONFIG_BLK_DEV_INTEGRITY\u003dn\n  libiscsi: fix locking in iscsi_eh_device_reset\n  libiscsi: check reason why we are stopping iscsi session to determine error value\n  [SCSI] iscsi_tcp: return a descriptive error value during connection errors\n  [SCSI] libiscsi: rename host reset to target reset\n  [SCSI] iscsi class: fix endpoint id handling\n  [SCSI] libiscsi: Support drivers initiating session removal\n  [SCSI] libiscsi: fix data corruption when target has to resend data-in packets\n  [SCSI] sd: Switch kernel printing level for DIF messages\n  [SCSI] sd: Correctly handle all combinations of DIF and DIX\n  [SCSI] sd: Always print actual protection_type\n  [SCSI] sd: Issue correct protection operation\n  [SCSI] scsi_error: fix target reset handling\n  [SCSI] lpfc 8.2.8 v2 : Add statistical reporting control and additional fc vendor events\n  [SCSI] lpfc 8.2.8 v2 : Add sysfs control of target queue depth handling\n  [SCSI] lpfc 8.2.8 v2 : Revert target busy in favor of transport disrupted\n  [SCSI] scsi_dh_alua: remove REQ_NOMERGE\n  [SCSI] lpfc 8.2.8 : update driver version to 8.2.8\n  [SCSI] lpfc 8.2.8 : Add MSI-X support\n  [SCSI] lpfc 8.2.8 : Update driver to use new Host byte error code DID_TRANSPORT_DISRUPTED\n  ...\n"
    },
    {
      "commit": "c472273f863c80b87e53356256c5466df24328f0",
      "tree": "988b67a44e8ecd49d417a7e3cbdffa057251a28f",
      "parents": [
        "36ac1d2f323f8bf8bc10c25b88f617657720e241",
        "97ce0a7f9caf9d715cee815a016ee21575f71c95"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Oct 16 11:55:11 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Oct 16 11:55:11 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: fix input truncation in safe_delay_store()\n  md: check for memory allocation failure in faulty personality\n  md: build failure due to missing delay.h\n  md: Relax minimum size restrictions on chunk_size.\n  md: remove space after function name in declaration and call.\n  md: Remove unnecessary #includes, #defines, and function declarations.\n  md: Convert remaining 1k representations in linear.c to sectors.\n  md: linear.c: Make two local variables sector-based.\n  md: linear: Represent dev_info-\u003esize and dev_info-\u003eoffset in sectors.\n  md: linear.c: Remove broken debug code.\n  md: linear.c: Remove pointless initialization of curr_offset.\n  md: linear.c: Fix typo in comment.\n  md: Don\u0027t try to set an array to \u0027read-auto\u0027 if it is already in that state.\n  md: Allow metadata_version to be updated for externally managed metadata.\n  md: Fix rdev_size_store with size \u003d\u003d 0\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": "08ff39f1c8f2134f7d0f38123ca5952371665cc5",
      "tree": "145e98a5e064143e8032f2688bfdf65d511b86a2",
      "parents": [
        "255707274ea25d486b7de060a30ba4ac50593408"
      ],
      "author": {
        "name": "Sven Wegener",
        "email": "sven.wegener@stealer.net",
        "time": "Thu Oct 16 14:16:53 2008 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Oct 16 14:16:53 2008 +1100"
      },
      "message": "md: check for memory allocation failure in faulty personality\n\nIt\u0027s a fault injection module, but I don\u0027t think we should oops here.\n\nSigned-off-by: Sven Wegener \u003csven.wegener@stealer.net\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Neil Brown \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": "6000a368cd8e6da1caf101411bdb494cd6fb8b09",
      "tree": "4cd3333af00182e915aa96ffa49069f5f76976dc",
      "parents": [
        "056a44834950ffa51fafa6c76a720fa32e86851a"
      ],
      "author": {
        "name": "Mike Christie",
        "email": "michaelc@cs.wisc.edu",
        "time": "Tue Aug 19 18:45:30 2008 -0500"
      },
      "committer": {
        "name": "James Bottomley",
        "email": "James.Bottomley@HansenPartnership.com",
        "time": "Mon Oct 13 09:28:52 2008 -0400"
      },
      "message": "[SCSI] block: separate failfast into multiple bits.\n\nMultipath is best at handling transport errors. If it gets a device\nerror then there is not much the multipath layer can do. It will just\naccess the same device but from a different path.\n\nThis patch breaks up failfast into device, transport and driver errors.\nThe multipath layers (md and dm mutlipath) only ask the lower levels to\nfast fail transport errors. The user of failfast, read ahead, will ask\nto fast fail on all errors.\n\nNote that blk_noretry_request will return true if any failfast bit\nis set. This allows drivers that do not support the multipath failfast\nbits to continue to fail on any failfast error like before. Drivers\nlike scsi that are able to fail fast specific errors can check\nfor the specific fail fast type. In the next patch I will convert\nscsi.\n\nSigned-off-by: Mike Christie \u003cmichaelc@cs.wisc.edu\u003e\nCc: Jens Axboe \u003cjens.axboe@oracle.com\u003e\nSigned-off-by: James Bottomley \u003cJames.Bottomley@HansenPartnership.com\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": "ab5bd5cbc8d4b868378d062eed3d4240930fbb86",
      "tree": "39c6299f79398d7f00b50c4ba39c52e2aea22e00",
      "parents": [
        "23242fbb470ff4c8c4d41f178832cf1929273d7d"
      ],
      "author": {
        "name": "Andre Noll",
        "email": "maan@systemlinux.org",
        "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: Convert remaining 1k representations in linear.c to sectors.\n\nThis patch renames hash_spacing and preshift to  spacing and\nsector_shift respectively with the following change of semantics:\n\nCase 1: (sizeof(sector_t) \u003c\u003d sizeof(u32)).\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nIn this case, we have sector_shift \u003d preshift \u003d 0 and spacing \u003d\n2 * hash_spacing.\n\nHence, the index for the hash table which is computed by the new code\nin which_dev() as sector / spacing equals the old value which was\n(sector/2) / hash_spacing.\n\nNote also that the value of nb_zone stays the same because both sz\nand base double.\n\nCase 2: (sizeof(sector_t) \u003e sizeof(u32)).\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\n(aka the shifting dance case). Here we have sector_shift \u003d preshift +\n1 and\n\nspacing \u003d 2 * hash_spacing\n\nduring the computation of nb_zone and curr_sector, but\n\nspacing \u003d hash_spacing\n\nin which_dev() because in the last hunk of the patch for linear.c we\nshift down conf-\u003espacing (\u003d 2 * hash_spacing) by one more bit than\nin the old code.\n\nHence in the computation of nb_zone, sz and base have the same value\nas before, so nb_zone is not affected. Also curr_sector in the next\nhunk stays the same.\n\nIn which_dev() the hash table index is computed as\n\n(sector \u003e\u003e sector_shift) / spacing\n\nIn view of sector_shift \u003d preshift + 1 and spacing \u003d hash_spacing,\nthis equals\n\n((sector/2) \u003e\u003e preshift) / hash_spacing\n\nwhich is the value computed by the old code.\n\nSigned-off-by: Andre Noll \u003cmaan@systemlinux.org\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "23242fbb470ff4c8c4d41f178832cf1929273d7d",
      "tree": "c6c98d6c5fdb0caf2d0a496531a2bb18d0a9ad53",
      "parents": [
        "6283815d1853b7daf31dc4adb83e5c1dc9568251"
      ],
      "author": {
        "name": "Andre Noll",
        "email": "maan@systemlinux.org",
        "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: linear.c: Make two local variables sector-based.\n\nThis is a preparation for representing also the remaining fields of struct\nlinear_private_data as sectors.\n\nSigned-off-by: Andre Noll \u003cmaan@systemlinux.org\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "6283815d1853b7daf31dc4adb83e5c1dc9568251",
      "tree": "cd4f00ce17e7c274091ca9015b164d6f06611975",
      "parents": [
        "451708d2a439accbce136637ed4f156fc27371ab"
      ],
      "author": {
        "name": "Andre Noll",
        "email": "maan@systemlinux.org",
        "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: linear: Represent dev_info-\u003esize and dev_info-\u003eoffset in sectors.\n\nRename them to num_sectors and start_sector which is more descriptive.\n\nSigned-off-by: Andre Noll \u003cmaan@systemlinux.org\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "451708d2a439accbce136637ed4f156fc27371ab",
      "tree": "fb0723deef88e3bfa04a112f1d92b034c55abc75",
      "parents": [
        "481d86c7ebe2ce59dfb6ccb720efa9d3fc1cf7cd"
      ],
      "author": {
        "name": "Andre Noll",
        "email": "maan@systemlinux.org",
        "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: linear.c: Remove broken debug code.\n\nconf-\u003esmallest_size is undefined since day one of the git repo..\n\nSigned-off-by: Andre Noll \u003cmaan@systemlinux.org\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "481d86c7ebe2ce59dfb6ccb720efa9d3fc1cf7cd",
      "tree": "55c51ebaa5fe89469666bd8e275d55fa244cadb1",
      "parents": [
        "e61130228ea5740e31e9646ea6d1c9d9089746c3"
      ],
      "author": {
        "name": "Andre Noll",
        "email": "maan@systemlinux.org",
        "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: linear.c: Remove pointless initialization of curr_offset.\n\n\nSigned-off-by: Andre Noll \u003cmaan@systemlinux.org\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "e61130228ea5740e31e9646ea6d1c9d9089746c3",
      "tree": "6d9dec9957dae58ad516a8b17af50f93f6448309",
      "parents": [
        "80268ee9270ebe4847365a7426de91d179e870d0"
      ],
      "author": {
        "name": "Andre Noll",
        "email": "maan@systemlinux.org",
        "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: linear.c: Fix typo in comment.\n\n\nSigned-off-by: Andre Noll \u003cmaan@systemlinux.org\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    }
  ],
  "next": "80268ee9270ebe4847365a7426de91d179e870d0"
}
