)]}'
{
  "log": [
    {
      "commit": "55af6bb509d3ef2696faddd4a734bf024794b337",
      "tree": "4a5f3493957c5c7504b91bf90bedd828a26106c0",
      "parents": [
        "d882ba699dbdd2156891290c31c22dc13d6530e4"
      ],
      "author": {
        "name": "Akinobu Mita",
        "email": "akinobu.mita@gmail.com",
        "time": "Wed May 26 14:43:35 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu May 27 09:12:48 2010 -0700"
      },
      "message": "md: convert cpu notifier to return encapsulate errno value\n\nBy the previous modification, the cpu notifier can return encapsulate\nerrno value.  This converts the cpu notifiers for raid5.\n\nSigned-off-by: Akinobu Mita \u003cakinobu.mita@gmail.com\u003e\nCc: Neil Brown \u003cneilb@suse.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "e8bebe2f71d26871b0970ae1d9cf0ed3cdd9569d",
      "tree": "c0d82cbd11daaf579b74121c6641d58947091094",
      "parents": [
        "6109e2ce2600e2db26cd0424bb9c6ed019723288",
        "82f3952c02add60b15eea9151d4d99b6b82066c6"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri May 21 19:37:45 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri May 21 19:37:45 2010 -0700"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs-2.6\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs-2.6: (69 commits)\n  fix handling of offsets in cris eeprom.c, get rid of fake on-stack files\n  get rid of home-grown mutex in cris eeprom.c\n  switch ecryptfs_write() to struct inode *, kill on-stack fake files\n  switch ecryptfs_get_locked_page() to struct inode *\n  simplify access to ecryptfs inodes in -\u003ereadpage() and friends\n  AFS: Don\u0027t put struct file on the stack\n  Ban ecryptfs over ecryptfs\n  logfs: replace inode uid,gid,mode initialization with helper function\n  ufs: replace inode uid,gid,mode initialization with helper function\n  udf: replace inode uid,gid,mode init with helper\n  ubifs: replace inode uid,gid,mode initialization with helper function\n  sysv: replace inode uid,gid,mode initialization with helper function\n  reiserfs: replace inode uid,gid,mode initialization with helper function\n  ramfs: replace inode uid,gid,mode initialization with helper function\n  omfs: replace inode uid,gid,mode initialization with helper function\n  bfs: replace inode uid,gid,mode initialization with helper function\n  ocfs2: replace inode uid,gid,mode initialization with helper function\n  nilfs2: replace inode uid,gid,mode initialization with helper function\n  minix: replace inode uid,gid,mode init with helper\n  ext4: replace inode uid,gid,mode init with helper\n  ...\n\nTrivial conflict in fs/fs-writeback.c (mark bitfields unsigned)\n"
    },
    {
      "commit": "19fdb9eefb21b72edbc365b838502780c392bad6",
      "tree": "deae04c48532d6eab64ed4b0396737bb854b5506",
      "parents": [
        "be6800a73aa2f3dc14744c3b80e676d189789f04",
        "3ff195b011d7decf501a4d55aeed312731094796"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Sat May 22 08:31:36 2010 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Sat May 22 08:31:36 2010 +1000"
      },
      "message": "Merge commit \u00273ff195b011d7decf501a4d55aeed312731094796\u0027 into for-linus\n\nConflicts:\n\tdrivers/md/md.c\n\n- Resolved conflict in md_update_sb\n- Added extra \u0027NULL\u0027 arg to new instance of sysfs_get_dirent.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "8018ab057480974e7f26a387bf4ce040e9a5f6f1",
      "tree": "98298180bf60797a028eca4f24234dc67d38a9d4",
      "parents": [
        "e970a573ce30a3976234dcfb67906c164b0df9ee"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@lst.de",
        "time": "Mon Mar 22 17:32:25 2010 +0100"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Fri May 21 18:31:21 2010 -0400"
      },
      "message": "sanitize vfs_fsync calling conventions\n\nNow that the last user passing a NULL file pointer is gone we can remove\nthe redundant dentry argument and associated hacks inside vfs_fsynmc_range.\n\nThe next step will be removig the dentry argument from -\u003efsync, but given\nthe luck with the last round of method prototype changes I\u0027d rather\ndefer this until after the main merge window.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "3ff195b011d7decf501a4d55aeed312731094796",
      "tree": "8cfdc330abbf82893955f2d7d6e96efee81bfd7c",
      "parents": [
        "bc451f2058238013e1cdf4acd443c01734d332f0"
      ],
      "author": {
        "name": "Eric W. Biederman",
        "email": "ebiederm@xmission.com",
        "time": "Tue Mar 30 11:31:26 2010 -0700"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@suse.de",
        "time": "Fri May 21 09:37:31 2010 -0700"
      },
      "message": "sysfs: Implement sysfs tagged directory support.\n\nThe problem.  When implementing a network namespace I need to be able\nto have multiple network devices with the same name.  Currently this\nis a problem for /sys/class/net/*, /sys/devices/virtual/net/*, and\npotentially a few other directories of the form /sys/ ... /net/*.\n\nWhat this patch does is to add an additional tag field to the\nsysfs dirent structure.  For directories that should show different\ncontents depending on the context such as /sys/class/net/, and\n/sys/devices/virtual/net/ this tag field is used to specify the\ncontext in which those directories should be visible.  Effectively\nthis is the same as creating multiple distinct directories with\nthe same name but internally to sysfs the result is nicer.\n\nI am calling the concept of a single directory that looks like multiple\ndirectories all at the same path in the filesystem tagged directories.\n\nFor the networking namespace the set of directories whose contents I need\nto filter with tags can depend on the presence or absence of hotplug\nhardware or which modules are currently loaded.  Which means I need\na simple race free way to setup those directories as tagged.\n\nTo achieve a reace free design all tagged directories are created\nand managed by sysfs itself.\n\nUsers of this interface:\n- define a type in the sysfs_tag_type enumeration.\n- call sysfs_register_ns_types with the type and it\u0027s operations\n- sysfs_exit_ns when an individual tag is no longer valid\n\n- Implement mount_ns() which returns the ns of the calling process\n  so we can attach it to a sysfs superblock.\n- Implement ktype.namespace() which returns the ns of a syfs kobject.\n\nEverything else is left up to sysfs and the driver layer.\n\nFor the network namespace mount_ns and namespace() are essentially\none line functions, and look to remain that.\n\nTags are currently represented a const void * pointers as that is\nboth generic, prevides enough information for equality comparisons,\nand is trivial to create for current users, as it is just the\nexisting namespace pointer.\n\nThe work needed in sysfs is more extensive.  At each directory\nor symlink creating I need to check if the directory it is being\ncreated in is a tagged directory and if so generate the appropriate\ntag to place on the sysfs_dirent.  Likewise at each symlink or\ndirectory removal I need to check if the sysfs directory it is\nbeing removed from is a tagged directory and if so figure out\nwhich tag goes along with the name I am deleting.\n\nCurrently only directories which hold kobjects, and\nsymlinks are supported.  There is not enough information\nin the current file attribute interfaces to give us anything\nto discriminate on which makes it useless, and there are\nno potential users which makes it an uninteresting problem\nto solve.\n\nSigned-off-by: Eric W. Biederman \u003cebiederm@xmission.com\u003e\nSigned-off-by: Benjamin Thery \u003cbenjamin.thery@bull.net\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@suse.de\u003e\n\n"
    },
    {
      "commit": "be6800a73aa2f3dc14744c3b80e676d189789f04",
      "tree": "7db76b4488ad45e923223748c41fa8a61a09aa25",
      "parents": [
        "a8707c08f4f718bb0ed65499d3f43201f6e41455"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue May 18 10:17:09 2010 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue May 18 15:28:01 2010 +1000"
      },
      "message": "md: don\u0027t insist on valid event count for spare devices.\n\nDevices which know that they are spares do not really need to have\nan event count that matches the rest of the array, so there are no\ndata-in-sync issues. It is enough that the uuid matches.\nSo remove the requirement that the event count is up-to-date.\n\nWe currently still write out and event count on spares, but this\nallows us in a year or 3 to stop doing that completely.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "a8707c08f4f718bb0ed65499d3f43201f6e41455",
      "tree": "8fc3ea9ea924ebc4f28012c11f3c1e70ad60bcb2",
      "parents": [
        "7b0bb5368a7195606eca475d9f4e291ab7227052"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue May 18 09:28:43 2010 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue May 18 15:28:01 2010 +1000"
      },
      "message": "md: simplify updating of event count to sometimes avoid updating spares.\n\nWhen updating the event count for a simple clean \u003c-\u003e dirty transition,\nwe try to avoid updating the spares so they can safely spin-down.\nAs the event_counts across an array must be +/- 1, this means\ndecrementing the event_count on a dirty-\u003eclean transition.\nThis is not always safe and we have to avoid the unsafe time.\nWe current do this with a misguided idea about it being safe or\nnot depending on whether the event_count is odd or even.  This\napproach only works reliably in a few common instances, but easily\nfalls down.\n\nSo instead, simply keep internal state concerning whether it is safe\nor not, and always assume it is not safe when an array is first\nassembled.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "7b0bb5368a7195606eca475d9f4e291ab7227052",
      "tree": "2c5b9e5269fb585d0386cf931a0d154bee5d875f",
      "parents": [
        "75a73a29e520a6ce982b0da6dd8b7560ae3faa90"
      ],
      "author": {
        "name": "Gabriele A. Trombetti",
        "email": "g.trombetti.lkrnl1213@logicschema.com",
        "time": "Wed Apr 28 11:51:17 2010 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue May 18 15:28:00 2010 +1000"
      },
      "message": "md/raid6: Fix raid-6 read-error correction in degraded state\n\nFix: Raid-6 was not trying to correct a read-error when in\nsingly-degraded state and was instead dropping one more device, going to\ndoubly-degraded state. This patch fixes this behaviour.\n\nTested-by: Janos Haar \u003cjanos.haar@netcenter.hu\u003e\nSigned-off-by: Gabriele A. Trombetti \u003cg.trombetti.lkrnl1213@logicschema.com\u003e\nReported-by: Janos Haar \u003cjanos.haar@netcenter.hu\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\nCc: stable@kernel.org\n"
    },
    {
      "commit": "75a73a29e520a6ce982b0da6dd8b7560ae3faa90",
      "tree": "1bcb14b69e2ae7673bf29be6b3f27aee6e896070",
      "parents": [
        "af3a2cd6b8a479345786e7fe5e199ad2f6240e56"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri May 07 19:44:26 2010 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue May 18 15:28:00 2010 +1000"
      },
      "message": "md: restore ability of spare drives to spin down.\n\nSome time ago we stopped the clean/active metadata updates\nfrom being written to a \u0027spare\u0027 device in most cases so that\nit could spin down and say spun down.  Device failure/removal\netc are still recorded on spares.\n\nHowever commit 51d5668cb2e3fd1827a55 broke this 50% of the time,\ndepending on whether the event count is even or odd.\nThe change log entry said:\n\n   This means that the alignment between \u0027odd/even\u0027 and\n    \u0027clean/dirty\u0027 might take a little longer to attain,\n\nhow ever the code makes no attempt to create that alignment, so it\ncould take arbitrarily long.\n\nSo when we find that clean/dirty is not aligned with odd/even,\nforce a second metadata-update immediately.  There are already cases\nwhere a second metadata-update is needed immediately (e.g. when a\ndevice fails during the metadata update).  We just piggy-back on that.\n\nReported-by: Joe Bryant \u003ctenminjoe@yahoo.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\nCc: stable@kernel.org\n"
    },
    {
      "commit": "af3a2cd6b8a479345786e7fe5e199ad2f6240e56",
      "tree": "10690853d80455e69bcc0d027ad6c8b9c7951332",
      "parents": [
        "2dc40f80945ac3e5ec05c3a6c75baf09b13cee51"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Sat May 08 08:20:17 2010 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue May 18 15:28:00 2010 +1000"
      },
      "message": "md: Fix read balancing in RAID1 and RAID10 on drives \u003e 2TB\n\nread_balance uses a \"unsigned long\" for a sector number which\nwill get truncated beyond 2TB.\nThis will cause read-balancing to be non-optimal, and can cause\ndata to be read from the \u0027wrong\u0027 branch during a resync.  This has a\nvery small chance of returning wrong data.\n\nReported-by: Jordan Russell \u003cjr-list-2010@quo.to\u003e\nCc: stable@kernel.org\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "2dc40f80945ac3e5ec05c3a6c75baf09b13cee51",
      "tree": "b1f171090517f548e7c17302cef12a77aa9563b9",
      "parents": [
        "b5a20961f3479dda48bdc340354ee5469997839d"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon May 03 15:12:04 2010 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue May 18 15:27:59 2010 +1000"
      },
      "message": "md/linear: standardise all printk messages\n\n  md/linear:mdname:\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "b5a20961f3479dda48bdc340354ee5469997839d",
      "tree": "19eb94b00531621512364a544108016ab533f47d",
      "parents": [
        "128595ed6ff2c7358ae253a560d47a0af463bc99"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon May 03 15:06:27 2010 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue May 18 15:27:59 2010 +1000"
      },
      "message": "md/raid0: tidy up printk messages.\n\nAll messages now start\n   md/raid0:md-device-name:\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "128595ed6ff2c7358ae253a560d47a0af463bc99",
      "tree": "6cadab1e71eb7e9881e33fcfd63556364ccd7517",
      "parents": [
        "9dd1e2faf72f79a2af9dcbd059473c06648726c2"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon May 03 14:47:14 2010 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue May 18 15:27:59 2010 +1000"
      },
      "message": "md/raid10: tidy up printk messages.\n\nAll raid10 printk messages now start\n   md/raid10:md-device-name:\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "9dd1e2faf72f79a2af9dcbd059473c06648726c2",
      "tree": "a3b400d49671930f6d6ff0b9d5890e598af7a94f",
      "parents": [
        "0c55e02259115c151e4835dd417cf41467bb02e2"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon May 03 14:30:35 2010 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue May 18 15:27:59 2010 +1000"
      },
      "message": "md/raid1: improve printk messages\n\nMake sure the array name is included in a uniform way in all printk\nmessages.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "0c55e02259115c151e4835dd417cf41467bb02e2",
      "tree": "bcc12cd6c9b2d40b8bc31a4d85cae13103168493",
      "parents": [
        "08fb730ca346ff16598ef31911c88fbca6133bf5"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon May 03 14:09:02 2010 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue May 18 15:27:58 2010 +1000"
      },
      "message": "md/raid5: improve consistency of error messages.\n\nMany \u0027printk\u0027 messages from the raid456 module mention \u0027raid5\u0027 even\nthough it may be a \u0027raid6\u0027 or even \u0027raid4\u0027 array.  This can cause\nconfusion.\nAlso the actual array name is not always reported and when it is\nit is not reported consistently.\n\nSo change all the messages to start:\n    md/raid:%s:\nwhere \u0027%s\u0027 becomes e.g. md3 to identify the particular array.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "08fb730ca346ff16598ef31911c88fbca6133bf5",
      "tree": "a567e87dc6a13bcc5708e1ed4909738ba9d642db",
      "parents": [
        "f2859af6716ce99cac7f35c5a0c6b7fed346312f"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon May 03 13:16:56 2010 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue May 18 15:27:58 2010 +1000"
      },
      "message": "md: remove EXPERIMENTAL designation from RAID10\n\nRAID10 has been available for quite a while now and is quite well\ntested, so we can remove the EXPERIMENTAL designation.\n\nReported-by: Eric MSP Veith \u003ceveith@wwweb-library.net\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "f2859af6716ce99cac7f35c5a0c6b7fed346312f",
      "tree": "37d1af49ce710098bc35d45c7a9aec6e6f8eb5d9",
      "parents": [
        "bb7f8d2217d8753ab5008c78f16697d9e697d570"
      ],
      "author": {
        "name": "Dan Williams",
        "email": "dan.j.williams@intel.com",
        "time": "Sun May 02 10:04:16 2010 -0700"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue May 18 15:27:58 2010 +1000"
      },
      "message": "md: allow integers to be passed to md/level\n\ne.g. allow md to interpret \u0027echo 4 \u003e md/level\u0027 as a request for raid4.\n\nSigned-off-by: Dan Williams \u003cdan.j.williams@intel.com\u003e\n"
    },
    {
      "commit": "bb7f8d2217d8753ab5008c78f16697d9e697d570",
      "tree": "5717c254192b171215bbb8358f68646c3b2e1326",
      "parents": [
        "f1b29bcae116409db5e543622aadab43041c9ae9"
      ],
      "author": {
        "name": "Dan Williams",
        "email": "dan.j.williams@intel.com",
        "time": "Sat May 01 18:14:57 2010 -0700"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue May 18 15:27:57 2010 +1000"
      },
      "message": "md: notify mdstat waiters of level change\n\nLevel modifications change the output of mdstat.  The mdmon manager\nthread is interested in these events for external metadata management.\n\nSigned-off-by: Dan Williams \u003cdan.j.williams@intel.com\u003e\n"
    },
    {
      "commit": "f1b29bcae116409db5e543622aadab43041c9ae9",
      "tree": "05dff62e747d8f0c91d6bd38ce900c0083dcbc98",
      "parents": [
        "e555190d82c0f58e825e3cbd9e6ebe2e7ac713bd"
      ],
      "author": {
        "name": "Dan Williams",
        "email": "dan.j.williams@intel.com",
        "time": "Sat May 01 18:09:05 2010 -0700"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue May 18 15:27:57 2010 +1000"
      },
      "message": "md/raid4: permit raid0 takeover\n\nFor consistency allow raid4 to takeover raid0 in addition to raid5 (with a\nraid4 layout).\n\nSigned-off-by: Dan Williams \u003cdan.j.williams@intel.com\u003e\n"
    },
    {
      "commit": "e555190d82c0f58e825e3cbd9e6ebe2e7ac713bd",
      "tree": "ea9c8e548c4d5eb5fc903bab05af3bda4192ed00",
      "parents": [
        "d754c5ae1ff76b20d3ecde8ad666d7865eada8ae"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed Mar 31 11:21:44 2010 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue May 18 15:27:57 2010 +1000"
      },
      "message": "md/raid1: delay reads that could overtake behind-writes.\n\nWhen a raid1 array is configured to support write-behind\non some devices, it normally only reads from other devices.\nIf all devices are write-behind (because the rest have failed)\nit is possible for a read request to be serviced before a\nbehind-write request, which would appear as data corruption.\n\nSo when forced to read from a WriteMostly device, wait for any\nwrite-behind to complete, and don\u0027t start any more behind-writes.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "d754c5ae1ff76b20d3ecde8ad666d7865eada8ae",
      "tree": "60523d76c5e437ea39ce158295d75ea4247f70e1",
      "parents": [
        "9e35b99c7efacfddc748c89a0c53b1122b0ee72c"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed Apr 07 12:14:43 2010 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue May 18 15:27:56 2010 +1000"
      },
      "message": "md/raid1: fix confusing \u0027redirect sector\u0027 message.\n\nThis message seems to suggest the named device is the one on which a\nread failed, however it is actually the device that the read will be\nredirected to.\nSo make the message a little clearer.\n\nReported-by: Tim Burgess \u003cozburgess@gmail.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n\n"
    },
    {
      "commit": "9e35b99c7efacfddc748c89a0c53b1122b0ee72c",
      "tree": "5ef48fad2c5de4269cdacdb83a01e41e64683ae5",
      "parents": [
        "fafd7fb052182e087b5a3c6c408e4ac8c2b5fa14"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Apr 06 14:23:02 2010 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue May 18 15:27:56 2010 +1000"
      },
      "message": "md: don\u0027t unregister the thread in mddev_suspend\n\nThis is\n - unnecessary because mddev_suspend is always followed by a call to\n   -\u003estop, and each -\u003estop unregisters the thread, and\n - a problem as it makes it awkwards to suspend and then resume a\n   device as we will want later.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "fafd7fb052182e087b5a3c6c408e4ac8c2b5fa14",
      "tree": "0071eab25a38b69a792fb25c3efffbd98609fc18",
      "parents": [
        "21a52c6d05c15f862797736393915bfa8cd40ee9"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Apr 01 15:55:30 2010 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue May 18 15:27:55 2010 +1000"
      },
      "message": "md: factor out init code for an mddev\n\nThis is a simple factorisation that makes mddev_find easier to read.\n\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "21a52c6d05c15f862797736393915bfa8cd40ee9",
      "tree": "44ffb633d209457979177a52132761a368fcb976",
      "parents": [
        "cca9cf90c504d98644ace52c474770970729f0eb"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Apr 01 15:02:13 2010 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue May 18 15:27:55 2010 +1000"
      },
      "message": "md: pass mddev to make_request functions rather than request_queue\n\nWe used to pass the personality make_request function direct\nto the block layer so the first argument had to be a queue.\nBut now we have the intermediary md_make_request so it makes\nat lot more sense to pass a struct mddev_s.\nIt makes it possible to have an mddev without its own queue too.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "cca9cf90c504d98644ace52c474770970729f0eb",
      "tree": "d825b55dc2f8742b210479d2af1804b5b31dd791",
      "parents": [
        "a4bd82d0d03b1485975579f131ccfd0aad6b7d6e"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Apr 01 12:08:16 2010 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue May 18 15:27:54 2010 +1000"
      },
      "message": "md: call md_stop_writes from md_stop\n\nThis moves the call to the other side of set_readonly, but that should\nnot be an issue.\nThis encapsulates in \u0027md_stop\u0027 all of the functionality for internally\nstopping the array, leaving all the interactions with externalities\n(sysfs, request_queue, gendisk) in do_md_stop.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "a4bd82d0d03b1485975579f131ccfd0aad6b7d6e",
      "tree": "7e560963b71f26fc487a1cd932f4b684bd3b3e62",
      "parents": [
        "a047e125403112ceb4d41e68307a2e7498ddba4e"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Mar 29 13:23:10 2010 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue May 18 15:27:54 2010 +1000"
      },
      "message": "md: split md_set_readonly out of do_md_stop\n\nUsing do_md_stop to set an array to read-only is a little confusing.\nNow most of the common code has been factored out, split\nmd_set_readonly off in to a separate function.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "a047e125403112ceb4d41e68307a2e7498ddba4e",
      "tree": "392928f408e3a6a2d40a7c3b6a178fbb3c411e06",
      "parents": [
        "6177b472ab14e1ac88896960370dd54ba577d926"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Mar 29 12:07:53 2010 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue May 18 15:27:54 2010 +1000"
      },
      "message": "md: factor md_stop_writes out of do_md_stop.\n\nFurther refactoring of do_md_stop.\nThis one requires some explanation as it takes code from different\nplaces in do_md_stop, so some re-ordering happens.\n\nWe only get into this part of do_md_stop if there are no active opens\nof the device, so no writes can be happening and the device must have\nbeen flushed.  In md_stop_writes we want to stop any internal sources\nof writes - i.e. resync - and flush out the metadata.\n\nThe only code that was previously before some of this code is\ncode to clean up the queue, the mddev, the gendisk, or sysfs, all\nof which is probably better after code that makes active changes (i.e.\ntriggers writes).\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "6177b472ab14e1ac88896960370dd54ba577d926",
      "tree": "387eec24b0ac82e028edfdd77d8b425077ca0bfb",
      "parents": [
        "fe60b0142813002be16dfae28780d9779ee22473"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Mar 29 11:37:13 2010 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue May 18 15:27:53 2010 +1000"
      },
      "message": "md: start to refactor do_md_stop\n\ndo_md_stop is large and clunky, so hard to understand.\n\nThis is a first step of refactoring, pulling two simple\nsub-functions out.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "fe60b0142813002be16dfae28780d9779ee22473",
      "tree": "1b2337036bbb30857531cd2d54729d38fdd75a3a",
      "parents": [
        "b821eaa572fd737faaf6928ba046e571526c36c6"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Mar 29 11:10:42 2010 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue May 18 15:27:53 2010 +1000"
      },
      "message": "md: factor do_md_run to separate accesses to -\u003egendisk\n\nAs part of relaxing the binding between an mddev and gendisk,\nwe separate do_md_run into two functions.\n  md_run does all the work internal to md\n  do_md_run calls md_run and makes and changes to gendisk\n     that are required.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "b821eaa572fd737faaf6928ba046e571526c36c6",
      "tree": "0db462a3c7da3dbf42d28e2483a27d78839b4589",
      "parents": [
        "49ce6cea85fb8d25ee59486c919406e9cecf1762"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Mar 29 11:18:15 2010 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue May 18 15:27:53 2010 +1000"
      },
      "message": "md: remove -\u003echanged and related code.\n\nWe set -\u003echanged to 1 and call check_disk_change at the end\nof md_open so that bd_invalidated would be set and thus\npartition rescan would happen appropriately.\n\nNow that we call revalidate_disk directly, which sets bd_invalidates,\nthat indirection is no longer needed and can be removed.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "49ce6cea85fb8d25ee59486c919406e9cecf1762",
      "tree": "36ff1804090759c0b43593feb8880b15121d13e9",
      "parents": [
        "490773268cf64f68da2470e07b52c7944da6312d"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Mar 29 10:51:42 2010 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue May 18 15:27:52 2010 +1000"
      },
      "message": "md: don\u0027t reference gendisk in getgeo\n\nUsing -\u003earray_sectors rather than get_capacity() is more\ndirect and is a step towards relaxing the tight connection\nbetween mddev and gendisk.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "490773268cf64f68da2470e07b52c7944da6312d",
      "tree": "d394aafa7203c316db6b63f128b8894e18993fca",
      "parents": [
        "2b7f22284d71975e37a82db154386348eec0e52c"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Mar 25 16:20:56 2010 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue May 18 15:27:52 2010 +1000"
      },
      "message": "md: move io accounting out of personalities into md_make_request\n\nWhile I generally prefer letting personalities do as much as possible,\ngiven that we have a central md_make_request anyway we may as well use\nit to simplify code.\nAlso this centralises knowledge of -\u003egendisk which will help later.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "2b7f22284d71975e37a82db154386348eec0e52c",
      "tree": "761ac50d75348c43e38745f10b824efa5c3388cd",
      "parents": [
        "a78d38a1a16c8e009aa512caa71d483757fefc1c"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Mar 25 16:06:03 2010 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue May 18 15:27:50 2010 +1000"
      },
      "message": "md/raid5: small tidyup in raid5_align_endio\n\nDiving through -\u003equeue to find mddev is unnecessarily complex - there\nis an easier path to finding mddev, so use that.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "a78d38a1a16c8e009aa512caa71d483757fefc1c",
      "tree": "028ba0f1d0d6a18b2710ece1f24639f9ff72e3d2",
      "parents": [
        "5cac7861b2de95a1f714ebdc652813abd0afcc73"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Mar 22 16:53:49 2010 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue May 18 15:27:49 2010 +1000"
      },
      "message": "md: add support for raid5 to raid4 conversion\n\nThis is unlikely to be wanted, but we may as well provide it\nfor completeness.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n\n"
    },
    {
      "commit": "5cac7861b2de95a1f714ebdc652813abd0afcc73",
      "tree": "552bc6200817c6872f403ab54a50e8c5f7a594fa",
      "parents": [
        "233fca36bb439eadcad28500b5139fed7c64a0ae"
      ],
      "author": {
        "name": "Maciej Trela",
        "email": "Maciej.Trela@intel.com",
        "time": "Wed Apr 14 17:17:39 2010 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue May 18 15:27:49 2010 +1000"
      },
      "message": "md: notify level changes through sysfs.\n\nLevel changes can be very significant, so make sure\nto notify them via sysfs.\n\nSigned-off-by: Maciej Trela \u003cmaciej.trela@intel.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "233fca36bb439eadcad28500b5139fed7c64a0ae",
      "tree": "dfaec050a24564da4d05ec0e21cd814375eae1e8",
      "parents": [
        "b71031076e1169e89bdac1b245ad1488587e4730"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed Apr 14 17:02:09 2010 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue May 18 15:27:49 2010 +1000"
      },
      "message": "md: Relax checks on -\u003emax_disks when external metadata handling is used.\n\nWhen metadata is being managed by user-space, md doesn\u0027t know\nwhat the maximum number of devices allowed in an array is\nso -\u003emax_disks is 0.  In this case we should allow any (+ve)\nnumber of disks.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "b71031076e1169e89bdac1b245ad1488587e4730",
      "tree": "b67a3ffc0263a7e380a9545ca066aea7cc46003b",
      "parents": [
        "dab8b29248b3f14f456651a2a6ee9b8fd16d1b3c"
      ],
      "author": {
        "name": "Maciej Trela",
        "email": "Maciej.Trela@intel.com",
        "time": "Wed Apr 14 16:58:16 2010 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue May 18 15:27:48 2010 +1000"
      },
      "message": "md: Correctly handle device removal via sysfs\n\nWriting \"none\" to \"../md/dev-xx/slot\" removes that device\nfrom being an active part of the array, but it didn\u0027t\nset -\u003eraid_disk to -1 to record this fact.\n\n\nSigned-off-by: Maciej Trela \u003cMaciej.Trela@intel.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "dab8b29248b3f14f456651a2a6ee9b8fd16d1b3c",
      "tree": "ced1c7cd74f2e0efc5a48819aa4711047960e2d5",
      "parents": [
        "9af204cf720cedf369cf823bbd806c350201f7ea"
      ],
      "author": {
        "name": "Trela, Maciej",
        "email": "Maciej.Trela@intel.com",
        "time": "Mon Mar 08 16:02:45 2010 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue May 18 15:27:48 2010 +1000"
      },
      "message": "md: Add support for Raid0-\u003eRaid10 takeover\n\n\nSigned-off-by: Maciej Trela \u003cmaciej.trela@intel.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "9af204cf720cedf369cf823bbd806c350201f7ea",
      "tree": "6aa684772cc1ba978e9dd0f67c3e0d5592588ca3",
      "parents": [
        "54071b3808ee3dc8624d9d6f1b06c4fd5308fa3b"
      ],
      "author": {
        "name": "Trela, Maciej",
        "email": "Maciej.Trela@intel.com",
        "time": "Mon Mar 08 16:02:44 2010 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue May 18 15:27:48 2010 +1000"
      },
      "message": "md: Add support for Raid5-\u003eRaid0 and Raid10-\u003eRaid0 takeover\n\n\nSigned-off-by: Maciej Trela \u003cmaciej.trela@intel.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "54071b3808ee3dc8624d9d6f1b06c4fd5308fa3b",
      "tree": "b254ce6625ce3dd472faac0d59edeb9589b30f2b",
      "parents": [
        "84707f38e767ac470fd82af6c45a8cafe2bd1b9a"
      ],
      "author": {
        "name": "Trela Maciej",
        "email": "Maciej.Trela@intel.com",
        "time": "Mon Mar 08 16:02:42 2010 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue May 18 15:27:47 2010 +1000"
      },
      "message": "md:Add support for Raid0-\u003eRaid5 takeover\n\nSigned-off-by: Maciej Trela \u003cmaciej.trela@intel.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "84707f38e767ac470fd82af6c45a8cafe2bd1b9a",
      "tree": "bc480c9aeedccd735e144576284523da1406cb98",
      "parents": [
        "c0cc75f84e0e413bce2dcabea74ef418da45c7c1"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Mar 16 17:23:35 2010 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue May 18 15:27:47 2010 +1000"
      },
      "message": "md: don\u0027t use mddev-\u003eraid_disks in raid0 or raid10 while array is active.\n\nIn a subsequent patch we will make it possible to change\nmddev-\u003eraid_disks while a RAID0 or RAID10 array is active.  This is\npart of the process of reshaping such an array.\n\nThis means that we cannot use this value while processes requests\n(it is OK to use it during initialisation as we are locked against\nchanges then).\nBoth RAID0 and RAID10 have the same value stored in the private data\nstructure, so use that value instead.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "c0cc75f84e0e413bce2dcabea74ef418da45c7c1",
      "tree": "f5723fbd0f5828cadaeec650abb8066ad52fad71",
      "parents": [
        "7b92813c3c0b6990f14838e3985fb385d2655d0c"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Mar 22 10:28:51 2010 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue May 18 15:27:47 2010 +1000"
      },
      "message": "md: discard StateChanged device flag.\n\nThis was needed when sysfs files could only be \u0027notified\u0027\nfrom process context.  Now that we have sys_notify_direct,\nwe can call it directly from an interrupt.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "7b92813c3c0b6990f14838e3985fb385d2655d0c",
      "tree": "c072a6684185f2c18734e704c488953250e8353a",
      "parents": [
        "696fcd535b5a8cfc0617e9cf1d9d69a13895cc1e"
      ],
      "author": {
        "name": "H Hartley Sweeten",
        "email": "hartleys@visionengravers.com",
        "time": "Mon Mar 08 16:02:40 2010 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue May 18 15:27:46 2010 +1000"
      },
      "message": "drivers/md: Remove unnecessary casts of void *\n\nvoid pointers do not need to be cast to other pointer types.\n\nSigned-off-by: H Hartley Sweeten \u003chsweeten@visionengravers.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "696fcd535b5a8cfc0617e9cf1d9d69a13895cc1e",
      "tree": "b9f55833c83a41a6e047f0de82b17d9753ad0542",
      "parents": [
        "ee8b81b03dffa1c0075553d01c557714aedb85a1"
      ],
      "author": {
        "name": "Paul Clements",
        "email": "paul.clements@steeleye.com",
        "time": "Mon Mar 08 16:02:37 2010 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue May 18 15:27:46 2010 +1000"
      },
      "message": "md: expose max value of behind writes counter\n\nKeep track of the maximum number of concurrent write-behind requests\nfor an md array and exposed this number in sysfs at\n   md/bitmap/max_backlog_used\n\nWriting any value to this file will clear it.\n\nThis allows userspace to be involved in tuning bitmap/backlog.\n\nSigned-off-by: Paul Clements \u003cpaul.clements@steeleye.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "ee8b81b03dffa1c0075553d01c557714aedb85a1",
      "tree": "95ba42aad6fb632699cd9e60d700d05ff96bc889",
      "parents": [
        "964147d5c86d63be79b442c30f3783d49860c078"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Mar 08 16:02:36 2010 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue May 18 15:27:45 2010 +1000"
      },
      "message": "md: remove some dead fields from mddev_s\n\nThese fields have never been used.\ncommit 4b6d287f627b5fb6a49f78f9e81649ff98c62bb7\nadded them, but also added identical files to bitmap_super_s,\nand only used the latter.\n\nSo remove these unused fields.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "964147d5c86d63be79b442c30f3783d49860c078",
      "tree": "5c1eab8814cab3511c85037dec5220c5c24f91af",
      "parents": [
        "a64c876fd357906a1f7193723866562ad290654c"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue May 18 15:27:13 2010 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue May 18 15:27:13 2010 +1000"
      },
      "message": "md/raid1: fix counting of write targets.\n\nThere is a very small race window when writing to a\nRAID1 such that if a device is marked faulty at exactly the wrong\ntime, the write-in-progress will not be sent to the device,\nbut the bitmap (if present) will be updated to say that\nthe write was sent.\n\nThen if the device turned out to still be usable as was re-added\nto the array, the bitmap-based-resync would skip resyncing that\nblock, possibly leading to corruption.  This would only be a problem\nif no further writes were issued to that area of the device (i.e.\nthat bitmap chunk).\n\nSuitable for any pending -stable kernel.\n\nCc: stable@kernel.org\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "a64c876fd357906a1f7193723866562ad290654c",
      "tree": "077fcdab730d40227585025bf15bf8e027949a29",
      "parents": [
        "b6eb127d274385d81ce8dd45c98190f097bce1b4"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed Apr 14 17:15:37 2010 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon May 17 14:45:40 2010 +1000"
      },
      "message": "md: manage redundancy group in sysfs when changing level.\n\nSome levels expect the \u0027redundancy group\u0027 to be present,\nothers don\u0027t.\nSo when we change level of an array we might need to\nadd or remove this group.\n\nThis requires fixing up the current practice of overloading -\u003eprivate\nto indicate (when -\u003epers \u003d\u003d NULL) that something needs to be removed.\nSo create a new -\u003eto_remove to fill that role.\n\nWhen changing levels, we may need to add or remove attributes.  When\nchanging RAID5 -\u003e RAID6, we both add and remove the same thing.  It is\nimportant to catch this and optimise it out as the removal is delayed\nuntil a lock is released, so trying to add immediately would cause\nproblems.\n\n\nCc: stable@kernel.org\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "b6eb127d274385d81ce8dd45c98190f097bce1b4",
      "tree": "a78eb14056ade77c0026b1106e9a2cd486a762e6",
      "parents": [
        "ef2f80ff7325b2c1888ff02ead28957b5840bf51"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Apr 15 10:13:47 2010 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon May 17 14:40:07 2010 +1000"
      },
      "message": "md: remove unneeded sysfs files more promptly\n\nWhen an array is stopped we need to remove some\nsysfs files which are dependent on the type of array.\n\nWe need to delay that deletion as deleting them while holding\nreconfig_mutex can lead to deadlocks.\n\nWe currently delay them until the array is completely destroyed.\nHowever it is possible to deactivate and then reactivate the array.\nIt is also possible to need to remove sysfs files when changing level,\nwhich can potentially happen several times before an array is\ndestroyed.\n\nSo we need to delete these files more promptly: as soon as\nreconfig_mutex is dropped.\n\nWe need to ensure this happens before do_md_run can restart the array,\nso we use open_mutex for some extra locking.  This is not deadlock\nprone.\n\nCc: stable@kernel.org\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "ef2f80ff7325b2c1888ff02ead28957b5840bf51",
      "tree": "f7d4eb0a1816c8a608ba61a9368203d7b0ac4978",
      "parents": [
        "e2218350465e7e0931676b4849b594c978437bce"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon May 17 11:27:00 2010 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon May 17 14:38:18 2010 +1000"
      },
      "message": "md/linear: avoid possible oops and array stop\n\nSince commit ef286f6fa673cd7fb367e1b145069d8dbfcc6081\nit has been important that each personality clears\n-\u003eprivate in the -\u003estop() function, or sets it to a\nattribute group to be removed.\nlinear.c doesn\u0027t.  This can sometimes lead to an oops,\nthough it doesn\u0027t always.\n\nSuitable for 2.6.33-stable and 2.6.34.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\nCc: stable@kernel.org\n"
    },
    {
      "commit": "e2218350465e7e0931676b4849b594c978437bce",
      "tree": "395398081c277c533d28edd70d08a9394e7d8597",
      "parents": [
        "627a2d3c29427637f4c5d31ccc7fcbd8d312cd71"
      ],
      "author": {
        "name": "Dan Williams",
        "email": "dan.j.williams@intel.com",
        "time": "Wed May 12 08:25:37 2010 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed May 12 08:25:37 2010 +1000"
      },
      "message": "md: set mddev readonly flag on blkdev BLKROSET ioctl\n\nWhen the user sets the block device to readwrite then the mddev should\nfollow suit.  Otherwise, the BUG_ON in md_write_start() will be set to\ntrigger.\n\nThe reverse direction, setting mddev-\u003ero to match a set readonly\nrequest, can be ignored because the blkdev level readonly flag precludes\nthe need to have mddev-\u003ero set correctly.  Nevermind the fact that\nsetting mddev-\u003ero to 1 may fail if the array is in use.\n\nCc: \u003cstable@kernel.org\u003e\nSigned-off-by: Dan Williams \u003cdan.j.williams@intel.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "1176568de7e066c0be9e46c37503b9fd4730edcf",
      "tree": "8af6ab7cd59ef6a615048ef31d922aee76cadd57",
      "parents": [
        "87aa63000c484bfb9909989316f615240dfee018"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri May 07 19:44:26 2010 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri May 07 21:10:57 2010 +1000"
      },
      "message": "md: restore ability of spare drives to spin down.\n\nSome time ago we stopped the clean/active metadata updates\nfrom being written to a \u0027spare\u0027 device in most cases so that\nit could spin down and say spun down.  Device failure/removal\netc are still recorded on spares.\n\nHowever commit 51d5668cb2e3fd1827a55 broke this 50% of the time,\ndepending on whether the event count is even or odd.\nThe change log entry said:\n\n   This means that the alignment between \u0027odd/even\u0027 and\n    \u0027clean/dirty\u0027 might take a little longer to attain,\n\nhow ever the code makes no attempt to create that alignment, so it\ncould take arbitrarily long.\n\nSo when we find that clean/dirty is not aligned with odd/even,\nforce a second metadata-update immediately.  There are already cases\nwhere a second metadata-update is needed immediately (e.g. when a\ndevice fails during the metadata update).  We just piggy-back on that.\n\nReported-by: Joe Bryant \u003ctenminjoe@yahoo.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\nCc: stable@kernel.org\n"
    },
    {
      "commit": "87aa63000c484bfb9909989316f615240dfee018",
      "tree": "ebadeba1c1c03b28e8c2c9036542bd6b75bb9837",
      "parents": [
        "722154e4cacf015161efe60009ae9be23d492296"
      ],
      "author": {
        "name": "Gabriele A. Trombetti",
        "email": "g.trombetti.lkrnl1213@logicschema.com",
        "time": "Wed Apr 28 11:51:17 2010 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri May 07 21:10:35 2010 +1000"
      },
      "message": "md/raid6: Fix raid-6 read-error correction in degraded state\n\nFix: Raid-6 was not trying to correct a read-error when in\nsingly-degraded state and was instead dropping one more device, going to\ndoubly-degraded state. This patch fixes this behaviour.\n\nTested-by: Janos Haar \u003cjanos.haar@netcenter.hu\u003e\nSigned-off-by: Gabriele A. Trombetti \u003cg.trombetti.lkrnl1213@logicschema.com\u003e\nReported-by: Janos Haar \u003cjanos.haar@netcenter.hu\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\nCc: stable@kernel.org\n"
    },
    {
      "commit": "6e3b96ed610e5a1838e62ddae9fa0c3463f235fa",
      "tree": "c0c3f0d3e5f16c04d417160e5bca1d4abf562651",
      "parents": [
        "35f2a591192d0a5d9f7fc696869c76f0b8e49c3d"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Apr 23 07:08:28 2010 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Apr 23 07:08:28 2010 +1000"
      },
      "message": "md/raid5: fix previous patch.\n\nPrevious patch changes stripe and chunk_number to sector_t but\nmistakenly did not update all of the divisions to use sector_dev().\n\nThis patch changes all the those divisions (actually the \u0027%\u0027 operator)\nto sector_div.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\nCc: stable@kernel.org\nTested-by: Stefan Lippers-Hollmann \u003cs.l-h@gmx.de\u003e\n"
    },
    {
      "commit": "35f2a591192d0a5d9f7fc696869c76f0b8e49c3d",
      "tree": "2b4cdbe2824a936f136fa0eb0dbd2db84927b057",
      "parents": [
        "85341c61361cc45a9cc0e11c01e8f4479ef460ac"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Apr 20 14:13:34 2010 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Apr 20 14:13:34 2010 +1000"
      },
      "message": "md/raid5: allow for more than 2^31 chunks.\n\nWith many large drives and small chunk sizes it is possible\nto create a RAID5 with more than 2^31 chunks.  Make sure this\nworks.\n\nReported-by: Brett King \u003cking.br@gmail.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\nCc: stable@kernel.org\n"
    },
    {
      "commit": "5a0e3ad6af8660be21ca98a971cd00f331318c05",
      "tree": "5bfb7be11a03176a87296a43ac6647975c00a1d1",
      "parents": [
        "ed391f4ebf8f701d3566423ce8f17e614cde9806"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Wed Mar 24 17:04:11 2010 +0900"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Tue Mar 30 22:02:32 2010 +0900"
      },
      "message": "include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h\n\npercpu.h is included by sched.h and module.h and thus ends up being\nincluded when building most .c files.  percpu.h includes slab.h which\nin turn includes gfp.h making everything defined by the two files\nuniversally available and complicating inclusion dependencies.\n\npercpu.h -\u003e slab.h dependency is about to be removed.  Prepare for\nthis change by updating users of gfp and slab facilities include those\nheaders directly instead of assuming availability.  As this conversion\nneeds to touch large number of source files, the following script is\nused as the basis of conversion.\n\n  http://userweb.kernel.org/~tj/misc/slabh-sweep.py\n\nThe script does the followings.\n\n* Scan files for gfp and slab usages and update includes such that\n  only the necessary includes are there.  ie. if only gfp is used,\n  gfp.h, if slab is used, slab.h.\n\n* When the script inserts a new include, it looks at the include\n  blocks and try to put the new include such that its order conforms\n  to its surrounding.  It\u0027s put in the include block which contains\n  core kernel includes, in the same order that the rest are ordered -\n  alphabetical, Christmas tree, rev-Xmas-tree or at the end if there\n  doesn\u0027t seem to be any matching order.\n\n* If the script can\u0027t find a place to put a new include (mostly\n  because the file doesn\u0027t have fitting include block), it prints out\n  an error message indicating which .h file needs to be added to the\n  file.\n\nThe conversion was done in the following steps.\n\n1. The initial automatic conversion of all .c files updated slightly\n   over 4000 files, deleting around 700 includes and adding ~480 gfp.h\n   and ~3000 slab.h inclusions.  The script emitted errors for ~400\n   files.\n\n2. Each error was manually checked.  Some didn\u0027t need the inclusion,\n   some needed manual addition while adding it to implementation .h or\n   embedding .c file was more appropriate for others.  This step added\n   inclusions to around 150 files.\n\n3. The script was run again and the output was compared to the edits\n   from #2 to make sure no file was left behind.\n\n4. Several build tests were done and a couple of problems were fixed.\n   e.g. lib/decompress_*.c used malloc/free() wrappers around slab\n   APIs requiring slab.h to be added manually.\n\n5. The script was run on all .h files but without automatically\n   editing them as sprinkling gfp.h and slab.h inclusions around .h\n   files could easily lead to inclusion dependency hell.  Most gfp.h\n   inclusion directives were ignored as stuff from gfp.h was usually\n   wildly available and often used in preprocessor macros.  Each\n   slab.h inclusion directive was examined and added manually as\n   necessary.\n\n6. percpu.h was updated not to include slab.h.\n\n7. Build test were done on the following configurations and failures\n   were fixed.  CONFIG_GCOV_KERNEL was turned off for all tests (as my\n   distributed build env didn\u0027t work with gcov compiles) and a few\n   more options had to be turned off depending on archs to make things\n   build (like ipr on powerpc/64 which failed due to missing writeq).\n\n   * x86 and x86_64 UP and SMP allmodconfig and a custom test config.\n   * powerpc and powerpc64 SMP allmodconfig\n   * sparc and sparc64 SMP allmodconfig\n   * ia64 SMP allmodconfig\n   * s390 SMP allmodconfig\n   * alpha SMP allmodconfig\n   * um on x86_64 SMP allmodconfig\n\n8. percpu.h modifications were reverted so that it could be applied as\n   a separate patch and serve as bisection point.\n\nGiven the fact that I had only a couple of failures from tests on step\n6, I\u0027m fairly confident about the coverage of this conversion patch.\nIf there is a breakage, it\u0027s likely to be something in one of the arch\nheaders which should be easily discoverable easily on most builds of\nthe specific arch.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nGuess-its-ok-by: Christoph Lameter \u003ccl@linux-foundation.org\u003e\nCc: Ingo Molnar \u003cmingo@redhat.com\u003e\nCc: Lee Schermerhorn \u003cLee.Schermerhorn@hp.com\u003e\n"
    },
    {
      "commit": "31cc1dd344d941358345bd02f24c629dada9b08c",
      "tree": "9a8cd10e2e633cb83e1c7984adc85f58006dc2ec",
      "parents": [
        "961cde93dee2658000ead32abffb8ddf0727abe0",
        "627a2d3c29427637f4c5d31ccc7fcbd8d312cd71"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Mar 18 16:55:24 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Mar 18 16:55:24 2010 -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: deal with merge_bvec_fn in component devices better.\n"
    },
    {
      "commit": "627a2d3c29427637f4c5d31ccc7fcbd8d312cd71",
      "tree": "f0de68842ca3b47d0152254e60d31cc561009119",
      "parents": [
        "25cf84cf377c0aae5dbcf937ea89bc7893db5176"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Mar 08 16:44:38 2010 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Mar 16 17:04:24 2010 +1100"
      },
      "message": "md: deal with merge_bvec_fn in component devices better.\n\nIf a component device has a merge_bvec_fn then as we never call it\nwe must ensure we never need to.  Currently this is done by setting\nmax_sector to 1 PAGE, however this does not stop a bio being created\nwith several sub-page iovecs that would violate the merge_bvec_fn.\n\nSo instead set max_segments to 1 and set the segment boundary to the\nsame as a page boundary to ensure there is only ever one single-page\nsegment of IO requested at a time.\n\nThis can particularly be an issue when \u0027xen\u0027 is used as it is\nknown to submit multiple small buffers in a single bio.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\nCc: stable@kernel.org\n"
    },
    {
      "commit": "52cf25d0ab7f78eeecc59ac652ed5090f69b619e",
      "tree": "031d1ffb3890bd69c0260c864c512e0be62ac05c",
      "parents": [
        "6c1733aca0b48db4d0e660d54976a1cca25b5eaf"
      ],
      "author": {
        "name": "Emese Revfy",
        "email": "re.emese@gmail.com",
        "time": "Tue Jan 19 02:58:23 2010 +0100"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@suse.de",
        "time": "Sun Mar 07 17:04:49 2010 -0800"
      },
      "message": "Driver core: Constify struct sysfs_ops in struct kobj_type\n\nConstify struct sysfs_ops.\n\nThis is part of the ops structure constification\neffort started by Arjan van de Ven et al.\n\nBenefits of this constification:\n\n * prevents modification of data that is shared\n   (referenced) by many other structure instances\n   at runtime\n\n * detects/prevents accidental (but not intentional)\n   modification attempts on archs that enforce\n   read-only kernel data at runtime\n\n * potentially better optimized code as the compiler\n   can assume that the const data cannot be changed\n\n * the compiler/linker move const data into .rodata\n   and therefore exclude them from false sharing\n\nSigned-off-by: Emese Revfy \u003cre.emese@gmail.com\u003e\nAcked-by: David Teigland \u003cteigland@redhat.com\u003e\nAcked-by: Matt Domsch \u003cMatt_Domsch@dell.com\u003e\nAcked-by: Maciej Sosnowski \u003cmaciej.sosnowski@intel.com\u003e\nAcked-by: Hans J. Koch \u003chjk@linutronix.de\u003e\nAcked-by: Pekka Enberg \u003cpenberg@cs.helsinki.fi\u003e\nAcked-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\nAcked-by: Stephen Hemminger \u003cshemminger@vyatta.com\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@suse.de\u003e\n\n"
    },
    {
      "commit": "f070304094edb8d516423e79edd27c97ec2020b0",
      "tree": "0330115839e84c4b5db8e2318a932f2dee78eba4",
      "parents": [
        "924e600d417ead9ef67043988055ba236f114718"
      ],
      "author": {
        "name": "Takahiro Yasui",
        "email": "tyasui@redhat.com",
        "time": "Sat Mar 06 02:32:35 2010 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Sat Mar 06 02:32:35 2010 +0000"
      },
      "message": "dm raid1: fix deadlock when suspending failed device\n\nTo prevent deadlock, bios in the hold list should be flushed before\ndm_rh_stop_recovery() is called in mirror_suspend().\n\nThe recovery can\u0027t start because there are pending bios and therefore\ndm_rh_stop_recovery deadlocks.\n\nWhen there are pending bios in the hold list, the recovery waits for\nthe completion of the bios after recovery_count is acquired.\nThe recovery_count is released when the recovery finished, however,\nthe bios in the hold list are processed after dm_rh_stop_recovery() in\nmirror_presuspend(). dm_rh_stop_recovery() also acquires recovery_count,\nthen deadlock occurs.\n\nSigned-off-by: Takahiro Yasui \u003ctyasui@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\nReviewed-by: Mikulas Patocka \u003cmpatocka@redhat.com\u003e\n"
    },
    {
      "commit": "924e600d417ead9ef67043988055ba236f114718",
      "tree": "338db5dfc0f8fe8f9aa39bd19639ad1f1dc27e46",
      "parents": [
        "3abf85b5b5851b5f28d3d8a920ebb844edd08352"
      ],
      "author": {
        "name": "Mike Snitzer",
        "email": "snitzer@redhat.com",
        "time": "Sat Mar 06 02:32:33 2010 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Sat Mar 06 02:32:33 2010 +0000"
      },
      "message": "dm: eliminate some holes data structures\n\nEliminate a 4-byte hole in \u0027struct dm_io_memory\u0027 by moving \u0027offset\u0027 above the\n\u0027ptr\u0027 to which it applies (size reduced from 24 to 16 bytes).  And by\nassociation, 1-4 byte hole is eliminated in \u0027struct dm_io_request\u0027 (size\nreduced from 56 to 48 bytes).\n\nEliminate all 6 4-byte holes and 1 cache-line in \u0027struct dm_snapshot\u0027 (size\nreduced from 392 to 368 bytes).\n\nSigned-off-by: Mike Snitzer \u003csnitzer@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "3abf85b5b5851b5f28d3d8a920ebb844edd08352",
      "tree": "b59e5c9322cc116b0ce5dc183d3b8286080c6031",
      "parents": [
        "a97f925a32aad2a37971d7bfb657006acf04e42d"
      ],
      "author": {
        "name": "Peter Rajnoha",
        "email": "prajnoha@redhat.com",
        "time": "Sat Mar 06 02:32:31 2010 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Sat Mar 06 02:32:31 2010 +0000"
      },
      "message": "dm ioctl: introduce flag indicating uevent was generated\n\nSet a new DM_UEVENT_GENERATED_FLAG when returning from ioctls to\nindicate that a uevent was actually generated.  This tells the userspace\ncaller that it may need to wait for the event to be processed.\n\nSigned-off-by: Peter Rajnoha \u003cprajnoha@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "a97f925a32aad2a37971d7bfb657006acf04e42d",
      "tree": "38c74c60f756dd05611138f864340a31f4fc393f",
      "parents": [
        "8215d6ec5fee1e76545decea2cd73717efb5cb42"
      ],
      "author": {
        "name": "Mikulas Patocka",
        "email": "mpatocka@redhat.com",
        "time": "Sat Mar 06 02:32:29 2010 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Sat Mar 06 02:32:29 2010 +0000"
      },
      "message": "dm: free dm_io before bio_endio not after\n\nFree the dm_io structure before calling bio_endio() instead of after it,\nto ensure that the io_pool containing it is not referenced after it is\nfreed.\n\nThis partially fixes a problem described here\n  https://www.redhat.com/archives/dm-devel/2010-February/msg00109.html\n\nthread 1:\nbio_endio(bio, io_error);\n/* scheduling happens */\n\t\t\t\t\tthread 2:\n\t\t\t\t\tclose the device\n\t\t\t\t\tremove the device\nthread 1:\nfree_io(md, io);\n\nThread 2, when removing the device, sees non-empty md-\u003eio_pool (because the\nio hasn\u0027t been freed by thread 1 yet) and may crash with BUG in mempool_free.\nThread 1 may also crash, when freeing into a nonexisting mempool.\n\nTo fix this we must make sure that bio_endio() is the last call and\nthe md structure is not accessed afterwards.\n\nThere is another bio_endio in process_barrier, but it is called from the thread\nand the thread is destroyed prior to freeing the mempools, so this call is\nnot affected by the bug.\n\nA similar bug exists with module unloads - the module may be unloaded\nimmediately after bio_endio - but that is more difficult to fix.\n\nSigned-off-by: Mikulas Patocka \u003cmpatocka@redhat.com\u003e\nCc: stable@kernel.org\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "8215d6ec5fee1e76545decea2cd73717efb5cb42",
      "tree": "54ed2c995c3b91417def0ad31368e3094f72bd81",
      "parents": [
        "0f3649a9e305ea22eb196a84a2d7520afcaa6060"
      ],
      "author": {
        "name": "Nikanth Karthikesan",
        "email": "knikanth@novell.com",
        "time": "Sat Mar 06 02:32:27 2010 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Sat Mar 06 02:32:27 2010 +0000"
      },
      "message": "dm table: remove unused dm_get_device range parameters\n\nRemove unused parameters(start and len) of dm_get_device()\nand fix the callers.\n\nSigned-off-by: Nikanth Karthikesan \u003cknikanth@suse.de\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "0f3649a9e305ea22eb196a84a2d7520afcaa6060",
      "tree": "10e5c845bcb2af0c5d9a7d79b231474983500a60",
      "parents": [
        "ede5ea0b8b815560dc54c712536fdf0b456b6ad0"
      ],
      "author": {
        "name": "Mike Snitzer",
        "email": "snitzer@redhat.com",
        "time": "Sat Mar 06 02:32:24 2010 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Sat Mar 06 02:32:24 2010 +0000"
      },
      "message": "dm ioctl: only issue uevent on resume if state changed\n\nOnly issue a uevent on a resume if the state of the device changed,\ni.e. if it was suspended and/or its table was replaced.\n\nSigned-off-by: Dave Wysochanski \u003cdwysocha@redhat.com\u003e\nSigned-off-by: Mike Snitzer \u003csnitzer@redhat.com\u003e\nCc: stable@kernel.org\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "ede5ea0b8b815560dc54c712536fdf0b456b6ad0",
      "tree": "6116cf45cdcfc07af4b59884b9ebc167c43f8f0c",
      "parents": [
        "fb61264297ca42a2a132f0433f75ccf7fd304ac6"
      ],
      "author": {
        "name": "Mikulas Patocka",
        "email": "mpatocka@redhat.com",
        "time": "Sat Mar 06 02:32:22 2010 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Sat Mar 06 02:32:22 2010 +0000"
      },
      "message": "dm raid1: always return error if all legs fail\n\nIf all mirror legs fail, always return an error instead of holding the\nbio, even if the handle_errors option was set.  At present it is the\nresponsibility of the driver underneath us to deal with retries,\nmultipath etc.\n\nThe patch adds the bio to the failures list instead of holding it\ndirectly.  do_failures tests first if all legs failed and, if so,\nreturns the bio with -EIO.  If any leg is still alive and handle_errors\nis set, do_failures calls hold_bio.\n\nReviewed-by: Takahiro Yasui \u003ctyasui@redhat.com\u003e\nSigned-off-by: Mikulas Patocka \u003cmpatocka@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "fb61264297ca42a2a132f0433f75ccf7fd304ac6",
      "tree": "e276ffebdb9fa13aa0d4e639c4ff30f9824c5c10",
      "parents": [
        "2bded7bd7e8b12a913b0b58167a48220560e1514"
      ],
      "author": {
        "name": "Kiyoshi Ueda",
        "email": "k-ueda@ct.jp.nec.com",
        "time": "Sat Mar 06 02:32:18 2010 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Sat Mar 06 02:32:18 2010 +0000"
      },
      "message": "dm mpath: refactor pg_init\n\nThis patch pulls the pg_init path activation code out of\nprocess_queued_ios() into a new function.\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: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "2bded7bd7e8b12a913b0b58167a48220560e1514",
      "tree": "f903c0f06b7b9a3e9fdcc347d00d44fa8290a1d0",
      "parents": [
        "d0259bf0eefc503d3c9c9ccda35033c3dd3aac30"
      ],
      "author": {
        "name": "Kiyoshi Ueda",
        "email": "k-ueda@ct.jp.nec.com",
        "time": "Sat Mar 06 02:32:13 2010 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Sat Mar 06 02:32:13 2010 +0000"
      },
      "message": "dm mpath: wait for pg_init completion when suspending\n\nWhen suspending the device we must wait for all I/O to complete, but\npg-init may be still in progress even after flushing the workqueue\nfor kmpath_handlerd in multipath_postsuspend.\n\nThis patch waits for pg-init completion correctly in\nmultipath_postsuspend().\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": "d0259bf0eefc503d3c9c9ccda35033c3dd3aac30",
      "tree": "8e0a6ebf9e9509875c160369803a2b6dd2abd943",
      "parents": [
        "fce323dd68e13354071538c765b062859e6f8286"
      ],
      "author": {
        "name": "Kiyoshi Ueda",
        "email": "k-ueda@ct.jp.nec.com",
        "time": "Sat Mar 06 02:30:02 2010 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Sat Mar 06 02:30:02 2010 +0000"
      },
      "message": "dm mpath: hold io until all pg_inits completed\n\nm-\u003equeue_io is set to block processing I/Os, and it needs to be kept\nwhile pg-init, which issues multiple path activations, is in progress.\nBut m-\u003equeue is cleared when a path activation completes without error\nin pg_init_done(), even while other path activations are in progress.\nThat may cause undesired -EIO on paths which are not complete activation.\n\nThis patch fixes that by not clearing m-\u003equeue_io until all path\nactivations complete.\n\n(Before the hardware handlers were moved into the SCSI layer, pg_init\nonly used one path.)\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": "fce323dd68e13354071538c765b062859e6f8286",
      "tree": "a6850c35a5d4954a81ef922eeaed2ee4d69e4b89",
      "parents": [
        "c53a381efbe3d0e0629121b3f0d2b62a0e167791"
      ],
      "author": {
        "name": "Kiyoshi Ueda",
        "email": "k-ueda@ct.jp.nec.com",
        "time": "Sat Mar 06 02:29:59 2010 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Sat Mar 06 02:29:59 2010 +0000"
      },
      "message": "dm mpath: avoid storing private suspended state\n\n\u0027suspended\u0027 flag in struct multipath was introduced to check whether\nthe multipath target is in suspended state, but the same check is\ndone through dm_suspended() now, so remove the flag and related code.\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\nCc: Mike Anderson \u003candmike@linux.vnet.ibm.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "ecdb2e257abc33ae6798d3ccba87bdafa40ef6b6",
      "tree": "497db6a95a9f06270506f6a75354d5df855d5a66",
      "parents": [
        "f7b934c8127deebf4eb56fbe4a4ae0da16b6dbcd"
      ],
      "author": {
        "name": "Kiyoshi Ueda",
        "email": "k-ueda@ct.jp.nec.com",
        "time": "Sat Mar 06 02:29:52 2010 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Sat Mar 06 02:29:52 2010 +0000"
      },
      "message": "dm table: remove dm_get from dm_table_get_md\n\nRemove the dm_get() in dm_table_get_md() because dm_table_get_md() could\nbe called from presuspend/postsuspend, which are called while\nmapped_device is in DMF_FREEING state, where dm_get() is not allowed.\n\nJustification for that is the lifetime of both objects: As far as the\ncurrent dm design/implementation, mapped_device is never freed while\ntargets are doing something, because dm core waits for targets to become\nquiet in dm_put() using presuspend/postsuspend.  So targets should be\nable to touch mapped_device without holding reference count of the\nmapped_device, and we should allow targets to touch mapped_device even\nif it is in DMF_FREEING state.\n\nBackgrounds:\nI\u0027m trying to remove the multipath internal queue, since dm core now has\na generic queue for request-based dm.  In the patch-set, the multipath\ntarget wants to request dm core to start/stop queue.  One of such\nstart/stop requests can happen during postsuspend() while the target\nwaits for pg-init to complete, because the target stops queue when\nstarting pg-init and tries to restart it when completing pg-init.  Since\nqueue belongs to mapped_device, it involves calling dm_table_get_md()\nand dm_put().  On the other hand, postsuspend() is called in dm_put()\nfor mapped_device which is in DMF_FREEING state, and that triggers\nBUG_ON(DMF_FREEING) in the 2nd dm_put().\n\nI had tried to solve this problem by changing only multipath not to\ntouch mapped_device which is in DMF_FREEING state, but I couldn\u0027t and I\ncame up with a question why we need dm_get() in dm_table_get_md().\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": "f7b934c8127deebf4eb56fbe4a4ae0da16b6dbcd",
      "tree": "75e4a78786f3a782142d9d686d53aac9204f5fc1",
      "parents": [
        "83c0d5d5388a8d45f7a45e0ec34adc52a78c81ad"
      ],
      "author": {
        "name": "Moger, Babu",
        "email": "Babu.Moger@lsi.com",
        "time": "Sat Mar 06 02:29:49 2010 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Sat Mar 06 02:29:49 2010 +0000"
      },
      "message": "dm mpath: skip activate_path for failed paths\n\nThis patch adds two minor fixes while processing device mapper path activation.\n\nSkip failed paths while calling activate_path.  If the path is already failed\nthen activate_path will fail for sure. We don\u0027t have to call in that case. In\nsome case this might cause prolonged retries unnecessarily.\n\nChange the misleading message if the path being activated fails with SCSI_DH_NOSYS.\n\nSigned-off-by: Babu Moger \u003cbabu.moger@lsi.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "83c0d5d5388a8d45f7a45e0ec34adc52a78c81ad",
      "tree": "85a59c18293f0c14a547fdd43631b59c21d1136d",
      "parents": [
        "64ba9926759792cf7b95f823402e2781edd1b5d4"
      ],
      "author": {
        "name": "Moger, Babu",
        "email": "Babu.Moger@lsi.com",
        "time": "Sat Mar 06 02:29:45 2010 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Sat Mar 06 02:29:45 2010 +0000"
      },
      "message": "dm mpath: pass struct pgpath to pg init done\n\nThis patch removes some unnecessary argument casting. There is no\nfunctional change with this patch.\n\nPasses \u0027struct pgpath\u0027 through to pg_init_done() instead of the enclosed\n\u0027struct dm_path\u0027.\n\nTested the changes with LSI storage..\n\nCC: Chandra Seetharaman \u003cchandra.seetharaman@us.ibm.com\u003e\nSigned-off-by: Babu Moger \u003cbabu.moger@lsi.com\u003e\nAcked-by: Kiyoshi Ueda \u003ck-ueda@ct.jp.nec.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "0a135ba14d71fb84c691a5386aff5049691fe6d7",
      "tree": "adb1de887dd6839d69d2fc16ffa2a10ff63298fa",
      "parents": [
        "4850f524b2c4c8a4e9f8ef4dd9c7c4afde2f2b2c",
        "a29d8b8e2d811a24bbe49215a0f0c536b72ebc18"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Mar 03 07:34:18 2010 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Mar 03 07:34:18 2010 -0800"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tj/percpu\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tj/percpu:\n  percpu: add __percpu sparse annotations to what\u0027s left\n  percpu: add __percpu sparse annotations to fs\n  percpu: add __percpu sparse annotations to core kernel subsystems\n  local_t: Remove leftover local.h\n  this_cpu: Remove pageset_notifier\n  this_cpu: Page allocator conversion\n  percpu, x86: Generic inc / dec percpu instructions\n  local_t: Move local.h include to ringbuffer.c and ring_buffer_benchmark.c\n  module: Use this_cpu_xx to dynamically allocate counters\n  local_t: Remove cpu_local_xx macros\n  percpu: refactor the code in pcpu_[de]populate_chunk()\n  percpu: remove compile warnings caused by __verify_pcpu_ptr()\n  percpu: make accessors check for percpu pointer in sparse\n  percpu: add __percpu for sparse.\n  percpu: make access macros universal\n  percpu: remove per_cpu__ prefix.\n"
    },
    {
      "commit": "8a78362c4eefc1deddbefe2c7f38aabbc2429d6b",
      "tree": "c095d95af1aec0f9cee5975b1dcdc6bc1d17d401",
      "parents": [
        "086fa5ff0854c676ec333760f4c0154b3b242616"
      ],
      "author": {
        "name": "Martin K. Petersen",
        "email": "martin.petersen@oracle.com",
        "time": "Fri Feb 26 00:20:39 2010 -0500"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Fri Feb 26 13:58:08 2010 +0100"
      },
      "message": "block: Consolidate phys_segment and hw_segment limits\n\nExcept for SCSI no device drivers distinguish between physical and\nhardware segment limits.  Consolidate the two into a single segment\nlimit.\n\nSigned-off-by: Martin K. Petersen \u003cmartin.petersen@oracle.com\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "086fa5ff0854c676ec333760f4c0154b3b242616",
      "tree": "ee63fb3c7c7d964bd799355b7cde18ba95f91f07",
      "parents": [
        "eb28d31bc97e6374d81f404da309401ffaed467b"
      ],
      "author": {
        "name": "Martin K. Petersen",
        "email": "martin.petersen@oracle.com",
        "time": "Fri Feb 26 00:20:38 2010 -0500"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Fri Feb 26 13:58:08 2010 +0100"
      },
      "message": "block: Rename blk_queue_max_sectors to blk_queue_max_hw_sectors\n\nThe block layer calling convention is blk_queue_\u003climit name\u003e.\nblk_queue_max_sectors predates this practice, leading to some confusion.\nRename the function to appropriately reflect that its intended use is to\nset max_hw_sectors.\n\nAlso introduce a temporary wrapper for backwards compability.  This can\nbe removed after the merge window is closed.\n\nSigned-off-by: Martin K. Petersen \u003cmartin.petersen@oracle.com\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "a29d8b8e2d811a24bbe49215a0f0c536b72ebc18",
      "tree": "5a714679aeebd5f7af5d1fc521f0db8639324f6c",
      "parents": [
        "003cb608a2533d0927a83bc4e07e46d7a622eda9"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Tue Feb 02 14:39:15 2010 +0900"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Wed Feb 17 11:17:38 2010 +0900"
      },
      "message": "percpu: add __percpu sparse annotations to what\u0027s left\n\nAdd __percpu sparse annotations to places which didn\u0027t make it in one\nof the previous patches.  All converions are trivial.\n\nThese annotations are to make sparse consider percpu variables to be\nin a different address space and warn if accessed without going\nthrough percpu accessors.  This patch doesn\u0027t affect normal builds.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nAcked-by: Borislav Petkov \u003cborislav.petkov@amd.com\u003e\nCc: Dan Williams \u003cdan.j.williams@intel.com\u003e\nCc: Huang Ying \u003cying.huang@intel.com\u003e\nCc: Len Brown \u003clenb@kernel.org\u003e\nCc: Neil Brown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "9307f6b19ac4f5887552b5b2992f391b866f7633",
      "tree": "bad439cf03f6e2b7aecb4fa78d6098feea443dd5",
      "parents": [
        "9eef87da2a8ea4920e0d913ff977cac064b68ee0"
      ],
      "author": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Tue Feb 16 18:43:04 2010 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Tue Feb 16 18:43:04 2010 +0000"
      },
      "message": "dm: sysfs revert add empty release function to avoid debug warning\n\nRevert commit d2bb7df8cac647b92f51fb84ae735771e7adbfa7 at Greg\u0027s request.\n\n    Author: Milan Broz \u003cmbroz@redhat.com\u003e\n    Date:   Thu Dec 10 23:51:53 2009 +0000\n\n    dm: sysfs add empty release function to avoid debug warning\n\n    This patch just removes an unnecessary warning:\n     kobject: \u0027dm\u0027: does not have a release() function,\n     it is broken and must be fixed.\n\n    The kobject is embedded in mapped device struct, so\n    code does not need to release memory explicitly here.\n\nCc: Greg KH \u003cgregkh@suse.de\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "9eef87da2a8ea4920e0d913ff977cac064b68ee0",
      "tree": "811eb358ce2fa66517b0cf59501522c17dfbe6bc",
      "parents": [
        "558569aa9d83e016295bac77d900342908d7fd85"
      ],
      "author": {
        "name": "Kiyoshi Ueda",
        "email": "k-ueda@ct.jp.nec.com",
        "time": "Tue Feb 16 18:43:01 2010 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Tue Feb 16 18:43:01 2010 +0000"
      },
      "message": "dm mpath: fix stall when requeueing io\n\nThis patch fixes the problem that system may stall if target\u0027s -\u003emap_rq\nreturns DM_MAPIO_REQUEUE in map_request().\nE.g. stall happens on 1 CPU box when a dm-mpath device with queue_if_no_path\n     bounces between all-paths-down and paths-up on I/O load.\n\nWhen target\u0027s -\u003emap_rq returns DM_MAPIO_REQUEUE, map_request() requeues\nthe request and returns to dm_request_fn().  Then, dm_request_fn()\ndoesn\u0027t exit the I/O dispatching loop and continues processing\nthe requeued request again.\nThis map and requeue loop can be done with interrupt disabled,\nso 1 CPU system can be stalled if this situation happens.\n\nFor example, commands below can stall my 1 CPU box within 1 minute or so:\n  # dmsetup table mp\n  mp: 0 2097152 multipath 1 queue_if_no_path 0 1 1 service-time 0 1 2 8:144 1 1\n  # while true; do dd if\u003d/dev/mapper/mp of\u003d/dev/null bs\u003d1M count\u003d100; done \u0026\n  # while true; do \\\n  \u003e dmsetup message mp 0 \"fail_path 8:144\" \\\n  \u003e dmsetup suspend --noflush mp \\\n  \u003e dmsetup resume mp \\\n  \u003e dmsetup message mp 0 \"reinstate_path 8:144\" \\\n  \u003e done\n\nTo fix the problem above, this patch changes dm_request_fn() to exit\nthe I/O dispatching loop once if a request is requeued in map_request().\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\nCc: stable@kernel.org\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "558569aa9d83e016295bac77d900342908d7fd85",
      "tree": "fb8f887855462b23629c9955229ac714cbf77d0d",
      "parents": [
        "5528d17de1cf1462f285c40ccaf8e0d0e4c64dc0"
      ],
      "author": {
        "name": "Takahiro Yasui",
        "email": "tyasui@redhat.com",
        "time": "Tue Feb 16 18:42:58 2010 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Tue Feb 16 18:42:58 2010 +0000"
      },
      "message": "dm raid1: fix null pointer dereference in suspend\n\nWhen suspending a failed mirror, bios are completed by mirror_end_io() and\n__rh_lookup() in dm_rh_dec() returns NULL where a non-NULL return value is\nrequired by design.  Fix this by not changing the state of the recovery failed\nregion from DM_RH_RECOVERING to DM_RH_NOSYNC in dm_rh_recovery_end().\n\nIssue\n\nOn 2.6.33-rc1 kernel, I hit the bug when I suspended the failed\nmirror by dmsetup command.\n\nBUG: unable to handle kernel NULL pointer dereference at 00000020\nIP: [\u003cf94f38e2\u003e] dm_rh_dec+0x35/0xa1 [dm_region_hash]\n...\nEIP: 0060:[\u003cf94f38e2\u003e] EFLAGS: 00010046 CPU: 0\nEIP is at dm_rh_dec+0x35/0xa1 [dm_region_hash]\nEAX: 00000286 EBX: 00000000 ECX: 00000286 EDX: 00000000\nESI: eff79eac EDI: eff79e80 EBP: f6915cd4 ESP: f6915cc4\n DS: 007b ES: 007b FS: 00d8 GS: 0033 SS: 0068\nProcess dmsetup (pid: 2849, ti\u003df6914000 task\u003deff03e80 task.ti\u003df6914000)\n ...\nCall Trace:\n [\u003cf9530af6\u003e] ? mirror_end_io+0x53/0x1b1 [dm_mirror]\n [\u003cf9413104\u003e] ? clone_endio+0x4d/0xa2 [dm_mod]\n [\u003cf9530aa3\u003e] ? mirror_end_io+0x0/0x1b1 [dm_mirror]\n [\u003cf94130b7\u003e] ? clone_endio+0x0/0xa2 [dm_mod]\n [\u003cc02d6bcb\u003e] ? bio_endio+0x28/0x2b\n [\u003cf952f303\u003e] ? hold_bio+0x2d/0x62 [dm_mirror]\n [\u003cf952f942\u003e] ? mirror_presuspend+0xeb/0xf7 [dm_mirror]\n [\u003cc02aa3e2\u003e] ? vmap_page_range+0xb/0xd\n [\u003cf9414c8d\u003e] ? suspend_targets+0x2d/0x3b [dm_mod]\n [\u003cf9414ca9\u003e] ? dm_table_presuspend_targets+0xe/0x10 [dm_mod]\n [\u003cf941456f\u003e] ? dm_suspend+0x4d/0x150 [dm_mod]\n [\u003cf941767d\u003e] ? dev_suspend+0x55/0x18a [dm_mod]\n [\u003cc0343762\u003e] ? _copy_from_user+0x42/0x56\n [\u003cf9417fb0\u003e] ? dm_ctl_ioctl+0x22c/0x281 [dm_mod]\n [\u003cf9417628\u003e] ? dev_suspend+0x0/0x18a [dm_mod]\n [\u003cf9417d84\u003e] ? dm_ctl_ioctl+0x0/0x281 [dm_mod]\n [\u003cc02c3c4b\u003e] ? vfs_ioctl+0x22/0x85\n [\u003cc02c422c\u003e] ? do_vfs_ioctl+0x4cb/0x516\n [\u003cc02c42b7\u003e] ? sys_ioctl+0x40/0x5a\n [\u003cc0202858\u003e] ? sysenter_do_call+0x12/0x28\n\nAnalysis\n\nWhen recovery process of a region failed, dm_rh_recovery_end() function\nchanges the state of the region from RM_RH_RECOVERING to DM_RH_NOSYNC.\nWhen recovery_complete() is executed between dm_rh_update_states() and\ndm_writes() in do_mirror(), bios are processed with the region state,\nDM_RH_NOSYNC. However, the region data is freed without checking its\npending count when dm_rh_update_states() is called next time.\n\nWhen bios are finished by mirror_end_io(), __rh_lookup() in dm_rh_dec()\nreturns NULL even though a valid return value are expected.\n\nSolution\n\nRemove the state change of the recovery failed region from DM_RH_RECOVERING\nto DM_RH_NOSYNC in dm_rh_recovery_end(). We can remove the state change\nbecause:\n\n  - If the region data has been released by dm_rh_update_states(),\n    a new region data is created with the state of DM_RH_NOSYNC, and\n    bios are processed according to the DM_RH_NOSYNC state.\n\n  - If the region data has not been released by dm_rh_update_states(),\n    a state of the region is DM_RH_RECOVERING and bios are put in the\n    delayed_bio list.\n\nThe flag change from DM_RH_RECOVERING to DM_RH_NOSYNC in dm_rh_recovery_end()\nwas added in the following commit:\n  dm raid1: handle resync failures\n  author  Jonathan Brassow \u003cjbrassow@redhat.com\u003e\n    Thu, 12 Jul 2007 16:29:04 +0000 (17:29 +0100)\n  http://git.kernel.org/linus/f44db678edcc6f4c2779ac43f63f0b9dfa28b724\n\nSigned-off-by: Takahiro Yasui \u003ctyasui@redhat.com\u003e\nReviewed-by: Mikulas Patocka \u003cmpatocka@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "5528d17de1cf1462f285c40ccaf8e0d0e4c64dc0",
      "tree": "11c754019431e7561a629fb7d0b4378ef96b8e15",
      "parents": [
        "ebfd32bba9b518d684009d9d21a56742337ca1b3"
      ],
      "author": {
        "name": "Mikulas Patocka",
        "email": "mpatocka@redhat.com",
        "time": "Tue Feb 16 18:42:55 2010 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Tue Feb 16 18:42:55 2010 +0000"
      },
      "message": "dm raid1: fail writes if errors are not handled and log fails\n\nIf the mirror log fails when the handle_errors option was not selected\nand there is no remaining valid mirror leg, writes return success even\nthough they weren\u0027t actually written to any device.  This patch\ncompletes them with EIO instead.\n\nThis code path is taken:\ndo_writes:\n\tbio_list_merge(\u0026ms-\u003efailures, \u0026sync);\ndo_failures:\n\tif (!get_valid_mirror(ms)) (false)\n\telse if (errors_handled(ms)) (false)\n\telse bio_endio(bio, 0);\n\nThe logic in do_failures is based on presuming that the write was already\ntried: if it succeeded at least on one leg (without handle_errors) it\nis reported as success.\n\nReference: https://bugzilla.redhat.com/show_bug.cgi?id\u003d555197\n\nSigned-off-by: Mikulas Patocka \u003cmpatocka@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "ebfd32bba9b518d684009d9d21a56742337ca1b3",
      "tree": "317e2c6b14657d7d7c792daf149377ca83afb444",
      "parents": [
        "55f67f2dedec1e3049abc30b6d82b999a14cafb7"
      ],
      "author": {
        "name": "Jonathan Brassow",
        "email": "jbrassow@redhat.com",
        "time": "Tue Feb 16 18:42:53 2010 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Tue Feb 16 18:42:53 2010 +0000"
      },
      "message": "dm log: userspace fix overhead_size calcuations\n\nThis patch fixes two bugs that revolve around the miscalculation and\nmisuse of the variable \u0027overhead_size\u0027.  \u0027overhead_size\u0027 is the size of\nthe various header structures used during communication.\n\nThe first bug is the use of \u0027sizeof\u0027 with the pointer of a structure\ninstead of the structure itself - resulting in the wrong size being\ncomputed.  This is then used in a check to see if the payload\n(data_size) would be to large for the preallocated structure.  Since the\nbug produces a smaller value for the overhead, it was possible for the\nstructure to be breached.  (Although the current users of the code do\nnot currently send enough data to trigger this bug.)\n\nThe second bug is that the \u0027overhead_size\u0027 value is used to compute how\nmuch of the preallocated space should be cleared before populating it\nwith fresh data.  This should have simply been \u0027sizeof(struct cn_msg)\u0027\nnot overhead_size.  The fact that \u0027overhead_size\u0027 was computed\nincorrectly made this problem \"less bad\" - leaving only a pointer\u0027s\nworth of space at the end uncleared.  Thus, this bug was never producing\na bad result, but still needs to be fixed - especially now that the\nvalue is computed correctly.\n\nCc: stable@kernel.org\nSigned-off-by: Jonathan Brassow \u003cjbrassow@redhat.com\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "55f67f2dedec1e3049abc30b6d82b999a14cafb7",
      "tree": "33c39276f5b185c9ec9fefa296f344675241f98a",
      "parents": [
        "781248c1b50c776a9ef4be1130f84ced1cba42fe"
      ],
      "author": {
        "name": "Mike Snitzer",
        "email": "snitzer@redhat.com",
        "time": "Tue Feb 16 18:42:51 2010 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Tue Feb 16 18:42:51 2010 +0000"
      },
      "message": "dm snapshot: persistent annotate work_queue as on stack\n\nchunk_io() declares its \u0027struct mdata_req\u0027 on the stack and then\ninitializes its \u0027struct work_struct\u0027 member.  Annotate the\ninitialization of this workqueue with INIT_WORK_ON_STACK to suppress a\ndebugobjects warning seen when CONFIG_DEBUG_OBJECTS_WORK is enabled.\n\nSigned-off-by: Mike Snitzer \u003csnitzer@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "781248c1b50c776a9ef4be1130f84ced1cba42fe",
      "tree": "aa102797cde7b10623eefbeee493c36fdf2bdfe3",
      "parents": [
        "0813e22d4e0d618eac9b47bec942bf856adca4c5"
      ],
      "author": {
        "name": "Nikanth Karthikesan",
        "email": "knikanth@suse.de",
        "time": "Tue Feb 16 18:42:47 2010 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Tue Feb 16 18:42:47 2010 +0000"
      },
      "message": "dm stripe: avoid divide by zero with invalid stripe count\n\nIf a table containing zero as stripe count is passed into stripe_ctr\nthe code attempts to divide by zero.\n\nThis patch changes DM_TABLE_LOAD to return -EINVAL if the stripe count\nis zero.\n\nWe now get the following error messages:\n  device-mapper: table: 253:0: striped: Invalid stripe count\n  device-mapper: ioctl: error adding target to table\n\nSigned-off-by: Nikanth Karthikesan \u003cknikanth@suse.de\u003e\nCc: stable@kernel.org\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "ef286f6fa673cd7fb367e1b145069d8dbfcc6081",
      "tree": "957760503c1b1a417850db3204d6c010d1ce1a67",
      "parents": [
        "9eb07c259207d048e3ee8be2a77b2a4680b1edd4"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Feb 09 16:34:14 2010 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed Feb 10 11:26:09 2010 +1100"
      },
      "message": "md: fix some lockdep issues between md and sysfs.\n\n\u003d\u003d\u003d\u003d\u003d\u003d\nThis fix is related to\n    http://bugzilla.kernel.org/show_bug.cgi?id\u003d15142\nbut does not address that exact issue.\n\u003d\u003d\u003d\u003d\u003d\u003d\n\nsysfs does like attributes being removed while they are being accessed\n(i.e. read or written) and waits for the access to complete.\n\nAs accessing some md attributes takes the same lock that is held while\nremoving those attributes a deadlock can occur.\n\nThis patch addresses 3 issues in md that could lead to this deadlock.\n\nTwo relate to calling flush_scheduled_work while the lock is held.\nThis is probably a bad idea in general and as we use schedule_work to\ndelete various sysfs objects it is particularly bad.\n\nIn one case flush_scheduled_work is called from md_alloc (called by\nmd_probe) called from do_md_run which holds the lock.  This call is\nonly present to ensure that -\u003egendisk is set.  However we can be sure\nthat gendisk is always set (though possibly we couldn\u0027t when that code\nwas originally written.  This is because do_md_run is called in three\ndifferent contexts:\n  1/ from md_ioctl.  This requires that md_open has succeeded, and it\n     fails if -\u003egendisk is not set.\n  2/ from writing a sysfs attribute.  This can only happen if the\n     mddev has been registered in sysfs which happens in md_alloc\n     after -\u003egendisk has been set.\n  3/ from autorun_array which is only called by autorun_devices, which\n     checks for -\u003egendisk to be set before calling autorun_array.\nSo the call to md_probe in do_md_run can be removed, and the check on\n-\u003egendisk can also go.\n\n\nIn the other case flush_scheduled_work is being called in do_md_stop,\npurportedly to wait for all md_delayed_delete calls (which delete the\ncomponent rdevs) to complete.  However there really isn\u0027t any need to\nwait for them - they have already been disconnected in all important\nways.\n\nThe third issue is that raid5-\u003estop() removes some attribute names\nwhile the lock is held.  There is already some infrastructure in place\nto delay attribute removal until after the lock is released (using\nschedule_work).  So extend that infrastructure to remove the\nraid5_attrs_group.\n\nThis does not address all lockdep issues related to the sysfs\n\"s_active\" lock.  The rest can be address by splitting that lockdep\ncontext between symlinks and non-symlinks which hopefully will happen.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "9eb07c259207d048e3ee8be2a77b2a4680b1edd4",
      "tree": "aad711b891fd43920c832da2158aab0764c7fe49",
      "parents": [
        "6339204ecc2aa2067a99595522de0403f0854bb8"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Feb 09 12:31:47 2010 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Feb 09 16:34:29 2010 +1100"
      },
      "message": "md: fix \u0027degraded\u0027 calculation when starting a reshape.\n\nThis code was written long ago when it was not possible to\nreshape a degraded array.  Now it is so the current level of\ndegraded-ness needs to be taken in to account.  Also newly addded\ndevices should only reduce degradedness if they are deemed to be\nin-sync.\n\nIn particular, if you convert a RAID5 to a RAID6, and increase the\nnumber of devices at the same time, then the 5-\u003e6 conversion will\nmake the array degraded so the current code will produce a wrong\nvalue for \u0027degraded\u0027 - \"-1\" to be precise.\n\nIf the reshape runs to completion end_reshape will calculate a correct\nnew value for \u0027degraded\u0027, but if a device fails during the reshape an\nincorrect decision might be made based on the incorrect value of\n\"degraded\".\n\nThis patch is suitable for 2.6.32-stable and if they are still open,\n2.6.31-stable and 2.6.30-stable as well.\n\nCc: stable@kernel.org\nReported-by: Michael Evans \u003cmjevans1983@gmail.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "b27d7f16d3c6c27345d4280a739809c1c2c4c0b5",
      "tree": "cb2947bf2c466616dad6a160a9efb47208432d96",
      "parents": [
        "17be8c245054b9c7786545af3ba3ca4e54cd4ad9"
      ],
      "author": {
        "name": "Martin K. Petersen",
        "email": "martin.petersen@oracle.com",
        "time": "Mon Jan 11 03:21:50 2010 -0500"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Mon Jan 11 14:29:20 2010 +0100"
      },
      "message": "DM: Fix device mapper topology stacking\n\nMake DM use bdev_stack_limits() function so that partition offsets get\ntaken into account when calculating alignment.  Clarify stacking\nwarnings.\n\nAlso remove obsolete clearing of final alignment_offset and misalignment\nflag.\n\nSigned-off-by: Martin K. Petersen \u003cmartin.petersen@oracle.com\u003e\nSigned-off-by: Mike Snitzer \u003csnitzer@redhat.com\u003e\nCc: Alasdair G. Kergon \u003cagk@redhat.com\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "404e4b43fdd6daa7b4a9f81bc7e4358281d763fa",
      "tree": "7a013e233db56b7c90cf0857d6c3bc74c19cf07f",
      "parents": [
        "7fb9dadc91948ddd16d1d32e414b5e71ec63b97b"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed Dec 30 15:25:23 2009 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed Dec 30 15:25:23 2009 +1100"
      },
      "message": "md: allow a resync that is waiting for other resync to complete, to be aborted.\n\nIf two arrays share a device, then they will not both resync at the\nsame time.  One will wait for the other to complete.\nWhile waiting, the MD_RECOVERY_INTR flag is not checked so a device\nfailure, which would make the resync pointless, does not cause the\nresync to abort, so the failed device cannot be removed (as it cannot\nbe remove while a resync is happening).\n\nSo add a test for MD_RECOVERY_INTR.\n\nReported-by: Brett Russ \u003cbruss@netezza.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "7fb9dadc91948ddd16d1d32e414b5e71ec63b97b",
      "tree": "d64379c9b336a2792f1877383bdcdd92e837070b",
      "parents": [
        "a2d79c324ac0c26ae9995a312a7731067a7f01fc"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed Dec 30 15:19:08 2009 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed Dec 30 15:20:43 2009 +1100"
      },
      "message": "md: remove unnecessary code from do_md_run\n\nSince commit dfc7064500061677720fa26352963c772d3ebe6b,\n-\u003ehot_remove_disks has not removed non-failed devices from\nan array until recovery is no longer possible.\nSo the code in do_md_run to get around the fact that\nmd_check_recovery (which calls -\u003ehot_remove_disks) would\nremove partially-in-sync devices is no longer needed.\n\nSo remove it.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "a2d79c324ac0c26ae9995a312a7731067a7f01fc",
      "tree": "bf9418f4fe8ab86eaf5519be6f1beb363dc64bda",
      "parents": [
        "0f9552b5dc4fe10da37fa3f4a4ca185d90fa41c9"
      ],
      "author": {
        "name": "Dan Williams",
        "email": "dan.j.williams@intel.com",
        "time": "Mon Dec 21 18:18:36 2009 -0700"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed Dec 30 15:20:31 2009 +1100"
      },
      "message": "md: make recovery started by do_md_run() visible via sync_action\n\nBy default md_do_sync() will perform recovery if no other actions are\nspecified.  However, action_show() relies on MD_RECOVERY_RECOVER to be\nset otherwise it returns \u0027idle\u0027.  So, add a missing set\nMD_RECOVERY_RECOVER when starting recovery.\n\nSigned-off-by: Dan Williams \u003cdan.j.williams@intel.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "0f9552b5dc4fe10da37fa3f4a4ca185d90fa41c9",
      "tree": "14f29af551fc226dc4451f1089d4f08dc2611c0d",
      "parents": [
        "cbd1998377504df005302ac90d49db72a48552a6"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed Dec 30 12:08:50 2009 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed Dec 30 15:20:12 2009 +1100"
      },
      "message": "md: fix small irregularity with start_ro module parameter\n\nThe start_ro modules parameter can be used to force arrays to be\nstarted in \u0027auto-readonly\u0027 in which they are read-only until the first\nwrite.  This ensures that no resync/recovery happens until something\nelse writes to the device.  This is important for resume-from-disk\noff an md array.\n\nHowever if an array is started \u0027readonly\u0027 (by writing \u0027readonly\u0027 to\nthe \u0027array_state\u0027 sysfs attribute) we want it to be really \u0027readonly\u0027,\nnot \u0027auto-readonly\u0027.\n\nSo strengthen the condition to only set auto-readonly if the\narray is not already read-only.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "cbd1998377504df005302ac90d49db72a48552a6",
      "tree": "f5c0d83ebe8534477bd252204da804640fd5413b",
      "parents": [
        "6b7b284958d47b77d06745b36bc7f36dab769d9b"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed Dec 30 12:08:49 2009 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed Dec 30 12:08:49 2009 +1100"
      },
      "message": "md: Fix unfortunate interaction with evms\n\nevms configures md arrays by:\n  open device\n  send ioctl\n  close device\n\nfor each different ioctl needed.\nSince 2.6.29, the device can disappear after the \u0027close\u0027\nunless a significant configuration has happened to the device.\nThe change made by \"SET_ARRAY_INFO\" can too minor to stop the device\nfrom disappearing, but important enough that losing the change is bad.\n\nSo: make sure SET_ARRAY_INFO sets mddev-\u003ectime, and keep the device\nactive as long as ctime is non-zero (it gets zeroed with lots of other\nthings when the array is stopped).\n\nThis is suitable for -stable kernels since 2.6.29.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\nCc: stable@kernel.org"
    },
    {
      "commit": "53365383c4667aba55385cd1858582c19a7a8a36",
      "tree": "b290d003534b3947834762c2fb492d9d0beb985f",
      "parents": [
        "51b736b85155a56543fda8aeca5f8592795d7983",
        "d2fdb776e08d4231d7e86a879cc663a93913c202"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Dec 15 09:12:01 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Dec 15 09:12:01 2009 -0800"
      },
      "message": "Merge git://git.kernel.org/pub/scm/linux/kernel/git/agk/linux-2.6-dm\n\n* git://git.kernel.org/pub/scm/linux/kernel/git/agk/linux-2.6-dm: (80 commits)\n  dm snapshot: use merge origin if snapshot invalid\n  dm snapshot: report merge failure in status\n  dm snapshot: merge consecutive chunks together\n  dm snapshot: trigger exceptions in remaining snapshots during merge\n  dm snapshot: delay merging a chunk until writes to it complete\n  dm snapshot: queue writes to chunks being merged\n  dm snapshot: add merging\n  dm snapshot: permit only one merge at once\n  dm snapshot: support barriers in snapshot merge target\n  dm snapshot: avoid allocating exceptions in merge\n  dm snapshot: rework writing to origin\n  dm snapshot: add merge target\n  dm exception store: add merge specific methods\n  dm snapshot: create function for chunk_is_tracked wait\n  dm snapshot: make bio optional in __origin_write\n  dm mpath: reject messages when device is suspended\n  dm: export suspended state to targets\n  dm: rename dm_suspended to dm_suspended_md\n  dm: swap target postsuspend call and setting suspended flag\n  dm crypt: add plain64 iv\n  ...\n"
    },
    {
      "commit": "7b75c2f8cf6d938b571d3bc3f566f883ab7472c4",
      "tree": "480a924c730a56dfb06a0bec92b63e9086aa8287",
      "parents": [
        "bc058f65e8c7d83c139692e1c26513d3187dd744"
      ],
      "author": {
        "name": "Joe Perches",
        "email": "joe@perches.com",
        "time": "Mon Dec 14 18:01:12 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Dec 15 08:53:33 2009 -0800"
      },
      "message": "drivers/md/md.c: use %pU to print UUIDs\n\nSigned-off-by: Joe Perches \u003cjoe@perches.com\u003e\nCc: Neil Brown \u003cneilb@suse.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "e7d2860b690d4f3bed6824757c540579638e3d1e",
      "tree": "84268ee28893256fd6a6a7e1d4474f61dbee74e7",
      "parents": [
        "84c95c9acf088c99d8793d78036b67faa5d0b851"
      ],
      "author": {
        "name": "André Goddard Rosa",
        "email": "andre.goddard@gmail.com",
        "time": "Mon Dec 14 18:01:06 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Dec 15 08:53:32 2009 -0800"
      },
      "message": "tree-wide: convert open calls to remove spaces to skip_spaces() lib function\n\nMakes use of skip_spaces() defined in lib/string.c for removing leading\nspaces from strings all over the tree.\n\nIt decreases lib.a code size by 47 bytes and reuses the function tree-wide:\n   text    data     bss     dec     hex filename\n  64688     584     592   65864   10148 (TOTALS-BEFORE)\n  64641     584     592   65817   10119 (TOTALS-AFTER)\n\nAlso, while at it, if we see (*str \u0026\u0026 isspace(*str)), we can be sure to\nremove the first condition (*str) as the second one (isspace(*str)) also\nevaluates to 0 whenever *str \u003d\u003d 0, making it redundant. In other words,\n\"a char equals zero is never a space\".\n\nJulia Lawall tried the semantic patch (http://coccinelle.lip6.fr) below,\nand found occurrences of this pattern on 3 more files:\n    drivers/leds/led-class.c\n    drivers/leds/ledtrig-timer.c\n    drivers/video/output.c\n\n@@\nexpression str;\n@@\n\n( // ignore skip_spaces cases\nwhile (*str \u0026\u0026  isspace(*str)) { \\(str++;\\|++str;\\) }\n|\n- *str \u0026\u0026\nisspace(*str)\n)\n\nSigned-off-by: André Goddard Rosa \u003candre.goddard@gmail.com\u003e\nCc: Julia Lawall \u003cjulia@diku.dk\u003e\nCc: Martin Schwidefsky \u003cschwidefsky@de.ibm.com\u003e\nCc: Jeff Dike \u003cjdike@addtoit.com\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nCc: \"H. Peter Anvin\" \u003chpa@zytor.com\u003e\nCc: Richard Purdie \u003crpurdie@rpsys.net\u003e\nCc: Neil Brown \u003cneilb@suse.de\u003e\nCc: Kyle McMartin \u003ckyle@mcmartin.ca\u003e\nCc: Henrique de Moraes Holschuh \u003chmh@hmh.eng.br\u003e\nCc: David Howells \u003cdhowells@redhat.com\u003e\nCc: \u003clinux-ext4@vger.kernel.org\u003e\nCc: Samuel Ortiz \u003csamuel@sortiz.org\u003e\nCc: Patrick McHardy \u003ckaber@trash.net\u003e\nCc: Takashi Iwai \u003ctiwai@suse.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "06e3c817b750c131a20e82eed57a17841ea88ed2",
      "tree": "55da529f662c29da5b5fd202b5ece9fb907aa431",
      "parents": [
        "4e59ca7da05f0d5d3ad40365c502c8b0fd24c7e3"
      ],
      "author": {
        "name": "Dan Williams",
        "email": "dan.j.williams@intel.com",
        "time": "Sat Dec 12 21:17:12 2009 -0700"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Dec 14 12:58:57 2009 +1100"
      },
      "message": "md: add \u0027recovery_start\u0027 per-device sysfs attribute\n\nEnable external metadata arrays to manage rebuild checkpointing via a\nmd/dev-XXX/recovery_start attribute which reflects rdev-\u003erecovery_offset\n\nAlso update resync_start_store to allow \u0027none\u0027 to be written, for\nconsistency.\n\nSigned-off-by: Dan Williams \u003cdan.j.williams@intel.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e"
    },
    {
      "commit": "4e59ca7da05f0d5d3ad40365c502c8b0fd24c7e3",
      "tree": "d5ddc749ec13db16c1ed7a054546c2ea482c0e1e",
      "parents": [
        "93be75ffde6dfd1ad17cc3ff1dbd135bd711baf4"
      ],
      "author": {
        "name": "Dan Williams",
        "email": "dan.j.williams@intel.com",
        "time": "Sat Dec 12 21:17:06 2009 -0700"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Dec 14 12:57:43 2009 +1100"
      },
      "message": "md: rcu_read_lock() walk of mddev-\u003edisks in md_do_sync()\n\nOther walks of this list are either under rcu_read_lock() or the list\nmutation lock (mddev_lock()).  This protects against the improbable case of a\ndisk being removed from the array at the start of md_do_sync().\n\nSigned-off-by: Dan Williams \u003cdan.j.williams@intel.com\u003e\n"
    },
    {
      "commit": "93be75ffde6dfd1ad17cc3ff1dbd135bd711baf4",
      "tree": "56006efccad176da1b806978faf60d77c817e6ac",
      "parents": [
        "aa98aa31987ad9831711ae71ea2270228ab62532"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Dec 14 12:50:06 2009 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Dec 14 12:51:41 2009 +1100"
      },
      "message": "md: integrate spares into array at earliest opportunity.\n\nAs v1.x metadata can record that a member of the array is\nnot completely recovered, it make sense to record that a\nspare has become a regular member of the array at the earliest\nopportunity.\nSo remove the tests on \"recovery_offset \u003e 0\" in super_1_sync\nas they really aren\u0027t needed, and schedule a metadata update\nimmediately after adding spares to a degraded array.\n\nThis means that if a crash happens immediately after a recovery\nstarts, the new device will be included in the array and recovery will\ncontinue from wherever it was up to.  Previously this didn\u0027t happen\nunless recovery was at least 1/16 of the way through.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "aa98aa31987ad9831711ae71ea2270228ab62532",
      "tree": "736036691f07fe4b7d18064aaa0ace5d76b73cf6",
      "parents": [
        "93bd89a6d5f268acbdb8d775e40d3a280b07b5bd"
      ],
      "author": {
        "name": "Arnd Bergmann",
        "email": "arnd@arndb.de",
        "time": "Mon Dec 14 12:50:05 2009 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Dec 14 12:51:41 2009 +1100"
      },
      "message": "md: move compat_ioctl handling into md.c\n\nThe RAID ioctls are only implemented in md.c, so the\nhandling for them should also be moved there from\nfs/compat_ioctl.c.\n\nSigned-off-by: Arnd Bergmann \u003carnd@arndb.de\u003e\nCc: Neil Brown \u003cneilb@suse.de\u003e\nCc: Andre Noll \u003cmaan@systemlinux.org\u003e\nCc: linux-raid@vger.kernel.org\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "93bd89a6d5f268acbdb8d775e40d3a280b07b5bd",
      "tree": "64fba42505d5d95457032dd70e9a6beb9b6f0845",
      "parents": [
        "0efb9e6191e1d3d34c1db90b829b742bc36d532e"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Dec 14 12:49:59 2009 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Dec 14 12:51:41 2009 +1100"
      },
      "message": "md: revise Kconfig help for MD_MULTIPATH\n\nMake it clear in the config message that MD_MULTIPATH is not under\nactive development.\n\nCc: Oren Held \u003corenhe@il.ibm.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "0efb9e6191e1d3d34c1db90b829b742bc36d532e",
      "tree": "5960d97df87a7eeea56d7dbe801259fc43398d5e",
      "parents": [
        "1e50915fe0bbf7a46db0fa7e1e604d3fc95f057d"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Dec 14 12:49:58 2009 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Dec 14 12:51:41 2009 +1100"
      },
      "message": "md: add MODULE_DESCRIPTION for all md related modules.\n\nSuggested by  Oren Held \u003corenhe@il.ibm.com\u003e\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    }
  ],
  "next": "1e50915fe0bbf7a46db0fa7e1e604d3fc95f057d"
}
