)]}'
{
  "log": [
    {
      "commit": "bca915aae803cf01fde4461fc9c093cf5a86d7fc",
      "tree": "d1d8c670a141a8a7fdb240eb1a89bf23e2630e50",
      "parents": [
        "034a186d29dbcef099e57ab23ec39440596be911"
      ],
      "author": {
        "name": "Andrew Morton",
        "email": "akpm@linux-foundation.org",
        "time": "Fri Oct 16 23:18:15 2009 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Fri Oct 16 23:18:15 2009 +0100"
      },
      "message": "dm log: userspace fix incorrect luid cast in userspace_ctr\n\nmips:\n\ndrivers/md/dm-log-userspace-base.c: In function `userspace_ctr\u0027:\ndrivers/md/dm-log-userspace-base.c:159: warning: cast from pointer to integer of different size\n\nCc: stable@kernel.org\nCc: Jonathan Brassow \u003cjbrassow@redhat.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "0d03d59d9b31cd1e33b7e46a80b6fef66244b1f2",
      "tree": "fab3cfc08a242b4744982b40cce837879ffa0272",
      "parents": [
        "526b678093a8a4bcf1ffffbe17bcf21c057eddf5"
      ],
      "author": {
        "name": "Geert Uytterhoeven",
        "email": "geert@linux-m68k.org",
        "time": "Thu Sep 10 23:13:28 2009 +0200"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Sep 10 14:55:01 2009 -0700"
      },
      "message": "md: Fix \"strchr\" [drivers/md/dm-log-userspace.ko] undefined!\n\nCommit b8313b6da7e2e7c7f47d93d8561969a3ff9ba0ea (\"dm log: remove incorrect\nfield from userspace table output\") added a call to strstr() with a\nsingle-character \"needle\" string parameter.\n\nUnfortunately some versions of gcc replace such calls to strstr() by calls\nto strchr() behind our back.  This causes linking errors if strchr() is\ndefined as an inline function in \u003casm/string.h\u003e (e.g. on m68k):\n\n| WARNING: \"strchr\" [drivers/md/dm-log-userspace.ko] undefined!\n\nAvoid this by explicitly calling strchr() instead.\n\nSigned-off-by: Geert Uytterhoeven \u003cgeert@linux-m68k.org\u003e\nCc: stable@kernel.org\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "7ec23d50949d5062b5b749638dd9380ed75e58e5",
      "tree": "28183b6468683cf28abd63b9c322b9f31bcddc5e",
      "parents": [
        "d2b698644c97cb033261536a4f2010924a00eac9"
      ],
      "author": {
        "name": "Jonathan Brassow",
        "email": "jbrassow@redhat.com",
        "time": "Fri Sep 04 20:40:34 2009 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Fri Sep 04 20:40:34 2009 +0100"
      },
      "message": "dm log: userspace add luid to distinguish between concurrent log instances\n\nDevice-mapper userspace logs (like the clustered log) are\nidentified by a universally unique identifier (UUID).  This\nidentifier is used to associate requests from the kernel to\na specific log in userspace.  The UUID must be unique everywhere,\nsince multiple machines may use this identifier when communicating\nabout a particular log, as is the case for cluster logs.\n\nSometimes, device-mapper/LVM may re-use a UUID.  This is the\ncase during pvmoves, when moving from one segment of an LV\nto another, or when resizing a mirror, etc.  In these cases,\na new log is created with the same UUID and loaded in the\n\"inactive\" slot.  When a device-mapper \"resume\" is issued,\nthe \"live\" table is deactivated and the new \"inactive\" table\nbecomes \"live\".  (The \"inactive\" table can also be removed\nvia a device-mapper \u0027clear\u0027 command.)\n\nThe above two issues were colliding.  More than one log was being\ncreated with the same UUID, and there was no way to distinguish\nbetween them.  So, sometimes the wrong log would be swapped\nout during the exchange.\n\nThe solution is to create a locally unique identifier,\n\u0027luid\u0027, to go along with the UUID.  This new identifier is used\nto determine exactly which log is being referenced by the kernel\nwhen the log exchange is made.  The identifier is not\nuniversally safe, but it does not need to be, since\ncreate/destroy/suspend/resume operations are bound to a specific\nmachine; and these are the operations that make up the exchange.\n\nSigned-off-by: Jonathan Brassow \u003cjbrassow@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "b8313b6da7e2e7c7f47d93d8561969a3ff9ba0ea",
      "tree": "c605b02cb6ad5c4b68d4066eca4aac6c4747e839",
      "parents": [
        "4142a969175302bc843d1505133488bfdbfa4732"
      ],
      "author": {
        "name": "Jonathan Brassow",
        "email": "jbrassow@redhat.com",
        "time": "Fri Sep 04 20:40:30 2009 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Fri Sep 04 20:40:30 2009 +0100"
      },
      "message": "dm log: remove incorrect field from userspace table output\n\nThe output of \u0027dmsetup table\u0027 includes an internal field that should not\nbe there.  This patch removes it.  To make the fix simpler, we first\nreorder a constructor argument\n\nThe \u0027device size\u0027 argument is generated internally.  Currently it is\nplaced as the last space-separated word of the constructor string.\nHowever, we need to use a version of the string without this word, so we\nmove it to the beginning instead so it is trivial to skip past it.\n\nWe keep a copy of the arguments passed to userspace for creating a log,\njust in case we need to resend them.  These are the same arguments that\nare desired in the STATUSTYPE_TABLE request, except for one.  When\ncreating the userspace log, the userspace daemon must know the size of\nthe mirror, so that is added to the arguments given in the constructor\ntable.  We were printing this extra argument out as well, which is a\nmistake.\n\nSigned-off-by: Jonathan Brassow \u003cjbrassow@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "4142a969175302bc843d1505133488bfdbfa4732",
      "tree": "737cce5d0dc543dacefd7bc2fa27fc43b118318a",
      "parents": [
        "40bea431274c247425e7f5970d796ff7b37a2b22"
      ],
      "author": {
        "name": "Jonathan Brassow",
        "email": "jbrassow@redhat.com",
        "time": "Fri Sep 04 20:40:28 2009 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Fri Sep 04 20:40:28 2009 +0100"
      },
      "message": "dm log: fix userspace status output\n\nFix \u0027dmsetup table\u0027 output.\n\nThere is a missing \u0027 \u0027 at the end of the string causing two\nwords to run together.\n\nSigned-off-by: Jonathan Brassow \u003cjbrassow@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "f5db4af466e2dca0fe822019812d586ca910b00c",
      "tree": "1bbaaa36509df9f7eecc19ccffa434048cf4b555",
      "parents": [
        "754c5fc7ebb417b23601a6222a6005cc2e7f2913"
      ],
      "author": {
        "name": "Jonthan Brassow",
        "email": "jbrassow@redhat.com",
        "time": "Mon Jun 22 10:12:35 2009 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Mon Jun 22 10:12:35 2009 +0100"
      },
      "message": "dm raid1: add userspace log\n\nThis patch contains a device-mapper mirror log module that forwards\nrequests to userspace for processing.\n\nThe structures used for communication between kernel and userspace are\nlocated in include/linux/dm-log-userspace.h.  Due to the frequency,\ndiversity, and 2-way communication nature of the exchanges between\nkernel and userspace, \u0027connector\u0027 was chosen as the interface for\ncommunication.\n\nThe first log implementations written in userspace - \"clustered-disk\"\nand \"clustered-core\" - support clustered shared storage.   A userspace\ndaemon (in the LVM2 source code repository) uses openAIS/corosync to\nprocess requests in an ordered fashion with the rest of the nodes in the\ncluster so as to prevent log state corruption.  Other implementations\nwith no association to LVM or openAIS/corosync, are certainly possible.\n\n(Imagine if two machines are writing to the same region of a mirror.\nThey would both mark the region dirty, but you need a cluster-aware\nentity that can handle properly marking the region clean when they are\ndone.  Otherwise, you might clear the region when the first machine is\ndone, not the second.)\n\nSigned-off-by: Jonathan Brassow \u003cjbrassow@redhat.com\u003e\nCc: Evgeniy Polyakov \u003cjohnpol@2ka.mipt.ru\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    }
  ]
}
