)]}'
{
  "log": [
    {
      "commit": "945526846a84c00adac1efd1c6befdaa77039623",
      "tree": "36a3ca9188af8d1154af8684f541f3abbf2cd3c7",
      "parents": [
        "3de0ef4f2067da58fa5126d821a56dcb98cdb565"
      ],
      "author": {
        "name": "Andreas Gruenbacher",
        "email": "agruen@suse.de",
        "time": "Thu Oct 15 00:13:23 2009 +0200"
      },
      "committer": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Tue Oct 20 18:02:33 2009 -0400"
      },
      "message": "dnotify: ignore FS_EVENT_ON_CHILD\n\nMask off FS_EVENT_ON_CHILD in dnotify_handle_event().  Otherwise, when there\nis more than one watch on a directory and dnotify_should_send_event()\nsucceeds, events with FS_EVENT_ON_CHILD set will trigger all watches and cause\nspurious events.\n\nThis case was overlooked in commit e42e2773.\n\n\t#define _GNU_SOURCE\n\n\t#include \u003cstdio.h\u003e\n\t#include \u003cstdlib.h\u003e\n\t#include \u003cunistd.h\u003e\n\t#include \u003csignal.h\u003e\n\t#include \u003csys/types.h\u003e\n\t#include \u003csys/stat.h\u003e\n\t#include \u003cfcntl.h\u003e\n\t#include \u003cstring.h\u003e\n\n\tstatic void create_event(int s, siginfo_t* si, void* p)\n\t{\n\t\tprintf(\"create\\n\");\n\t}\n\n\tstatic void delete_event(int s, siginfo_t* si, void* p)\n\t{\n\t\tprintf(\"delete\\n\");\n\t}\n\n\tint main (void) {\n\t\tstruct sigaction action;\n\t\tchar *tmpdir, *file;\n\t\tint fd1, fd2;\n\n\t\tsigemptyset (\u0026action.sa_mask);\n\t\taction.sa_flags \u003d SA_SIGINFO;\n\n\t\taction.sa_sigaction \u003d create_event;\n\t\tsigaction (SIGRTMIN + 0, \u0026action, NULL);\n\n\t\taction.sa_sigaction \u003d delete_event;\n\t\tsigaction (SIGRTMIN + 1, \u0026action, NULL);\n\n\t#\tdefine TMPDIR \"/tmp/test.XXXXXX\"\n\t\ttmpdir \u003d malloc(strlen(TMPDIR) + 1);\n\t\tstrcpy(tmpdir, TMPDIR);\n\t\tmkdtemp(tmpdir);\n\n\t#\tdefine TMPFILE \"/file\"\n\t\tfile \u003d malloc(strlen(tmpdir) + strlen(TMPFILE) + 1);\n\t\tsprintf(file, \"%s/%s\", tmpdir, TMPFILE);\n\n\t\tfd1 \u003d open (tmpdir, O_RDONLY);\n\t\tfcntl(fd1, F_SETSIG, SIGRTMIN);\n\t\tfcntl(fd1, F_NOTIFY, DN_MULTISHOT | DN_CREATE);\n\n\t\tfd2 \u003d open (tmpdir, O_RDONLY);\n\t\tfcntl(fd2, F_SETSIG, SIGRTMIN + 1);\n\t\tfcntl(fd2, F_NOTIFY, DN_MULTISHOT | DN_DELETE);\n\n\t\tif (fork()) {\n\t\t\t/* This triggers a create event */\n\t\t\tcreat(file, 0600);\n\t\t\t/* This triggers a create and delete event (!) */\n\t\t\tunlink(file);\n\t\t} else {\n\t\t\tsleep(1);\n\t\t\trmdir(tmpdir);\n\t\t}\n\n\t\treturn 0;\n\t}\n\nSigned-off-by: Andreas Gruenbacher \u003cagruen@suse.de\u003e\nSigned-off-by: Eric Paris \u003ceparis@redhat.com\u003e\n"
    },
    {
      "commit": "520dc2a526fd681337883b6ff1ddcf7c23b1b063",
      "tree": "a6346bbd0b405d1a377aaaf5f1f69a5f662f814a",
      "parents": [
        "7e790dd5fc937bc8d2400c30a05e32a9e9eef276"
      ],
      "author": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Mon Jul 13 15:56:54 2009 -0400"
      },
      "committer": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Tue Jul 21 15:26:26 2009 -0400"
      },
      "message": "fsnotify: use def_bool in kconfig instead of letting the user choose\n\nfsnotify doens\u0027t give the user anything.  If someone chooses inotify or\ndnotify it should build fsnotify, if they don\u0027t select one it shouldn\u0027t be\nbuilt.  This patch changes fsnotify to be a def_bool\u003dn and makes everything\nelse select it.  Also fixes the issue people complained about on lwn where\ngdm hung because they didn\u0027t have inotify and they didn\u0027t get the inotify\nbuild option.....\n\nSigned-off-by: Eric Paris \u003ceparis@redhat.com\u003e\n"
    },
    {
      "commit": "a092ee20fd33d2df0990dcbf2235afc181612818",
      "tree": "c172839ce60bcc55e770e6707694842301e3ed6b",
      "parents": [
        "e42e27736de80045f925564ea27a1d32957219e7"
      ],
      "author": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Thu Jun 11 11:09:48 2009 -0400"
      },
      "committer": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Thu Jun 11 14:57:55 2009 -0400"
      },
      "message": "fsnotify: allow groups to set freeing_mark to null\n\nMost fsnotify listeners (all but inotify) do not care about marks being\nfreed.  Allow groups to set freeing_mark to null and do not call any\nfunction if it is set that way.\n\nSigned-off-by: Eric Paris \u003ceparis@redhat.com\u003e\n"
    },
    {
      "commit": "e42e27736de80045f925564ea27a1d32957219e7",
      "tree": "cae8a5bc81f02c7563625e30f5f0d05357dc3701",
      "parents": [
        "ce61856bd2aadb064f595e5c0444376a2b117c41"
      ],
      "author": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Thu Jun 11 11:09:47 2009 -0400"
      },
      "committer": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Thu Jun 11 14:57:54 2009 -0400"
      },
      "message": "inotify/dnotify: should_send_event shouldn\u0027t match on FS_EVENT_ON_CHILD\n\ninotify and dnotify will both indicate that they want any event which came\nfrom a child inode.  The fix is to mask off FS_EVENT_ON_CHILD when deciding\nif inotify or dnotify is interested in a given event.\n\nSigned-off-by: Eric Paris \u003ceparis@redhat.com\u003e\n"
    },
    {
      "commit": "ce61856bd2aadb064f595e5c0444376a2b117c41",
      "tree": "4a438d07fbce1acbb3970b631211aaf445f2e41b",
      "parents": [
        "5ac697b793a3c45005c568df692518da6e690390"
      ],
      "author": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Thu Jun 11 11:09:47 2009 -0400"
      },
      "committer": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Thu Jun 11 14:57:54 2009 -0400"
      },
      "message": "dnotify: do not bother to lock entry-\u003elock when reading mask\n\nentry-\u003elock is needed to make sure entry-\u003emask does not change while\nmanipulating it.  In dnotify_should_send_event() we don\u0027t care if we get an\nold or a new mask value out of this entry so there is no point it taking\nthe lock.\n\nSigned-off-by: Eric Paris \u003ceparis@redhat.com\u003e\n"
    },
    {
      "commit": "5ac697b793a3c45005c568df692518da6e690390",
      "tree": "9481b421be4a67f91eb4a6f790e02cb555035cc9",
      "parents": [
        "ff52cc2158b32b3b979ca7802b1fd7c70f36e13c"
      ],
      "author": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Thu Jun 11 11:09:47 2009 -0400"
      },
      "committer": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Thu Jun 11 14:57:54 2009 -0400"
      },
      "message": "dnotify: do not use ?true:false when assigning to a bool\n\ndnotify_should send event assigned a bool using ?true:false when computing\na bit operation.  This is poitless and the bool type does this for us.\n\nSigned-off-by: Eric Paris \u003ceparis@redhat.com\u003e\n"
    },
    {
      "commit": "e4aff117368cfdd3567ee41844d216d079b55173",
      "tree": "c467bc38edc7ba3154bbf6875dca635b855e1c8c",
      "parents": [
        "47882c6f51e8ef41fbbe2bbb746a1ea3228dd7ca"
      ],
      "author": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Thu May 21 17:01:50 2009 -0400"
      },
      "committer": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Thu Jun 11 14:57:54 2009 -0400"
      },
      "message": "fsnotify: allow groups to add private data to events\n\ninotify needs per group information attached to events.  This patch allows\ngroups to attach private information and implements a callback so that\ninformation can be freed when an event is being destroyed.\n\nSigned-off-by: Eric Paris \u003ceparis@redhat.com\u003e\nAcked-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nCc: Christoph Hellwig \u003chch@lst.de\u003e\n"
    },
    {
      "commit": "3c5119c05d624f95f4967d16b38c9624b816bdb9",
      "tree": "0b5f66106aea38e52adf62958762b0a975607322",
      "parents": [
        "c28f7e56e9d95fb531dc3be8df2e7f52bee76d21"
      ],
      "author": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Thu May 21 17:01:33 2009 -0400"
      },
      "committer": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Thu Jun 11 14:57:53 2009 -0400"
      },
      "message": "dnotify: reimplement dnotify using fsnotify\n\nReimplement dnotify using fsnotify.\n\nSigned-off-by: Eric Paris \u003ceparis@redhat.com\u003e\nAcked-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nCc: Christoph Hellwig \u003chch@lst.de\u003e\n"
    },
    {
      "commit": "272eb01485dda98e3b8910c7c1a53d597616b0a0",
      "tree": "6a1dcd34c1dd668b465c166c2d6d2596924eff5f",
      "parents": [
        "c2acf7b90821785fe812cc0aa05148e5a1f84204"
      ],
      "author": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Wed Dec 17 13:59:41 2008 -0500"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Dec 31 18:07:43 2008 -0500"
      },
      "message": "filesystem notification: create fs/notify to contain all fs notification\n\nCreating a generic filesystem notification interface, fsnotify, which will be\nused by inotify, dnotify, and eventually fanotify is really starting to\nclutter the fs directory.  This patch simply moves inotify and dnotify into\nfs/notify/inotify and fs/notify/dnotify respectively to make both current fs/\nand future notification tidier.\n\nSigned-off-by: Eric Paris \u003ceparis@redhat.com\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    }
  ]
}
