)]}'
{
  "log": [
    {
      "commit": "92b4678efa8ce0de9b1e01a74e3d13c4002a4136",
      "tree": "97febbafb1798324802325c22c3693902a47323d",
      "parents": [
        "f72adfd540bacc4f6ff57a7d708b1a6c8906bdb4"
      ],
      "author": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Fri Aug 27 21:42:11 2010 -0400"
      },
      "committer": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Fri Aug 27 21:42:11 2010 -0400"
      },
      "message": "fsnotify: drop two useless bools in the fnsotify main loop\n\nThe fsnotify main loop has 2 bools which indicated if we processed the\ninode or vfsmount mark in that particular pass through the loop.  These\nbool can we replaced with the inode_group and vfsmount_group variables\nand actually make the code a little easier to understand.\n\nSigned-off-by: Eric Paris \u003ceparis@redhat.com\u003e\n"
    },
    {
      "commit": "f72adfd540bacc4f6ff57a7d708b1a6c8906bdb4",
      "tree": "dffd43e47284095e98f2a2ab60f965fc68792008",
      "parents": [
        "a2f13ad0ba5d94b9768c28469b45ca1e81a2b895"
      ],
      "author": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Fri Aug 27 21:24:24 2010 -0400"
      },
      "committer": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Fri Aug 27 21:41:26 2010 -0400"
      },
      "message": "fsnotify: fix list walk order\n\nMarks were stored on the inode and vfsmonut mark list in order from\nhighest memory address to lowest memory address.  The code to walk those\nlists thought they were in order from lowest to highest with\nunpredictable results when trying to match up marks from each.  It was\npossible that extra events would be sent to userspace when inode\nmarks ignoring events wouldn\u0027t get matched with the vfsmount marks.\n\nThis problem only affected fanotify when using both vfsmount and inode\nmarks simultaneously.\n\nSigned-off-by: Eric Paris \u003ceparis@redhat.com\u003e\n"
    },
    {
      "commit": "a2f13ad0ba5d94b9768c28469b45ca1e81a2b895",
      "tree": "3c9bd63cb165bbb4427399b3e87deb74911cd97d",
      "parents": [
        "0fb85621df4f9f7c663c6c77c302e821a832c95e"
      ],
      "author": {
        "name": "Andreas Gruenbacher",
        "email": "agruen@suse.de",
        "time": "Tue Aug 24 12:58:54 2010 +0200"
      },
      "committer": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Fri Aug 27 19:59:42 2010 -0400"
      },
      "message": "fanotify: Return EPERM when a process is not privileged\n\nThe appropriate error code when privileged operations are denied is\nEPERM, not EACCES.\n\nSigned-off-by: Andreas Gruenbacher \u003cagruen@suse.de\u003e\nSigned-off-by: Eric Paris \u003cparis@paris.rdu.redhat.com\u003e\n"
    },
    {
      "commit": "ff8d6e983185ce19fa92bb836eb52b589957be65",
      "tree": "6b5a8514376d16a7fa1636d0469b47a13086adf7",
      "parents": [
        "2eebf582c9b3106abb9c33f4fc0a347fb9391037"
      ],
      "author": {
        "name": "Tvrtko Ursulin",
        "email": "tvrtko.ursulin@sophos.com",
        "time": "Fri Aug 20 10:24:18 2010 +0100"
      },
      "committer": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Sun Aug 22 20:30:12 2010 -0400"
      },
      "message": "fanotify: drop duplicate pr_debug statement\n\nThis reminded me... you have two pr_debugs in fanotify_should_send_event\nwhich output redundant information. Maybe you intended it like that so\nit is selectable how much log spam you want, or if not you may want to\napply this patch.\n\nSigned-off-by: Tvrtko Ursulin \u003ctvrtko.ursulin@sophos.com\u003e\nSigned-off-by: Eric Paris \u003ceparis@redhat.com\u003e\n"
    },
    {
      "commit": "2eebf582c9b3106abb9c33f4fc0a347fb9391037",
      "tree": "0fab23d7e456713815890fc01a148132b9b857f8",
      "parents": [
        "84e1ab4d875922c034db7f4f814ac445a20a14bd"
      ],
      "author": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Wed Aug 18 12:25:50 2010 -0400"
      },
      "committer": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Sun Aug 22 20:28:16 2010 -0400"
      },
      "message": "fanotify: flush outstanding perm requests on group destroy\n\nWhen an fanotify listener is closing it may cause a deadlock between the\nlistener and the original task doing an fs operation.  If the original task\nis waiting for a permissions response it will be holding the srcu lock.  The\nlistener cannot clean up and exit until after that srcu lock is syncronized.\nThus deadlock.  The fix introduced here is to stop accepting new permissions\nevents when a listener is shutting down and to grant permission for all\noutstanding events.  Thus the original task will eventually release the srcu\nlock and the listener can complete shutdown.\n\nReported-by: Andreas Gruenbacher \u003cagruen@suse.de\u003e\nCc: Andreas Gruenbacher \u003cagruen@suse.de\u003e\nSigned-off-by: Eric Paris \u003ceparis@redhat.com\u003e\n"
    },
    {
      "commit": "84e1ab4d875922c034db7f4f814ac445a20a14bd",
      "tree": "79c5755b8293f69c81e9942eeb54a62a81c9dc4b",
      "parents": [
        "88b2dbdbed551e4e21fdc8c56a15e198c52274e2"
      ],
      "author": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Wed Aug 18 12:25:50 2010 -0400"
      },
      "committer": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Sun Aug 22 20:09:41 2010 -0400"
      },
      "message": "fsnotify: fix ignored mask handling between inode and vfsmount marks\n\nThe interesting 2 list lockstep walking didn\u0027t quite work out if the inode\nmarks only had ignores and the vfsmount list requested events.  The code to\nshortcut list traversal would not run the inode list since it didn\u0027t have real\nevent requests.  This code forces inode list traversal when a vfsmount mark\nmatches the event type.  Maybe we could add an i_fsnotify_ignored_mask field\nto struct inode to get the shortcut back, but it doesn\u0027t seem worth it to grow\nstruct inode again.\n\nI bet with the recent changes to lock the way we do now it would actually not\nbe a major perf hit to just drop i_fsnotify_mark_mask altogether.  But that is\nfor another day.\n\nSigned-off-by: Eric Paris \u003ceparis@redhat.com\u003e\n"
    },
    {
      "commit": "5f3f259fa8f1d7969360acfad5307d03c2f53d63",
      "tree": "f1f781b5ebae2c03d27bd1a36bbd808eab8c7402",
      "parents": [
        "faa9560ae76ef50a3cbfb1a6afc0343fd8172374"
      ],
      "author": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Wed Aug 18 12:25:49 2010 -0400"
      },
      "committer": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Sun Aug 22 20:09:41 2010 -0400"
      },
      "message": "fsnotify: reset used_inode and used_vfsmount on each pass\n\nThe fsnotify main loop has 2 booleans which tell if a particular mark was\nsent to the listeners or if it should be processed in the next pass.  The\nproblem is that the booleans were not reset on each traversal of the loop.\nSo marks could get skipped even when they were not sent to the notifiers.\n\nReported-by: Tvrtko Ursulin \u003ctvrtko.ursulin@sophos.com\u003e\nSigned-off-by: Eric Paris \u003ceparis@redhat.com\u003e\n"
    },
    {
      "commit": "faa9560ae76ef50a3cbfb1a6afc0343fd8172374",
      "tree": "b62dcdece22b214d0e0c75848b4d02b8e9923d0c",
      "parents": [
        "3dc8d7f07e7496c0c6702e7e4b1acc179fa94019"
      ],
      "author": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Wed Aug 18 12:25:49 2010 -0400"
      },
      "committer": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Sun Aug 22 20:09:41 2010 -0400"
      },
      "message": "fanotify: do not dereference inode_mark when it is unset\n\nThe fanotify code is supposed to get the group from the mark.  It accidentally\nonly used the inode_mark.  If the vfsmount_mark was set but not the inode_mark\nit would deref the NULL inode_mark.  Get the group from the correct place.\n\nReported-by: Tvrtko Ursulin \u003ctvrtko.ursulin@sophos.com\u003e\nSigned-off-by: Eric Paris \u003ceparis@redhat.com\u003e\n"
    },
    {
      "commit": "2069601b3f0ea38170d4b509b89f3ca0a373bdc1",
      "tree": "647002d4c3814bd3d95d16ef7edef1757de8554f",
      "parents": [
        "ad41a1e0cab07c5125456e8d38e5b1ab148d04aa"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Aug 12 14:23:04 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Aug 12 14:23:04 2010 -0700"
      },
      "message": "Revert \"fsnotify: store struct file not struct path\"\n\nThis reverts commit 3bcf3860a4ff9bbc522820b4b765e65e4deceb3e (and the\naccompanying commit c1e5c954020e \"vfs/fsnotify: fsnotify_close can delay\nthe final work in fput\" that was a horribly ugly hack to make it work at\nall).\n\nThe \u0027struct file\u0027 approach not only causes that disgusting hack, it\nsomehow breaks pulseaudio, probably due to some other subtlety with\nf_count handling.\n\nFix up various conflicts due to later fsnotify work.\n\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "8c8946f509a494769a8c602b5ed189df01917d39",
      "tree": "dfd96bd6ca5ea6803c6d77f65ba37e04f78b2d3b",
      "parents": [
        "5f248c9c251c60af3403902b26e08de43964ea0b",
        "1968f5eed54ce47bde488fd9a450912e4a2d7138"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Aug 10 11:39:13 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Aug 10 11:39:13 2010 -0700"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.infradead.org/users/eparis/notify\n\n* \u0027for-linus\u0027 of git://git.infradead.org/users/eparis/notify: (132 commits)\n  fanotify: use both marks when possible\n  fsnotify: pass both the vfsmount mark and inode mark\n  fsnotify: walk the inode and vfsmount lists simultaneously\n  fsnotify: rework ignored mark flushing\n  fsnotify: remove global fsnotify groups lists\n  fsnotify: remove group-\u003emask\n  fsnotify: remove the global masks\n  fsnotify: cleanup should_send_event\n  fanotify: use the mark in handler functions\n  audit: use the mark in handler functions\n  dnotify: use the mark in handler functions\n  inotify: use the mark in handler functions\n  fsnotify: send fsnotify_mark to groups in event handling functions\n  fsnotify: Exchange list heads instead of moving elements\n  fsnotify: srcu to protect read side of inode and vfsmount locks\n  fsnotify: use an explicit flag to indicate fsnotify_destroy_mark has been called\n  fsnotify: use _rcu functions for mark list traversal\n  fsnotify: place marks on object in order of group memory address\n  vfs/fsnotify: fsnotify_close can delay the final work in fput\n  fsnotify: store struct file not struct path\n  ...\n\nFix up trivial delete/modify conflict in fs/notify/inotify/inotify.c.\n"
    },
    {
      "commit": "a4ffdde6e56fdf8c34ddadc2674d6eb978083369",
      "tree": "0fa07df92d804cb7d0482135195e4835cb16403a",
      "parents": [
        "b5fc510c48f631882ccec3c0f02a25d5b67de09f"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Jun 02 17:38:30 2010 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Aug 09 16:47:44 2010 -0400"
      },
      "message": "simplify checks for I_CLEAR/I_FREEING\n\nadd I_CLEAR instead of replacing I_FREEING with it.  I_CLEAR is\nequivalent to I_FREEING for almost all code looking at either;\nit\u0027s there to keep track of having called clear_inode() exactly\nonce per inode lifetime, at some point after having set I_FREEING.\nI_CLEAR and I_FREEING never get set at the same time with the\ncurrent code, so we can switch to setting i_flags to I_FREEING | I_CLEAR\ninstead of I_CLEAR without loss of information.  As the result of\nsuch change, checks become simpler and the amount of code that needs\nto know about I_CLEAR shrinks a lot.\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "1968f5eed54ce47bde488fd9a450912e4a2d7138",
      "tree": "bcf13b98fda519c240e89cae3de95fc7d9ece715",
      "parents": [
        "ce8f76fb7320297ccbe7c950fd9a2d727dd6a5a0"
      ],
      "author": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Wed Jul 28 10:18:39 2010 -0400"
      },
      "committer": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Wed Jul 28 10:18:55 2010 -0400"
      },
      "message": "fanotify: use both marks when possible\n\nfanotify currently, when given a vfsmount_mark will look up (if it exists)\nthe corresponding inode mark.  This patch drops that lookup and uses the\nmark provided.\n\nSigned-off-by: Eric Paris \u003ceparis@redhat.com\u003e\n"
    },
    {
      "commit": "ce8f76fb7320297ccbe7c950fd9a2d727dd6a5a0",
      "tree": "fb870e9564bfef438e46ba3c39be2999e246b179",
      "parents": [
        "613a807fe7c793ceb7d6f059773527a5a6c84a96"
      ],
      "author": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Wed Jul 28 10:18:39 2010 -0400"
      },
      "committer": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Wed Jul 28 10:18:54 2010 -0400"
      },
      "message": "fsnotify: pass both the vfsmount mark and inode mark\n\nshould_send_event() and handle_event() will both need to look up the inode\nevent if they get a vfsmount event.  Lets just pass both at the same time\nsince we have them both after walking the lists in lockstep.\n\nSigned-off-by: Eric Paris \u003ceparis@redhat.com\u003e\n"
    },
    {
      "commit": "613a807fe7c793ceb7d6f059773527a5a6c84a96",
      "tree": "d217dbde37c8c0a145c36dea24e7afe5fe5e5ff0",
      "parents": [
        "84a5b68e8da1490906c11129756490a556ae2c19"
      ],
      "author": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Wed Jul 28 10:18:39 2010 -0400"
      },
      "committer": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Wed Jul 28 10:18:54 2010 -0400"
      },
      "message": "fsnotify: walk the inode and vfsmount lists simultaneously\n\nWe currently walk the list of marks on an inode followed by the list of\nmarks on the vfsmount.  These are in order (by the memory address of the\ngroup) so lets walk them both together.  Eventually we can pass both the\ninode mark and the vfsmount mark to helpers simultaneously.\n\nSigned-off-by: Eric Paris \u003ceparis@redhat.com\u003e\n"
    },
    {
      "commit": "84a5b68e8da1490906c11129756490a556ae2c19",
      "tree": "684be31165523f21dc844a6a56e84e23c04dba61",
      "parents": [
        "02436668d98385f5b5d9ffb695a37dadf98ed8a8"
      ],
      "author": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Wed Jul 28 10:18:39 2010 -0400"
      },
      "committer": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Wed Jul 28 10:18:54 2010 -0400"
      },
      "message": "fsnotify: rework ignored mark flushing\n\ncurrently ignored_mark clearing is done in a seperate list traversal\nbefore the actual list traversal to send events.  There is no need for\nthis.  Do them at the same time.\n\nSigned-off-by: Eric Paris \u003ceparis@redhat.com\u003e\n"
    },
    {
      "commit": "02436668d98385f5b5d9ffb695a37dadf98ed8a8",
      "tree": "e0e37328a9ba5c0af49903114fffd82f2141180d",
      "parents": [
        "43709a288ed03aa0e2979ab63dd089b3889645c4"
      ],
      "author": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Wed Jul 28 10:18:39 2010 -0400"
      },
      "committer": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Wed Jul 28 10:18:54 2010 -0400"
      },
      "message": "fsnotify: remove global fsnotify groups lists\n\nThe global fsnotify groups lists were invented as a way to increase the\nperformance of fsnotify by shortcutting events which were not interesting.\nWith the changes to walk the object lists rather than global groups lists\nthese shortcuts are not useful.\n\nSigned-off-by: Eric Paris \u003ceparis@redhat.com\u003e\n"
    },
    {
      "commit": "43709a288ed03aa0e2979ab63dd089b3889645c4",
      "tree": "71717ebf944c099af5ab8ea339889665d4b9ef67",
      "parents": [
        "03930979afa63e079e9aefd4d3dd429240711027"
      ],
      "author": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Wed Jul 28 10:18:39 2010 -0400"
      },
      "committer": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Wed Jul 28 10:18:54 2010 -0400"
      },
      "message": "fsnotify: remove group-\u003emask\n\ngroup-\u003emask is now useless.  It was originally a shortcut for fsnotify to\nsave on performance.  These checks are now redundant, so we remove them.\n\nSigned-off-by: Eric Paris \u003ceparis@redhat.com\u003e\n"
    },
    {
      "commit": "03930979afa63e079e9aefd4d3dd429240711027",
      "tree": "7df0097a8d51b9f71b4f10a0f49e773fb41d9ba5",
      "parents": [
        "2612abb51b11ffd2d75c472b11178115f5808909"
      ],
      "author": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Wed Jul 28 10:18:39 2010 -0400"
      },
      "committer": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Wed Jul 28 10:18:54 2010 -0400"
      },
      "message": "fsnotify: remove the global masks\n\nBecause we walk the object-\u003efsnotify_marks list instead of the global\nfsnotify groups list we don\u0027t need the fsnotify_inode_mask and\nfsnotify_vfsmount_mask as these were simply shortcuts in fsnotify() for\nperformance.  They are now extra checks, rip them out.\n\nSigned-off-by: Eric Paris \u003ceparis@redhat.com\u003e\n"
    },
    {
      "commit": "2612abb51b11ffd2d75c472b11178115f5808909",
      "tree": "5657a07a347984cc1f34117d7ef88af73ea12b60",
      "parents": [
        "0215054f377ce5ac4ffc27b26b13b3f10e6410e6"
      ],
      "author": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Wed Jul 28 10:18:39 2010 -0400"
      },
      "committer": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Wed Jul 28 10:18:53 2010 -0400"
      },
      "message": "fsnotify: cleanup should_send_event\n\nThe change to use srcu and walk the object list rather than the global\nfsnotify_group list means that should_send_event is no longer needed for a\nnumber of groups and can be simplified for others.  Do that.\n\nSigned-off-by: Eric Paris \u003ceparis@redhat.com\u003e\n"
    },
    {
      "commit": "0215054f377ce5ac4ffc27b26b13b3f10e6410e6",
      "tree": "a736317ce8ad2aa1d272a482179f8c0ddc062ae7",
      "parents": [
        "4cd76a47924cd966799402d0f2bba356cde5c1b3"
      ],
      "author": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Wed Jul 28 10:18:38 2010 -0400"
      },
      "committer": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Wed Jul 28 10:18:53 2010 -0400"
      },
      "message": "fanotify: use the mark in handler functions\n\nfanotify now gets a mark in the should_send_event and handle_event\nfunctions.  Rather than look up the mark themselves fanotify should just use\nthe mark it was handed.\n\nSigned-off-by: Eric Paris \u003ceparis@redhat.com\u003e\n"
    },
    {
      "commit": "c496313fcc35a41e176e3f19cdda2544ea3a32a6",
      "tree": "442a90a3a2ac7b7106c3e7ba0583735b17f7153d",
      "parents": [
        "7f6b6117e1803777fcf48fe31bd236a7fbf740db"
      ],
      "author": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Wed Jul 28 10:18:38 2010 -0400"
      },
      "committer": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Wed Jul 28 10:18:53 2010 -0400"
      },
      "message": "dnotify: use the mark in handler functions\n\ndnotify now gets a mark in the should_send_event and handle_event\nfunctions.  Rather than look up the mark themselves dnotify should just use\nthe mark it was handed.\n\nSigned-off-by: Eric Paris \u003ceparis@redhat.com\u003e\n"
    },
    {
      "commit": "7f6b6117e1803777fcf48fe31bd236a7fbf740db",
      "tree": "e86b8bd3a16155447a215a758960092021006311",
      "parents": [
        "3a9b16b407f10b2a771bcae13fb5791e527d6bcf"
      ],
      "author": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Wed Jul 28 10:18:38 2010 -0400"
      },
      "committer": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Wed Jul 28 10:18:52 2010 -0400"
      },
      "message": "inotify: use the mark in handler functions\n\ninotify now gets a mark in the should_send_event and handle_event\nfunctions.  Rather than look up the mark themselves inotify should just use\nthe mark it was handed.\n\nSigned-off-by: Eric Paris \u003ceparis@redhat.com\u003e\n"
    },
    {
      "commit": "3a9b16b407f10b2a771bcae13fb5791e527d6bcf",
      "tree": "0d88cac61bd6d3f5028eb0c9a45e7af9fbd24311",
      "parents": [
        "8778abb9a88fc4a74d8776ffaadf7214cf33c61e"
      ],
      "author": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Wed Jul 28 10:18:38 2010 -0400"
      },
      "committer": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Wed Jul 28 10:18:52 2010 -0400"
      },
      "message": "fsnotify: send fsnotify_mark to groups in event handling functions\n\nWith the change of fsnotify to use srcu walking the marks list instead of\nwalking the global groups list we now know the mark in question.  The code can\nsend the mark to the group\u0027s handling functions and the groups won\u0027t have to\nfind those marks themselves.\n\nSigned-off-by: Eric Paris \u003ceparis@redhat.com\u003e\n"
    },
    {
      "commit": "8778abb9a88fc4a74d8776ffaadf7214cf33c61e",
      "tree": "6a32c8b885e68b3d6035887face6a3c5414d609e",
      "parents": [
        "75c1be487a690db43da2c1234fcacd84c982803c"
      ],
      "author": {
        "name": "Andreas Gruenbacher",
        "email": "agruen@suse.de",
        "time": "Wed Jul 28 10:18:38 2010 -0400"
      },
      "committer": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Wed Jul 28 10:18:52 2010 -0400"
      },
      "message": "fsnotify: Exchange list heads instead of moving elements\n\nInstead of moving list elements from destroy_list to \u0026private_destroy_list,\nexchange the list heads.\n\nSigned-off-by: Andreas Gruenbacher \u003cagruen@suse.de\u003e\nSigned-off-by: Eric Paris \u003ceparis@redhat.com\u003e\n"
    },
    {
      "commit": "75c1be487a690db43da2c1234fcacd84c982803c",
      "tree": "b38ce47f157d3b0eff7ac6eb4756a4b390ac35ae",
      "parents": [
        "700307a29ad61090dcf1d45f8f4a135f5e9211ae"
      ],
      "author": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Wed Jul 28 10:18:38 2010 -0400"
      },
      "committer": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Wed Jul 28 10:18:52 2010 -0400"
      },
      "message": "fsnotify: srcu to protect read side of inode and vfsmount locks\n\nCurrently reading the inode-\u003ei_fsnotify_marks or\nvfsmount-\u003emnt_fsnotify_marks lists are protected by a spinlock on both the\nread and the write side.  This patch protects the read side of those lists\nwith a new single srcu.\n\nSigned-off-by: Eric Paris \u003ceparis@redhat.com\u003e\n"
    },
    {
      "commit": "700307a29ad61090dcf1d45f8f4a135f5e9211ae",
      "tree": "08b7969486c0039495684a6c13bbac3124a40348",
      "parents": [
        "a4c6e9961fcb9da54648d98978d33c6fdcb7bb45"
      ],
      "author": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Wed Jul 28 10:18:38 2010 -0400"
      },
      "committer": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Wed Jul 28 10:18:52 2010 -0400"
      },
      "message": "fsnotify: use an explicit flag to indicate fsnotify_destroy_mark has been called\n\nCurrently fsnotify check is mark-\u003egroup is NULL to decide if\nfsnotify_destroy_mark() has already been called or not.  With the upcoming\nrcu work it is a heck of a lot easier to use an explicit flag than worry\nabout group being set to NULL.\n\nSigned-off-by: Eric Paris \u003ceparis@redhat.com\u003e\n"
    },
    {
      "commit": "a4c6e9961fcb9da54648d98978d33c6fdcb7bb45",
      "tree": "a109069ccd818ce9fd84f1ef1f0234e8452eb317",
      "parents": [
        "0c6532e4e3b0c8bd18dd0a5cc1894a1944997cc6"
      ],
      "author": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Wed Jul 28 10:18:38 2010 -0400"
      },
      "committer": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Wed Jul 28 10:18:51 2010 -0400"
      },
      "message": "fsnotify: use _rcu functions for mark list traversal\n\nIn preparation for srcu locking use all _rcu appropiete functions for mark\nlist addition, removal, and traversal.  The operations are still done under a\nspinlock at the end of this patch.\n\nSigned-off-by: Eric Paris \u003ceparis@redhat.com\u003e\n"
    },
    {
      "commit": "0c6532e4e3b0c8bd18dd0a5cc1894a1944997cc6",
      "tree": "05e9af0efc8018780a45e0c84d8264ceaf359729",
      "parents": [
        "c1e5c954020e123d30b4abf4038ce501861bcf9f"
      ],
      "author": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Wed Jul 28 10:18:38 2010 -0400"
      },
      "committer": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Wed Jul 28 10:18:51 2010 -0400"
      },
      "message": "fsnotify: place marks on object in order of group memory address\n\nfsnotify_marks currently are placed on objects (inodes or vfsmounts) in\narbitrary order.  This patch places them in order of the group memory address.\n\nSigned-off-by: Eric Paris \u003ceparis@redhat.com\u003e\n"
    },
    {
      "commit": "c1e5c954020e123d30b4abf4038ce501861bcf9f",
      "tree": "e8c9071ae4f37464e114fab79deea4716857f7ad",
      "parents": [
        "3bcf3860a4ff9bbc522820b4b765e65e4deceb3e"
      ],
      "author": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Wed Jul 28 10:18:38 2010 -0400"
      },
      "committer": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Wed Jul 28 10:18:51 2010 -0400"
      },
      "message": "vfs/fsnotify: fsnotify_close can delay the final work in fput\n\nfanotify almost works like so:\n\nuser context calls fsnotify_* function with a struct file.\n   fsnotify takes a reference on the struct path\nuser context goes about it\u0027s buissiness\n\nat some later point in time the fsnotify listener gets the struct path\n   fanotify listener calls dentry_open() to create a file which userspace can deal with\n      listener drops the reference on the struct path\nat some later point the listener calls close() on it\u0027s new file\n\nWith the switch from struct path to struct file this presents a problem for\nfput() and fsnotify_close().  fsnotify_close() is called when the filp has\nalready reached 0 and __fput() wants to do it\u0027s cleanup.\n\nThe solution presented here is a bit odd.  If an event is created from a\nstruct file we take a reference on the file.  We check however if the f_count\nwas already 0 and if so we take an EXTRA reference EVEN THOUGH IT WAS ZERO.\nIn __fput() (where we know the f_count hit 0 once) we check if the f_count is\nnon-zero and if so we drop that \u0027extra\u0027 ref and return without destroying the\nfile.\n\nSigned-off-by: Eric Paris \u003ceparis@redhat.com\u003e\n"
    },
    {
      "commit": "3bcf3860a4ff9bbc522820b4b765e65e4deceb3e",
      "tree": "1e235af133559062c6fdee840ff9698f1dee26a6",
      "parents": [
        "f70ab54cc6c3907b0727ba332b3976f80f3846d0"
      ],
      "author": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Wed Jul 28 10:18:37 2010 -0400"
      },
      "committer": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Wed Jul 28 10:18:51 2010 -0400"
      },
      "message": "fsnotify: store struct file not struct path\n\nAl explains that calling dentry_open() with a mnt/dentry pair is only\ngarunteed to be safe if they are already used in an open struct file.  To\nmake sure this is the case don\u0027t store and use a struct path in fsnotify,\nalways use a struct file.\n\nSigned-off-by: Eric Paris \u003ceparis@redhat.com\u003e\n"
    },
    {
      "commit": "f70ab54cc6c3907b0727ba332b3976f80f3846d0",
      "tree": "2a22097325a668a0d08d4ea3354d0e6c95fddd86",
      "parents": [
        "5ba08e2eeb06355f66ed62ae97bb87d145973a9a"
      ],
      "author": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Wed Jul 28 10:18:37 2010 -0400"
      },
      "committer": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Wed Jul 28 10:18:50 2010 -0400"
      },
      "message": "fsnotify: fsnotify_add_notify_event should return an event\n\nRather than the horrific void ** argument and such just to pass the\nfanotify_merge event back to the caller of fsnotify_add_notify_event() have\nthose things return an event if it was different than the event suggusted to\nbe added.\n\nSigned-off-by: Eric Paris \u003ceparis@redhat.com\u003e\n"
    },
    {
      "commit": "5ba08e2eeb06355f66ed62ae97bb87d145973a9a",
      "tree": "4d0b26a125c8805234e0ebb58101bf1c5a75e61e",
      "parents": [
        "80af2588676483ac4e998b5092e9d008dab3ab62"
      ],
      "author": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Wed Jul 28 10:18:37 2010 -0400"
      },
      "committer": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Wed Jul 28 10:18:50 2010 -0400"
      },
      "message": "fsnotify: add pr_debug throughout\n\nIt can be hard to debug fsnotify since there are so few printks.  Use\npr_debug to allow for dynamic debugging.\n\nSigned-off-by: Eric Paris \u003ceparis@redhat.com\u003e\n"
    },
    {
      "commit": "80af2588676483ac4e998b5092e9d008dab3ab62",
      "tree": "6bff012a185f55b27f601e50b2f2ad53e9fc9f63",
      "parents": [
        "20dee624ca40db227aa70cb3f44d2d6cb4fdbab4"
      ],
      "author": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Wed Jul 28 10:18:37 2010 -0400"
      },
      "committer": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Wed Jul 28 10:18:50 2010 -0400"
      },
      "message": "fanotify: groups can specify their f_flags for new fd\n\nCurrently fanotify fds opened for thier listeners are done with f_flags\nequal to O_RDONLY | O_LARGEFILE.  This patch instead takes f_flags from the\nfanotify_init syscall and uses those when opening files in the context of\nthe listener.\n\nSigned-off-by: Eric Paris \u003ceparis@redhat.com\u003e\n"
    },
    {
      "commit": "20dee624ca40db227aa70cb3f44d2d6cb4fdbab4",
      "tree": "527888dd4cda99501b7ac16a3783f57251807c13",
      "parents": [
        "44b350fc23e36e95c8e042b7ded66217ea2b9d72"
      ],
      "author": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Wed Jul 28 10:18:37 2010 -0400"
      },
      "committer": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Wed Jul 28 10:18:50 2010 -0400"
      },
      "message": "fsnotify: check to make sure all fsnotify bits are unique\n\nThis patch adds a check to make sure that all fsnotify bits are unique and we\ncannot accidentally use the same bit for 2 different fsnotify event types.\n\nSigned-off-by: Eric Paris \u003ceparis@redhat.com\u003e\n"
    },
    {
      "commit": "44b350fc23e36e95c8e042b7ded66217ea2b9d72",
      "tree": "590975f1e8690e5555f7c8b45f26ec7fddccddb8",
      "parents": [
        "f874e1ac21d7708464dc656a10312542c54719f1"
      ],
      "author": {
        "name": "Jerome Marchand",
        "email": "jmarchan@redhat.com",
        "time": "Wed Jul 28 10:18:37 2010 -0400"
      },
      "committer": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Wed Jul 28 10:18:49 2010 -0400"
      },
      "message": "inotify: Fix mask checks\n\nThe mask checks in inotify_update_existing_watch() and\ninotify_new_watch() are useless because inotify_arg_to_mask() sets\nFS_IN_IGNORED and FS_EVENT_ON_CHILD bits anyway.\n\nSigned-off-by: Eric Paris \u003ceparis@redhat.com\u003e\n"
    },
    {
      "commit": "f874e1ac21d7708464dc656a10312542c54719f1",
      "tree": "be47a1f5333208647e016f1861eaf21fb963478b",
      "parents": [
        "8c1934c8d70b22ca8333b216aec6c7d09fdbd6a6"
      ],
      "author": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Wed Jul 28 10:18:37 2010 -0400"
      },
      "committer": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Wed Jul 28 10:18:49 2010 -0400"
      },
      "message": "inotify: force inotify and fsnotify use same bits\n\ninotify uses bits called IN_* and fsnotify uses bits called FS_*.  These\nneed to line up.  This patch adds build time checks to make sure noone can\nchange these bits so they are not the same.\n\nSigned-off-by: Eric Paris \u003ceparis@redhat.com\u003e\n"
    },
    {
      "commit": "8c1934c8d70b22ca8333b216aec6c7d09fdbd6a6",
      "tree": "25fffb46e0b1594aa692ed10e755b6ae041022bc",
      "parents": [
        "611da04f7a31b2208e838be55a42c7a1310ae321"
      ],
      "author": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Wed Jul 28 10:18:37 2010 -0400"
      },
      "committer": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Wed Jul 28 10:18:49 2010 -0400"
      },
      "message": "inotify: allow users to request not to recieve events on unlinked children\n\nAn inotify watch on a directory will send events for children even if those\nchildren have been unlinked.  This patch add a new inotify flag IN_EXCL_UNLINK\nwhich allows a watch to specificy they don\u0027t care about unlinked children.\nThis should fix performance problems seen by tasks which add a watch to\n/tmp and then are overrun with events when other processes are reading and\nwriting to unlinked files they created in /tmp.\n\nhttps://bugzilla.kernel.org/show_bug.cgi?id\u003d16296\n\nRequested-by: Matthias Clasen \u003cmclasen@redhat.com\u003e\nSigned-off-by: Eric Paris \u003ceparis@redhat.com\u003e\n"
    },
    {
      "commit": "611da04f7a31b2208e838be55a42c7a1310ae321",
      "tree": "f72cdd659943dbd92eb401de00bab2b21a1eab67",
      "parents": [
        "ff311008ab8d2f2cfdbbefd407d1b05acc8164b2"
      ],
      "author": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Wed Jul 28 10:18:37 2010 -0400"
      },
      "committer": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Wed Jul 28 10:18:49 2010 -0400"
      },
      "message": "inotify: send IN_UNMOUNT events\n\nSince the .31 or so notify rewrite inotify has not sent events about\ninodes which are unmounted.  This patch restores those events.\n\nSigned-off-by: Eric Paris \u003ceparis@redhat.com\u003e\n"
    },
    {
      "commit": "ff311008ab8d2f2cfdbbefd407d1b05acc8164b2",
      "tree": "f6d21c7c5834cd2f84b4ed1281bbaa057c46187c",
      "parents": [
        "e4e047a22058f48544b16728e0f15a3fc12bb0cf"
      ],
      "author": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Wed Jul 28 10:18:37 2010 -0400"
      },
      "committer": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Wed Jul 28 10:18:48 2010 -0400"
      },
      "message": "inotify: fix inotify oneshot support\n\nDuring the large inotify rewrite to fsnotify I completely dropped support\nfor IN_ONESHOT.  Reimplement that support.\n\nSigned-off-by: Eric Paris \u003ceparis@redhat.com\u003e\n"
    },
    {
      "commit": "e4e047a22058f48544b16728e0f15a3fc12bb0cf",
      "tree": "89278b999107ea537ff4d1d6e129035b0edec1ec",
      "parents": [
        "08ae89380a8210a9965d04083e1de78cb8bca4b1"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Thu May 20 01:36:28 2010 +1000"
      },
      "committer": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Wed Jul 28 09:59:03 2010 -0400"
      },
      "message": "fsnotify: update gfp/slab.h includes\n\nImplicit slab.h inclusion via percpu.h is about to go away.  Make sure\ngfp.h or slab.h is included as necessary.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nCc: Stephen Rothwell \u003csfr@canb.auug.org.au\u003e\nCc: Eric Paris \u003ceparis@redhat.com\u003e\nSigned-off-by: Eric Paris \u003ceparis@redhat.com\u003e\n"
    },
    {
      "commit": "08ae89380a8210a9965d04083e1de78cb8bca4b1",
      "tree": "95ef9493b5a6152e7c683d2d5a8531844530f0f7",
      "parents": [
        "269ed32a9ce00132b9372e9c00014532e054d6b2"
      ],
      "author": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Thu May 27 09:41:40 2010 -0400"
      },
      "committer": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Wed Jul 28 09:59:03 2010 -0400"
      },
      "message": "fanotify: drop the useless priority argument\n\nThe priority argument in fanotify is useless.  Kill it.\n\nSigned-off-by: Eric Paris \u003ceparis@redhat.com\u003e\n"
    },
    {
      "commit": "269ed32a9ce00132b9372e9c00014532e054d6b2",
      "tree": "8a5870e0ce17d92c9437c3e79c2ff535652b9de2",
      "parents": [
        "0a24887afacefbe2c44e0eee4150b43959a60665"
      ],
      "author": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Thu May 27 09:29:37 2010 -0400"
      },
      "committer": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Wed Jul 28 09:59:03 2010 -0400"
      },
      "message": "fanotify: default Kconfig to n\n\nfanotify has default to y in linux-next since it\u0027s inception but default to\nn in the final push to Linus.\n\nSigned-off-by: Eric Paris \u003ceparis@redhat.com\u003e\n"
    },
    {
      "commit": "0a24887afacefbe2c44e0eee4150b43959a60665",
      "tree": "3d703177948eb345379b93751d343d798c6e33cf",
      "parents": [
        "fb1cfb88c8597d847553f39efc2bbd41c72c5f50"
      ],
      "author": {
        "name": "H Hartley Sweeten",
        "email": "hartleys@visionengravers.com",
        "time": "Fri May 14 15:35:21 2010 -0500"
      },
      "committer": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Wed Jul 28 09:59:02 2010 -0400"
      },
      "message": "inotify_user.c: make local symbol static\n\nThe symbol inotify_max_user_watches is not used outside this\nfile and should be static.\n\nSigned-off-by: H Hartley Sweeten \u003chsweeten@visionengravers.com\u003e\nCc: John McCutchan \u003cjohn@johnmccutchan.com\u003e\nCc: Robert Love \u003crlove@rlove.org\u003e\nCc: Eric Paris \u003ceparis@parisplace.org\u003e\nSigned-off-by: Eric Paris \u003ceparis@redhat.com\u003e\n"
    },
    {
      "commit": "b31d397e430a90cbe9d3656929a7d5f96e986666",
      "tree": "bafe176811479d922e2f19f4386f34a11a30c39f",
      "parents": [
        "98b5c10d320adfa250c1c18f3ccaec2f78e5e11d"
      ],
      "author": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Wed Apr 21 16:49:38 2010 -0400"
      },
      "committer": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Wed Jul 28 09:59:02 2010 -0400"
      },
      "message": "fsnotify: call iput on inodes when no longer marked\n\nfsnotify takes an igrab on an inode when it adds a mark.  The code was\nsupposed to drop the reference when the mark was removed but didn\u0027t.\nThis caused problems when an fs was unmounted because those inodes would\nclearly not be gone.  Thus resulting in the most devistating of messages:\n\nVFS: Busy inodes after unmount of loop0. Self-destruct in 5 seconds.\n\u003e\u003e\u003e Have a nice day...\n\nJiri Slaby bisected the problem to a patch in the fsnotify tree.  The\ncode snippets below show my stupidity quite clearly.\n\nvoid fsnotify_destroy_inode_mark(struct fsnotify_mark *mark)\n{\n\t...\n\tmark-\u003einode \u003d NULL;\n\t...\n}\n\nvoid fsnotify_destroy_mark(struct fsnotify_mark *mark)\n{\n\tstruct inode *inode \u003d NULL;\n\t...\n\tif (mark-\u003eflags \u0026 FSNOTIFY_MARK_FLAG_INODE) {\n\t\tfsnotify_destroy_inode_mark(mark);\n\t\tinode \u003d mark-\u003ei.inode;\n\t}\n\t...\n\tif (inode)\n\t\tiput(inode);\n\t...\n}\n\nObviously the intent was to capture the inode before it was set to NULL in\nfsnotify_destory_inode_mark() so we wouldn\u0027t be leaking inodes forever.\nInstead we leaked them (and exploded on umount)\n\nReported-by: Jiri Slaby \u003cjirislaby@gmail.com\u003e\nSigned-off-by: Eric Paris \u003ceparis@redhat.com\u003e\n"
    },
    {
      "commit": "98b5c10d320adfa250c1c18f3ccaec2f78e5e11d",
      "tree": "7ca8ca16bea8b514cd416fddb012108e8b74e83a",
      "parents": [
        "8860f060e473dce1a0873d92105d536f72b05908"
      ],
      "author": {
        "name": "Jean-Christophe Dubois",
        "email": "jcd@tribudubois.net",
        "time": "Tue Mar 23 08:08:09 2010 +0100"
      },
      "committer": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Wed Jul 28 09:59:02 2010 -0400"
      },
      "message": "fanotify: do not always return 0 in fsnotify\n\nIt seems to me you are always returning 0 in fsnotify, when you should return\nthe error (EPERM) returned by fanotify.\n\nSigned-off-by: Jean-Christophe DUBOIS \u003cjcd@tribudubois.net\u003e\nSigned-off-by: Eric Paris \u003ceparis@redhat.com\u003e\n"
    },
    {
      "commit": "8860f060e473dce1a0873d92105d536f72b05908",
      "tree": "38f3d1f49a921ba28fec88d1046acbf2207bd831",
      "parents": [
        "b2d879096ac799722e6017ee82c0586f0d101c9c"
      ],
      "author": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Wed Dec 23 00:10:25 2009 -0500"
      },
      "committer": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Wed Jul 28 09:59:02 2010 -0400"
      },
      "message": "fanotify: do not return 0 in a void function\n\nremove_access_response() is supposed to have a void return, but was\nreturning 0;\n\nReported-by: Stephen Rothwell \u003csfr@canb.auug.org.au\u003e\nSigned-off-by: Eric Paris \u003ceparis@redhat.com\u003e\n"
    },
    {
      "commit": "b2d879096ac799722e6017ee82c0586f0d101c9c",
      "tree": "3628e99772d2bf51ce736a775a056bffaae44e8c",
      "parents": [
        "9e66e4233db9c7e31e9ee706be2c9ddd54cf99b3"
      ],
      "author": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Thu Dec 17 21:24:34 2009 -0500"
      },
      "committer": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Wed Jul 28 09:59:02 2010 -0400"
      },
      "message": "fanotify: userspace interface for permission responses\n\nfanotify groups need to respond to events which include permissions types.\nTo do so groups will send a response using write() on the fanotify_fd they\nhave open.\n\nSigned-off-by: Eric Paris \u003ceparis@redhat.com\u003e\n"
    },
    {
      "commit": "9e66e4233db9c7e31e9ee706be2c9ddd54cf99b3",
      "tree": "9d778b358fb6e5f02fb2cf634c2163f34982b7dd",
      "parents": [
        "c4ec54b40d33f8016fea970a383cc584dd0e6019"
      ],
      "author": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Thu Dec 17 21:24:34 2009 -0500"
      },
      "committer": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Wed Jul 28 09:59:02 2010 -0400"
      },
      "message": "fanotify: permissions and blocking\n\nThis is the backend work needed for fanotify to support the new\nFS_OPEN_PERM and FS_ACCESS_PERM fsnotify events.  This is done using the\nnew fsnotify secondary queue.  No userspace interface is provided actually\nrespond to or request these events.\n\nSigned-off-by: Eric Paris \u003ceparis@redhat.com\u003e\n"
    },
    {
      "commit": "c4ec54b40d33f8016fea970a383cc584dd0e6019",
      "tree": "8e8865170cf340d1e79dc379f56417588715b2c8",
      "parents": [
        "d14f1729483fad3a8817fbbcbd017678b7d1ad26"
      ],
      "author": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Thu Dec 17 21:24:34 2009 -0500"
      },
      "committer": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Wed Jul 28 09:59:01 2010 -0400"
      },
      "message": "fsnotify: new fsnotify hooks and events types for access decisions\n\nintroduce a new fsnotify hook, fsnotify_perm(), which is called from the\nsecurity code.  This hook is used to allow fsnotify groups to make access\ncontrol decisions about events on the system.  We also must change the\ngeneric fsnotify function to return an error code if we intend these hooks\nto be in any way useful.\n\nSigned-off-by: Eric Paris \u003ceparis@redhat.com\u003e\n"
    },
    {
      "commit": "59b0df211bd9699d7e0d01fcf9345a149f75b033",
      "tree": "0f6e8bebfa090aa5c1d91d9efc5c2b04aeeed05c",
      "parents": [
        "43ed7e16a8b47059d7f6ff67ba76f383a2421de3"
      ],
      "author": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Mon Feb 08 12:53:52 2010 -0500"
      },
      "committer": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Wed Jul 28 09:59:01 2010 -0400"
      },
      "message": "fsnotify: use unsigned char * for dentry-\u003ed_name.name\n\nfsnotify was using char * when it passed around the d_name.name string\ninternally but it is actually an unsigned char *.  This patch switches\nfsnotify to use unsigned and should silence some pointer signess warnings\nwhich have popped out of xfs.  I do not add -Wpointer-sign to the fsnotify\ncode as there are still issues with kstrdup and strlen which would pop\nout needless warnings.\n\nSigned-off-by: Eric Paris \u003ceparis@redhat.com\u003e\n"
    },
    {
      "commit": "43ed7e16a8b47059d7f6ff67ba76f383a2421de3",
      "tree": "be4efb3c2241572ab3954b86e287c9e7d58a5e7e",
      "parents": [
        "6e5f77b32e9097a8a68a8d453799676cacf70cad"
      ],
      "author": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Thu Dec 17 21:24:34 2009 -0500"
      },
      "committer": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Wed Jul 28 09:59:01 2010 -0400"
      },
      "message": "fanotify: use merge argument to determine actual event added to queue\n\nfanotify needs to know the actual event added to queues so it can be\ncorrectly checked for return values from userspace.  To do this we need to\npass that information from the merger code back to the main even handling\nroutine.  Currently that information is unused, but it will be.\n\nSigned-off-by: Eric Paris \u003ceparis@redhat.com\u003e\n"
    },
    {
      "commit": "6e5f77b32e9097a8a68a8d453799676cacf70cad",
      "tree": "2a0211ecd5d79648e74fdf9f851a0669c5e4cc8a",
      "parents": [
        "cb2d429faf2cae62d3c51e28099a181d5fe8c244"
      ],
      "author": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Thu Dec 17 21:24:34 2009 -0500"
      },
      "committer": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Wed Jul 28 09:59:01 2010 -0400"
      },
      "message": "fsnotify: intoduce a notification merge argument\n\nEach group can define their own notification (and secondary_q) merge\nfunction.  Inotify does tail drop, fanotify does matching and drop which\ncan actually allocate a completely new event.  But for fanotify to properly\ndeal with permissions events it needs to know the new event which was\nultimately added to the notification queue.  This patch just implements a\nvoid ** argument which is passed to the merge function.  fanotify can use\nthis field to pass the new event back to higher layers.\n\nSigned-off-by: Eric Paris \u003ceparis@redhat.com\u003e\nfor fanotify to properly deal with permissions events\n"
    },
    {
      "commit": "cb2d429faf2cae62d3c51e28099a181d5fe8c244",
      "tree": "401bc8d85e7228f868775269e6d97c3150f9a3a7",
      "parents": [
        "4d92604cc90aa18bbbe0f6e23b7a9fdb612836d3"
      ],
      "author": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Thu Dec 17 21:24:34 2009 -0500"
      },
      "committer": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Wed Jul 28 09:59:01 2010 -0400"
      },
      "message": "fsnotify: add group priorities\n\nThis introduces an ordering to fsnotify groups.  With purely asynchronous\nnotification based \"things\" implementing fsnotify (inotify, dnotify) ordering\nisn\u0027t particularly important.  But if people want to use fsnotify for the\nbasis of sycronous notification or blocking notification ordering becomes\nimportant.\n\neg. A Hierarchical Storage Management listener would need to get its event\nbefore an AV scanner could get its event (since the HSM would need to\nbring the data in for the AV scanner to scan.)  Typically asynchronous notification\nwould want to run after the AV scanner made any relevant access decisions\nso as to not send notification about an event that was denied.\n\nSigned-off-by: Eric Paris \u003ceparis@redhat.com\u003e\n"
    },
    {
      "commit": "4d92604cc90aa18bbbe0f6e23b7a9fdb612836d3",
      "tree": "c04b26fb38a8524fa5e204cb9e40870afa9823f9",
      "parents": [
        "c9778a98e7440fb73e0d27b8155a688663a0d493"
      ],
      "author": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Thu Dec 17 21:24:34 2009 -0500"
      },
      "committer": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Wed Jul 28 09:59:00 2010 -0400"
      },
      "message": "fanotify: clear all fanotify marks\n\nfanotify listeners may want to clear all marks.  They may want to do this\nto destroy all of their inode marks which have nothing but ignores.\nRealistically this is useful for av vendors who update policy and want to\nclear all of their cached allows.\n\nSigned-off-by: Eric Paris \u003ceparis@redhat.com\u003e\n"
    },
    {
      "commit": "c9778a98e7440fb73e0d27b8155a688663a0d493",
      "tree": "838acd5f9438661015c32211d487ef618807a798",
      "parents": [
        "c908370fc1ac27fd7e1fc0f34c693047b26564ce"
      ],
      "author": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Thu Dec 17 21:24:33 2009 -0500"
      },
      "committer": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Wed Jul 28 09:59:00 2010 -0400"
      },
      "message": "fanotify: allow ignored_masks to survive modify\n\nSome users may want to truely ignore an inode even if it has been modified.\nSay you are wanting a mount which contains a log file and you really don\u0027t\nwant any notification about that file.  This patch allows the listener to\ndo that.\n\nSigned-off-by: Eric Paris \u003ceparis@redhat.com\u003e\n"
    },
    {
      "commit": "c908370fc1ac27fd7e1fc0f34c693047b26564ce",
      "tree": "681cc398050764d04d34652c072790b8c1851d3e",
      "parents": [
        "e898386146deb49a0b45ff1887d9da149c003209"
      ],
      "author": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Thu Dec 17 21:24:33 2009 -0500"
      },
      "committer": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Wed Jul 28 09:59:00 2010 -0400"
      },
      "message": "fsnotify: allow ignored_mask to survive modification\n\nSome inodes a group may want to never hear about a set of events even if\nthe inode is modified.  We add a new mark flag which indicates that these\nmarks should not have their ignored_mask cleared on modification.\n\nSigned-off-by: Eric Paris \u003ceparis@redhat.com\u003e\n"
    },
    {
      "commit": "e898386146deb49a0b45ff1887d9da149c003209",
      "tree": "6238ddb50919383139e7937c75a21524faacf03d",
      "parents": [
        "b9e4e3bd0495fea9e8f8e712889c9cd8ffa43c94"
      ],
      "author": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Thu Dec 17 21:24:33 2009 -0500"
      },
      "committer": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Wed Jul 28 09:59:00 2010 -0400"
      },
      "message": "fsnotify: clear ignored mask on modify\n\nOn inode modification we clear the ignored mask for all of the marks on the\ninode.  This allows userspace to ignore accesses to inodes until there is\nsomething different.\n\nSigned-off-by: Eric Paris \u003ceparis@redhat.com\u003e\n"
    },
    {
      "commit": "b9e4e3bd0495fea9e8f8e712889c9cd8ffa43c94",
      "tree": "914a16f5098cf0ee3e01e6d47e6c7c9bf3613899",
      "parents": [
        "32a4df13b88afef2a7d869bb7586a7beba90961f"
      ],
      "author": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Thu Dec 17 21:24:33 2009 -0500"
      },
      "committer": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Wed Jul 28 09:59:00 2010 -0400"
      },
      "message": "fanotify: allow users to set an ignored_mask\n\nChange the sys_fanotify_mark() system call so users can set ignored_masks\non inodes.  Remember, if a user new sets a real mask, and only sets ignored\nmasks, the ignore will never be pinned in memory.  Thus ignored_masks can\nbe lost under memory pressure and the user may again get events they\npreviously thought were ignored.\n\nSigned-off-by: Eric Paris \u003ceparis@redhat.com\u003e\n"
    },
    {
      "commit": "32a4df13b88afef2a7d869bb7586a7beba90961f",
      "tree": "851f113874bd627725f2596750bb6437d9b228f1",
      "parents": [
        "33af5e32e0bb73c704b5e156f4411cdb53e6cc59"
      ],
      "author": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Thu Dec 17 21:24:33 2009 -0500"
      },
      "committer": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Wed Jul 28 09:59:00 2010 -0400"
      },
      "message": "fanotify: ignored_mask to ignore events\n\nWhen fanotify receives an event it will check event-\u003emask \u0026 ~ignored_mask.\nIf no bits are left the event will not be sent.\n\nSigned-off-by: Eric Paris \u003ceparis@redhat.com\u003e\n"
    },
    {
      "commit": "33af5e32e0bb73c704b5e156f4411cdb53e6cc59",
      "tree": "c427a66b81498c14598ed4161e3646930a805043",
      "parents": [
        "90b1e7a57880fb66437ab7db39e1e65ca0372822"
      ],
      "author": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Thu Dec 17 21:24:33 2009 -0500"
      },
      "committer": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Wed Jul 28 09:59:00 2010 -0400"
      },
      "message": "fsnotify: ignored_mask - excluding notification\n\nThe ignored_mask is a new mask which is part of fsnotify marks.  A group\u0027s\nshould_send_event() function can use the ignored mask to determine that\ncertain events are not of interest.  In particular if a group registers a\nmask including FS_OPEN on a vfsmount they could add FS_OPEN to the\nignored_mask for individual inodes and not send open events for those\ninodes.\n\nSigned-off-by: Eric Paris \u003ceparis@redhat.com\u003e\n"
    },
    {
      "commit": "90b1e7a57880fb66437ab7db39e1e65ca0372822",
      "tree": "61b7195c84d9dfd057ed3dcb07c5fc831db6a3a9",
      "parents": [
        "33d3dfff451a2ab6fe2f6aaabed9b24e91aad109"
      ],
      "author": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Thu Dec 17 21:24:33 2009 -0500"
      },
      "committer": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Wed Jul 28 09:58:59 2010 -0400"
      },
      "message": "fsnotify: allow marks to not pin inodes in core\n\ninotify marks must pin inodes in core.  dnotify doesn\u0027t technically need to\nsince they are closed when the directory is closed.  fanotify also need to\npin inodes in core as it works today.  But the next step is to introduce\nthe concept of \u0027ignored masks\u0027 which is actually a mask of events for an\ninode of no interest.  I claim that these should be liberally sent to the\nkernel and should not pin the inode in core.  If the inode is brought back\nin the listener will get an event it may have thought excluded, but this is\nnot a serious situation and one any listener should deal with.\n\nThis patch lays the ground work for non-pinning inode marks by using lazy\ninode pinning.  We do not pin a mark until it has a non-zero mask entry.  If a\nlistener new sets a mask we never pin the inode.\n\nSigned-off-by: Eric Paris \u003ceparis@redhat.com\u003e\n"
    },
    {
      "commit": "33d3dfff451a2ab6fe2f6aaabed9b24e91aad109",
      "tree": "a947ac296cdd30035ef1901fcd99f87756479f07",
      "parents": [
        "88380fe66e0ac22529f5426ab27d67da00ed2628"
      ],
      "author": {
        "name": "Andreas Gruenbacher",
        "email": "agruen@suse.de",
        "time": "Thu Dec 17 21:24:29 2009 -0500"
      },
      "committer": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Wed Jul 28 09:58:59 2010 -0400"
      },
      "message": "fanotify: remove outgoing function checks in fanotify.h\n\nA number of validity checks on outgoing data are done in static inlines but\nare only used in one place.  Instead just do them where they are used for\nreadability.\n\nSigned-off-by: Andreas Gruenbacher \u003cagruen@suse.de\u003e\nSigned-off-by: Eric Paris \u003ceparis@redhat.com\u003e\n"
    },
    {
      "commit": "88380fe66e0ac22529f5426ab27d67da00ed2628",
      "tree": "2585cd0b8407263628696476be7aa4f5b7d24a1b",
      "parents": [
        "f3640192c0a177506ec08ab07ed3178b912574da"
      ],
      "author": {
        "name": "Andreas Gruenbacher",
        "email": "agruen@suse.de",
        "time": "Thu Dec 17 21:24:29 2009 -0500"
      },
      "committer": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Wed Jul 28 09:58:59 2010 -0400"
      },
      "message": "fanotify: remove fanotify.h declarations\n\nfanotify_mark_validate functions are all needlessly declared in headers as\nstatic inlines.  Instead just do the checks where they are needed for code\nreadability.\n\nSigned-off-by: Andreas Gruenbacher \u003cagruen@suse.de\u003e\nSigned-off-by: Eric Paris \u003ceparis@redhat.com\u003e\n"
    },
    {
      "commit": "f3640192c0a177506ec08ab07ed3178b912574da",
      "tree": "cbea6c5163a02b154b7077238c3e056e79bfe668",
      "parents": [
        "eac8e9e80ccbd30801b7b76a2ee4c6c5a681e53c"
      ],
      "author": {
        "name": "Andreas Gruenbacher",
        "email": "agruen@suse.de",
        "time": "Thu Dec 17 21:24:29 2009 -0500"
      },
      "committer": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Wed Jul 28 09:58:59 2010 -0400"
      },
      "message": "fanotify: split fanotify_remove_mark\n\nsplit fanotify_remove_mark into fanotify_remove_inode_mark and\nfanotify_remove_vfsmount_mark.\n\nSigned-off-by: Andreas Gruenbacher \u003cagruen@suse.de\u003e\nSigned-off-by: Eric Paris \u003ceparis@redhat.com\u003e\n"
    },
    {
      "commit": "eac8e9e80ccbd30801b7b76a2ee4c6c5a681e53c",
      "tree": "c88fd90edfcf388d03d369c141683c4086b819dc",
      "parents": [
        "0ff21db9fcc39042b814dad8a4b7508710a75235"
      ],
      "author": {
        "name": "Andreas Gruenbacher",
        "email": "agruen@suse.de",
        "time": "Thu Dec 17 21:24:29 2009 -0500"
      },
      "committer": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Wed Jul 28 09:58:59 2010 -0400"
      },
      "message": "fanotify: rename FAN_MARK_ON_VFSMOUNT to FAN_MARK_MOUNT\n\nthe term \u0027vfsmount\u0027 isn\u0027t sensicle to userspace.  instead call is \u0027mount.\n\nSigned-off-by: Andreas Gruenbacher \u003cagruen@suse.de\u003e\nSigned-off-by: Eric Paris \u003ceparis@redhat.com\u003e\n"
    },
    {
      "commit": "0ff21db9fcc39042b814dad8a4b7508710a75235",
      "tree": "a650b240f64893f86626b8b4a4b694446190aa3a",
      "parents": [
        "90dd201d1ab064512078a77762a793e0bf5f3040"
      ],
      "author": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Thu Dec 17 21:24:29 2009 -0500"
      },
      "committer": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Wed Jul 28 09:58:59 2010 -0400"
      },
      "message": "fanotify: hooks the fanotify_mark syscall to the vfsmount code\n\nCreate a new fanotify_mark flag which indicates we should attach the mark\nto the vfsmount holding the object referenced by dfd and pathname rather\nthan the inode itself.\n\nSigned-off-by: Eric Paris \u003ceparis@redhat.com\u003e\n"
    },
    {
      "commit": "90dd201d1ab064512078a77762a793e0bf5f3040",
      "tree": "23da2eabf9d2b5182ef831bf043189b5a1c1b371",
      "parents": [
        "52202dfbd9107787dc68a2019cc7be4e79f52e5c"
      ],
      "author": {
        "name": "Andreas Gruenbacher",
        "email": "agruen@suse.de",
        "time": "Thu Dec 17 21:24:28 2009 -0500"
      },
      "committer": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Wed Jul 28 09:58:58 2010 -0400"
      },
      "message": "fanotify: remove fanotify_add_mark\n\nfanotify_add_mark now does nothing useful anymore, drop it.\n\nSigned-off-by: Andreas Gruenbacher \u003cagruen@suse.de\u003e\nSigned-off-by: Eric Paris \u003ceparis@redhat.com\u003e\n"
    },
    {
      "commit": "52202dfbd9107787dc68a2019cc7be4e79f52e5c",
      "tree": "58643c1d6b9d7cb3f1b5648396cd8aabd8ee5ef8",
      "parents": [
        "912ee3946c5e57de0d05baf3b60b65ce6bf3ff96"
      ],
      "author": {
        "name": "Andreas Gruenbacher",
        "email": "agruen@suse.de",
        "time": "Thu Dec 17 21:24:28 2009 -0500"
      },
      "committer": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Wed Jul 28 09:58:58 2010 -0400"
      },
      "message": "fanotify: do not return pointer from fanotify_add_*_mark\n\nNo need to return the mark from fanotify_add_*_mark to fanotify_add_mark\n\nSigned-off-by: Andreas Gruenbacher \u003cagruen@suse.de\u003e\nSigned-off-by: Eric Paris \u003ceparis@redhat.com\u003e\n"
    },
    {
      "commit": "912ee3946c5e57de0d05baf3b60b65ce6bf3ff96",
      "tree": "e6b9c6f4ab5f513e088159a2aa759e3f225559e7",
      "parents": [
        "088b09b0ac7a866a35962eeaea5d5607bd1840b7"
      ],
      "author": {
        "name": "Andreas Gruenbacher",
        "email": "agruen@suse.de",
        "time": "Thu Dec 17 21:24:28 2009 -0500"
      },
      "committer": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Wed Jul 28 09:58:58 2010 -0400"
      },
      "message": "fanotify: do not call fanotify_update_object_mask in fanotify_add_mark\n\nRecalculate masks in fanotify_add_mark, don\u0027t use\nfanotify_update_object_mask.  This gets us one step closers to readable\ncode.\n\nSigned-off-by: Andreas Gruenbacher \u003cagruen@suse.de\u003e\nSigned-off-by: Eric Paris \u003ceparis@redhat.com\u003e\n"
    },
    {
      "commit": "088b09b0ac7a866a35962eeaea5d5607bd1840b7",
      "tree": "9028cacd5ef98f34abeaa8fb68289745e0aaba20",
      "parents": [
        "c6223f464927cab9f4b10169b78c51d84228faf8"
      ],
      "author": {
        "name": "Andreas Gruenbacher",
        "email": "agruen@suse.de",
        "time": "Thu Dec 17 21:24:28 2009 -0500"
      },
      "committer": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Wed Jul 28 09:58:58 2010 -0400"
      },
      "message": "fanotify: do not call fanotify_update_object_mask in fanotify_remove_mark\n\nRecalculate masks in fanotify_remove_mark, don\u0027t use\nfanotify_update_object_mask.  This gets us one step closers to readable\ncode.\n\nSigned-off-by: Andreas Gruenbacher \u003cagruen@suse.de\u003e\nSigned-off-by: Eric Paris \u003ceparis@redhat.com\u003e\n"
    },
    {
      "commit": "c6223f464927cab9f4b10169b78c51d84228faf8",
      "tree": "464c653708f753a4969658929eaf223d938cd30b",
      "parents": [
        "88826276dcaf4cef9cc7c2695ff15c6d20d4a74d"
      ],
      "author": {
        "name": "Andreas Gruenbacher",
        "email": "agruen@suse.de",
        "time": "Thu Dec 17 21:24:28 2009 -0500"
      },
      "committer": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Wed Jul 28 09:58:58 2010 -0400"
      },
      "message": "fanotify: remove fanotify_update_mark\n\nfanotify_update_mark() doesn\u0027t do much useful;  remove it.\n\nSigned-off-by: Andreas Gruenbacher \u003cagruen@suse.de\u003e\nSigned-off-by: Eric Paris \u003ceparis@redhat.com\u003e\n"
    },
    {
      "commit": "88826276dcaf4cef9cc7c2695ff15c6d20d4a74d",
      "tree": "bb90774f639a1b69546e8f0504a8e9c76582de94",
      "parents": [
        "1c529063a3e4c15eaae28db31326a7aaab7091b5"
      ],
      "author": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Thu Dec 17 21:24:28 2009 -0500"
      },
      "committer": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Wed Jul 28 09:58:57 2010 -0400"
      },
      "message": "fanotify: infrastructure to add an remove marks on vfsmounts\n\ninfrastructure work to add and remove marks on vfsmounts.  This should get\nevery set up except wiring the functions to the syscalls.\n\nSigned-off-by: Eric Paris \u003ceparis@redhat.com\u003e\n"
    },
    {
      "commit": "1c529063a3e4c15eaae28db31326a7aaab7091b5",
      "tree": "100a27418becd6c23eeb1b7c4426fea006d6bfd6",
      "parents": [
        "ca9c726eea013394d1e846331b117effb21ead83"
      ],
      "author": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Thu Dec 17 21:24:28 2009 -0500"
      },
      "committer": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Wed Jul 28 09:58:57 2010 -0400"
      },
      "message": "fanotify: should_send_event needs to handle vfsmounts\n\ncurrently should_send_event in fanotify only cares about marks on inodes.\nThis patch extends that interface to indicate that it cares about events\nthat happened on vfsmounts.\n\nSigned-off-by: Eric Paris \u003ceparis@redhat.com\u003e\n"
    },
    {
      "commit": "ca9c726eea013394d1e846331b117effb21ead83",
      "tree": "de2319fb43b4fa16d07ecbcd75022cdaf9a757e1",
      "parents": [
        "0d48b7f01f442bc88a69aa98f3b6b015f2817608"
      ],
      "author": {
        "name": "Andreas Gruenbacher",
        "email": "agruen@suse.de",
        "time": "Thu Dec 17 21:24:27 2009 -0500"
      },
      "committer": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Wed Jul 28 09:58:57 2010 -0400"
      },
      "message": "fsnotify: Infrastructure for per-mount watches\n\nPer-mount watches allow groups to listen to fsnotify events on an entire\nmount.  This patch simply adds and initializes the fields needed in the\nvfsmount struct to make this happen.\n\nSigned-off-by: Andreas Gruenbacher \u003cagruen@suse.de\u003e\nSigned-off-by: Eric Paris \u003ceparis@redhat.com\u003e\n"
    },
    {
      "commit": "0d48b7f01f442bc88a69aa98f3b6b015f2817608",
      "tree": "6b484d9b8ac355609e9b2783169ed584cc365f9a",
      "parents": [
        "2504c5d63b811b71bbaa8d5d5af163e698f4df1f"
      ],
      "author": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Thu Dec 17 21:24:27 2009 -0500"
      },
      "committer": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Wed Jul 28 09:58:57 2010 -0400"
      },
      "message": "fsnotify: vfsmount marks generic functions\n\nMuch like inode-mark.c has all of the code dealing with marks on inodes\nthis patch adds a vfsmount-mark.c which has similar code but is intended\nfor marks on vfsmounts.\n\nSigned-off-by: Eric Paris \u003ceparis@redhat.com\u003e\n"
    },
    {
      "commit": "2504c5d63b811b71bbaa8d5d5af163e698f4df1f",
      "tree": "4ff736af6b00fd5cbf0cd6a4d6bbcadb6dde9bd8",
      "parents": [
        "ba643f04cdda170215c8820acd3e201936fc512d"
      ],
      "author": {
        "name": "Andreas Gruenbacher",
        "email": "agruen@suse.de",
        "time": "Thu Dec 17 21:24:27 2009 -0500"
      },
      "committer": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Wed Jul 28 09:58:57 2010 -0400"
      },
      "message": "fsnotify/vfsmount: add fsnotify fields to struct vfsmount\n\nThis patch adds the list and mask fields needed to support vfsmount marks.\nThese are the same fields fsnotify needs on an inode.  They are not used,\njust declared and we note where the cleanup hook should be (the function is\nnot yet defined)\n\nSigned-off-by: Andreas Gruenbacher \u003cagruen@suse.de\u003e\nSigned-off-by: Eric Paris \u003ceparis@redhat.com\u003e\n"
    },
    {
      "commit": "ba643f04cdda170215c8820acd3e201936fc512d",
      "tree": "ad871aa57096cd228f666405f370170f70b26968",
      "parents": [
        "5444e2981c31d0ed7465475e451b8437084337e5"
      ],
      "author": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Thu Dec 17 21:24:27 2009 -0500"
      },
      "committer": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Wed Jul 28 09:58:57 2010 -0400"
      },
      "message": "fsnotify: clear marks to 0 in fsnotify_init_mark\n\nCurrently fsnotify_init_mark sets some fields to 0/NULL.  Some users\nalready used some sorts of zalloc, some didn\u0027t.  This patch uses memset to\nexplicitly zero everything in the fsnotify_mark when it is initialized so we\ndon\u0027t have to be careful if fields are later added to marks.\n\nSigned-off-by: Eric Paris \u003ceparis@redhat.com\u003e\n"
    },
    {
      "commit": "5444e2981c31d0ed7465475e451b8437084337e5",
      "tree": "66b6d84b7aab886b44a3467a139d258d9aba09df",
      "parents": [
        "32c3263221bd63316815286dccacdc7abfd7f3c4"
      ],
      "author": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Thu Dec 17 21:24:27 2009 -0500"
      },
      "committer": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Wed Jul 28 09:58:57 2010 -0400"
      },
      "message": "fsnotify: split generic and inode specific mark code\n\ncurrently all marking is done by functions in inode-mark.c.  Some of this\nis pretty generic and should be instead done in a generic function and we\nshould only put the inode specific code in inode-mark.c\n\nSigned-off-by: Eric Paris \u003ceparis@redhat.com\u003e\n"
    },
    {
      "commit": "32c3263221bd63316815286dccacdc7abfd7f3c4",
      "tree": "9dad12d5b966cf42d7506e10fb2e3c8d955415d3",
      "parents": [
        "22aa425dec9e47051624714ae283eb2b6a473013"
      ],
      "author": {
        "name": "Andreas Gruenbacher",
        "email": "agruen@suse.de",
        "time": "Thu Dec 17 21:24:27 2009 -0500"
      },
      "committer": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Wed Jul 28 09:58:56 2010 -0400"
      },
      "message": "fanotify: Add pids to events\n\nPass the process identifiers of the triggering processes to fanotify\nlisteners: this information is useful for event filtering and logging.\n\nSigned-off-by: Andreas Gruenbacher \u003cagruen@suse.de\u003e\nSigned-off-by: Eric Paris \u003ceparis@redhat.com\u003e\n"
    },
    {
      "commit": "22aa425dec9e47051624714ae283eb2b6a473013",
      "tree": "6412e7241a30f3ce151ff29314d3a39190b8dae7",
      "parents": [
        "9bbfc964b89009d0cadcec7027afc92ee742e95e"
      ],
      "author": {
        "name": "Andreas Gruenbacher",
        "email": "agruen@suse.de",
        "time": "Thu Dec 17 21:24:26 2009 -0500"
      },
      "committer": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Wed Jul 28 09:58:56 2010 -0400"
      },
      "message": "fanotify: create_fd cleanup\n\nCode cleanup which does the fd creation work seperately from the userspace\nmetadata creation.  It fits better with the other code.\n\nSigned-off-by: Andreas Gruenbacher \u003cagruen@suse.de\u003e\nSigned-off-by: Eric Paris \u003ceparis@redhat.com\u003e\n"
    },
    {
      "commit": "9bbfc964b89009d0cadcec7027afc92ee742e95e",
      "tree": "9dceb71cd3d744ec2c295edbb2542adf9b8d803f",
      "parents": [
        "ef601a9cfd21fe9ce57e0ee3f4a31552ffb96366"
      ],
      "author": {
        "name": "Heiko Carstens",
        "email": "heiko.carstens@de.ibm.com",
        "time": "Thu Dec 17 21:24:26 2009 -0500"
      },
      "committer": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Wed Jul 28 09:58:56 2010 -0400"
      },
      "message": "fanotify: CONFIG_HAVE_SYSCALL_WRAPPERS for sys_fanotify_mark\n\nPlease note that you need the patch below in addition, otherwise the\nsyscall wrapper stuff won\u0027t work on those 32 bit architectures which enable\nthe wrappers.\n\nWhen enabled the syscall wrapper defines always take long parameters and then\ncast them to whatever is needed. This approach doesn\u0027t work for the 32 bit\ncase where the original syscall takes a long long parameter, since we would\nlose the upper 32 bits.\nSo syscalls with 64 bit arguments are special cases wrt to syscall wrappers\nand enp up in the ugliness below (see also sys_fallocate). In addition these\nspecial cased syscall wrappers have the drawback that ftrace syscall tracing\ndoesn\u0027t work on them, since they don\u0027t get defined by using the usual macros.\n\nSigned-off-by: Eric Paris \u003ceparis@redhat.com\u003e\n"
    },
    {
      "commit": "ef601a9cfd21fe9ce57e0ee3f4a31552ffb96366",
      "tree": "6b268bba6e0bb4ef09f634519a13233c10cb2a5a",
      "parents": [
        "a1014f102322398e67524b68b3300acf384e6c1f"
      ],
      "author": {
        "name": "Paul Mundt",
        "email": "lethal@linux-sh.org",
        "time": "Thu Dec 17 21:24:26 2009 -0500"
      },
      "committer": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Wed Jul 28 09:58:56 2010 -0400"
      },
      "message": "fanotify: select ANON_INODES.\n\nfanotify references anon_inode_getfd(), which is only available with\nANON_INODES enabled. Presently this bails out with the following:\n\n  LD      vmlinux\nfs/built-in.o: In function `sys_fanotify_init\u0027:\n(.text+0x26d1c): undefined reference to `anon_inode_getfd\u0027\nmake: *** [vmlinux] Error 1\n\nwhich is trivially corrected by adding an ANON_INODES select.\n\nSigned-off-by: Paul Mundt \u003clethal@linux-sh.org\u003e\nSigned-off-by: Eric Paris \u003ceparis@redhat.com\u003e\n"
    },
    {
      "commit": "a1014f102322398e67524b68b3300acf384e6c1f",
      "tree": "2d9d82e6a3d84bae796e4aedfd8be3409be6a4c3",
      "parents": [
        "2a3edf86040a7e15684525a2aadc29f532c51325"
      ],
      "author": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Thu Dec 17 21:24:26 2009 -0500"
      },
      "committer": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Wed Jul 28 09:58:56 2010 -0400"
      },
      "message": "fanotify: send events using read\n\nSend events to userspace by reading the file descriptor from fanotify_init().\nOne will get blocks of data which look like:\n\nstruct fanotify_event_metadata {\n\t__u32 event_len;\n\t__u32 vers;\n\t__s32 fd;\n\t__u64 mask;\n\t__s64 pid;\n\t__u64 cookie;\n} __attribute__ ((packed));\n\nSimple code to retrieve and deal with events is below\n\n\twhile ((len \u003d read(fan_fd, buf, sizeof(buf))) \u003e 0) {\n\t\tstruct fanotify_event_metadata *metadata;\n\n\t\tmetadata \u003d (void *)buf;\n\t\twhile(FAN_EVENT_OK(metadata, len)) {\n\t\t\t[PROCESS HERE!!]\n\t\t\tif (metadata-\u003efd \u003e\u003d 0 \u0026\u0026 close(metadata-\u003efd) !\u003d 0)\n\t\t\t\tgoto fail;\n\t\t\tmetadata \u003d FAN_EVENT_NEXT(metadata, len);\n\t\t}\n\t}\n\nSigned-off-by: Eric Paris \u003ceparis@redhat.com\u003e\n"
    },
    {
      "commit": "2a3edf86040a7e15684525a2aadc29f532c51325",
      "tree": "cf0a5436139125d054fe46b75d5388c914b22c21",
      "parents": [
        "bbaa4168b2d2d8cc674e6d35806e8426aef464b8"
      ],
      "author": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Thu Dec 17 21:24:26 2009 -0500"
      },
      "committer": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Wed Jul 28 09:58:56 2010 -0400"
      },
      "message": "fanotify: fanotify_mark syscall implementation\n\nNAME\n\tfanotify_mark - add, remove, or modify an fanotify mark on a\nfilesystem object\n\nSYNOPSIS\n\tint fanotify_mark(int fanotify_fd, unsigned int flags, u64 mask,\n\t\t\t  int dfd, const char *pathname)\n\nDESCRIPTION\n\tfanotify_mark() is used to add remove or modify a mark on a filesystem\n\tobject.  Marks are used to indicate that the fanotify group is\n\tinterested in events which occur on that object.  At this point in\n\ttime marks may only be added to files and directories.\n\n\tfanotify_fd must be a file descriptor returned by fanotify_init()\n\n\tThe flags field must contain exactly one of the following:\n\n\tFAN_MARK_ADD - or the bits in mask and ignored mask into the mark\n\tFAN_MARK_REMOVE - bitwise remove the bits in mask and ignored mark\n\t\tfrom the mark\n\n\tThe following values can be OR\u0027d into the flags field:\n\n\tFAN_MARK_DONT_FOLLOW - same meaning as O_NOFOLLOW as described in open(2)\n\tFAN_MARK_ONLYDIR - same meaning as O_DIRECTORY as described in open(2)\n\n\tdfd may be any of the following:\n\tAT_FDCWD: the object will be lookup up based on pathname similar\n\t\tto open(2)\n\n\tfile descriptor of a directory: if pathname is not NULL the\n\t\tobject to modify will be lookup up similar to openat(2)\n\n\tfile descriptor of the final object: if pathname is NULL the\n\t\tobject to modify will be the object referenced by dfd\n\n\tThe mask is the bitwise OR of the set of events of interest such as:\n\tFAN_ACCESS\t\t- object was accessed (read)\n\tFAN_MODIFY\t\t- object was modified (write)\n\tFAN_CLOSE_WRITE\t\t- object was writable and was closed\n\tFAN_CLOSE_NOWRITE\t- object was read only and was closed\n\tFAN_OPEN\t\t- object was opened\n\tFAN_EVENT_ON_CHILD\t- interested in objected that happen to\n\t\t\t\t  children.  Only relavent when the object\n\t\t\t\t  is a directory\n\tFAN_Q_OVERFLOW\t\t- event queue overflowed (not implemented)\n\nRETURN VALUE\n\tOn success, this system call returns 0. On error, -1 is\n\treturned, and errno is set to indicate the error.\n\nERRORS\n\tEINVAL An invalid value was specified in flags.\n\n\tEINVAL An invalid value was specified in mask.\n\n\tEINVAL An invalid value was specified in ignored_mask.\n\n\tEINVAL fanotify_fd is not a file descriptor as returned by\n\tfanotify_init()\n\n\tEBADF fanotify_fd is not a valid file descriptor\n\n\tEBADF dfd is not a valid file descriptor and path is NULL.\n\n\tENOTDIR dfd is not a directory and path is not NULL\n\n\tEACCESS no search permissions on some part of the path\n\n\tENENT file not found\n\n\tENOMEM Insufficient kernel memory is available.\n\nCONFORMING TO\n\tThese system calls are Linux-specific.\n\nSigned-off-by: Eric Paris \u003ceparis@redhat.com\u003e\n"
    },
    {
      "commit": "bbaa4168b2d2d8cc674e6d35806e8426aef464b8",
      "tree": "de2a601befc44628fc19766a3081bf2e3b73da7a",
      "parents": [
        "52c923dd079df49f58016a9e56df184b132611d6"
      ],
      "author": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Thu Dec 17 21:24:26 2009 -0500"
      },
      "committer": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Wed Jul 28 09:58:55 2010 -0400"
      },
      "message": "fanotify: sys_fanotify_mark declartion\n\nThis patch simply declares the new sys_fanotify_mark syscall\n\nint fanotify_mark(int fanotify_fd, unsigned int flags, u64_mask,\n\t\t  int dfd const char *pathname)\n\nSigned-off-by: Eric Paris \u003ceparis@redhat.com\u003e\n"
    },
    {
      "commit": "52c923dd079df49f58016a9e56df184b132611d6",
      "tree": "29263174337bd3c2b99a7c9452e8e0708635432b",
      "parents": [
        "11637e4b7dc098e9a863f0a619d55ebc60f5949e"
      ],
      "author": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Thu Dec 17 21:24:26 2009 -0500"
      },
      "committer": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Wed Jul 28 09:58:55 2010 -0400"
      },
      "message": "fanotify: fanotify_init syscall implementation\n\nNAME\n\tfanotify_init - initialize an fanotify group\n\nSYNOPSIS\n\tint fanotify_init(unsigned int flags, unsigned int event_f_flags, int priority);\n\nDESCRIPTION\n\tfanotify_init() initializes a new fanotify instance and returns a file\n\tdescriptor associated with the new fanotify event queue.\n\n\tThe following values can be OR\u0027d into the flags field:\n\n\tFAN_NONBLOCK Set the O_NONBLOCK file status flag on the new open file description.\n\t\tUsing this flag saves extra calls to fcntl(2) to achieve the same\n\t\tresult.\n\n\tFAN_CLOEXEC Set the close-on-exec (FD_CLOEXEC) flag on the new file descriptor.\n\t\tSee the description of the O_CLOEXEC flag in open(2) for reasons why\n\t\tthis may be useful.\n\n\tThe event_f_flags argument is unused and must be set to 0\n\n\tThe priority argument is unused and must be set to 0\n\nRETURN VALUE\n\tOn success, this system call return a new file descriptor. On error, -1 is\n\treturned, and errno is set to indicate the error.\n\nERRORS\n\tEINVAL An invalid value was specified in flags.\n\n\tEINVAL A non-zero valid was passed in event_f_flags or in priority\n\n\tENFILE The system limit on the total number of file descriptors has been reached.\n\n\tENOMEM Insufficient kernel memory is available.\n\nCONFORMING TO\n\tThese system calls are Linux-specific.\n\nSigned-off-by: Eric Paris \u003ceparis@redhat.com\u003e\n"
    },
    {
      "commit": "11637e4b7dc098e9a863f0a619d55ebc60f5949e",
      "tree": "a32682575f35dfb2bf5dc0012e488b939e56d388",
      "parents": [
        "9dced01a0939f3e952eca8c21427ceec1f473dcf"
      ],
      "author": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Thu Dec 17 21:24:25 2009 -0500"
      },
      "committer": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Wed Jul 28 09:58:55 2010 -0400"
      },
      "message": "fanotify: fanotify_init syscall declaration\n\nThis patch defines a new syscall fanotify_init() of the form:\n\nint sys_fanotify_init(unsigned int flags, unsigned int event_f_flags,\n\t\t      unsigned int priority)\n\nThis syscall is used to create and fanotify group.  This is very similar to\nthe inotify_init() syscall.\n\nSigned-off-by: Eric Paris \u003ceparis@redhat.com\u003e\n"
    },
    {
      "commit": "9dced01a0939f3e952eca8c21427ceec1f473dcf",
      "tree": "10eab41808fd16d7db9b6737bccf30fb53eb4faa",
      "parents": [
        "a12a7dd3284f5644326af1ea53b35030f205dd29"
      ],
      "author": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Thu Dec 17 21:24:25 2009 -0500"
      },
      "committer": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Wed Jul 28 09:58:55 2010 -0400"
      },
      "message": "fanotify: do not clone on merge unless needed\n\nCurrently if 2 events are going to be merged on the notication queue with\ndifferent masks the second event will be cloned and will replace the first\nevent.  However if this notification queue is the only place referencing\nthe event in question there is no reason not to just update the event in\nplace.  We can tell this if the event-\u003erefcnt \u003d\u003d 1.  Since we hold a\nreference for each queue this event is on we know that when refcnt \u003d\u003d 1\nthis is the only queue.  The other concern is that it might be about to be\nadded to a new queue, but this can\u0027t be the case since fsnotify holds a\nreference on the event until it is finished adding it to queues.\n\nSigned-off-by: Eric Paris \u003ceparis@redhat.com\u003e\n"
    },
    {
      "commit": "a12a7dd3284f5644326af1ea53b35030f205dd29",
      "tree": "a43423deb6e7111c6c39d65a6ac74152cd9e0b31",
      "parents": [
        "767cd46c332d1360cdbe46ef18d80c3ade06fdc1"
      ],
      "author": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Thu Dec 17 21:24:25 2009 -0500"
      },
      "committer": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Wed Jul 28 09:58:55 2010 -0400"
      },
      "message": "fanotify: merge notification events with different masks\n\nInstead of just merging fanotify events if they are exactly the same, merge\nnotification events with different masks.  To do this we have to clone the\nold event, update the mask in the new event with the new merged mask, and\nput the new event in place of the old event.\n\nSigned-off-by: Eric Paris \u003ceparis@redhat.com\u003e\n"
    },
    {
      "commit": "767cd46c332d1360cdbe46ef18d80c3ade06fdc1",
      "tree": "e3868f28587ca44efd10b30aa4230ff54d09f567",
      "parents": [
        "ff0b16a9850e8a240ad59e10b0a1291a8fcf7cbc"
      ],
      "author": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Thu Dec 17 21:24:25 2009 -0500"
      },
      "committer": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Wed Jul 28 09:58:54 2010 -0400"
      },
      "message": "fanotify:drop notification if they exist in the outgoing queue\n\nfanotify listeners get an open file descriptor to the object in question so\nthe ordering of operations is not as important as in other notification\nsystems.  inotify will drop events if the last event in the event FIFO is\nthe same as the current event.  This patch will drop fanotify events if\nthey are the same as another event anywhere in the event FIFO.\n\nSigned-off-by: Eric Paris \u003ceparis@redhat.com\u003e\n"
    },
    {
      "commit": "ff0b16a9850e8a240ad59e10b0a1291a8fcf7cbc",
      "tree": "fe6fad578cfb2b8528828d4f77e5494542a1fb34",
      "parents": [
        "12ed2e36c98aec6c41559222e311f4aa15d254b6"
      ],
      "author": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Thu Dec 17 21:24:25 2009 -0500"
      },
      "committer": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Wed Jul 28 09:58:54 2010 -0400"
      },
      "message": "fanotify: fscking all notification system\n\nfanotify is a novel file notification system which bases notification on\ngiving userspace both an event type (open, close, read, write) and an open\nfile descriptor to the object in question.  This should address a number of\nraces and problems with other notification systems like inotify and dnotify\nand should allow the future implementation of blocking or access controlled\nnotification.  These are useful for on access scanners or hierachical storage\nmanagement schemes.\n\nThis patch just implements the basics of the fsnotify functions.\n\nSigned-off-by: Eric Paris \u003ceparis@redhat.com\u003e\n"
    },
    {
      "commit": "35566087099c3ff8901d65ee98af56347ee66e5a",
      "tree": "e4e56bcf787e5f100fa1ea0138c417e1203b10ae",
      "parents": [
        "ef5e2b785fb3216269e6d0656d38ec286b98dbe5"
      ],
      "author": {
        "name": "Andreas Gruenbacher",
        "email": "agruen@suse.de",
        "time": "Thu Dec 17 21:24:25 2009 -0500"
      },
      "committer": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Wed Jul 28 09:58:54 2010 -0400"
      },
      "message": "fsnotify: take inode-\u003ei_lock inside fsnotify_find_mark_entry()\n\nAll callers to fsnotify_find_mark_entry() except one take and\nrelease inode-\u003ei_lock around the call.  Take the lock inside\nfsnotify_find_mark_entry() instead.\n\nSigned-off-by: Andreas Gruenbacher \u003cagruen@suse.de\u003e\nSigned-off-by: Eric Paris \u003ceparis@redhat.com\u003e\n"
    },
    {
      "commit": "ef5e2b785fb3216269e6d0656d38ec286b98dbe5",
      "tree": "6adf1f49a217c77e9ab28a5c57d1ed2c150008a8",
      "parents": [
        "000285deb99a5e0636fdd3c6a2483a5d039ee2c2"
      ],
      "author": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Thu Dec 17 21:24:24 2009 -0500"
      },
      "committer": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Wed Jul 28 09:58:54 2010 -0400"
      },
      "message": "dnotify: rename mark_entry to mark\n\nnomenclature change.  Used to call things \u0027entries\u0027 but now we just call\nthem \u0027marks.\u0027  Do those changes for dnotify.\n\nSigned-off-by: Eric Paris \u003ceparis@redhat.com\u003e\n"
    },
    {
      "commit": "000285deb99a5e0636fdd3c6a2483a5d039ee2c2",
      "tree": "45b13f2253265703a540bdd99685f4f56ac8e21b",
      "parents": [
        "841bdc10f573aa010dd5818d35a5690b7d9f73ce"
      ],
      "author": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Thu Dec 17 21:24:24 2009 -0500"
      },
      "committer": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Wed Jul 28 09:58:54 2010 -0400"
      },
      "message": "inotify: rename mark_entry to just mark\n\nrename anything in inotify that deals with mark_entry to just be mark.  It\nmakes a lot more sense.\n\nSigned-off-by: Eric Paris \u003ceparis@redhat.com\u003e\n"
    },
    {
      "commit": "841bdc10f573aa010dd5818d35a5690b7d9f73ce",
      "tree": "58ef7a15e24ac07d3af7c6db7306199c9392f7dd",
      "parents": [
        "d07754412f9cdc2f4a99318d5ee81ace6715ea99"
      ],
      "author": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Thu Dec 17 21:24:24 2009 -0500"
      },
      "committer": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Wed Jul 28 09:58:53 2010 -0400"
      },
      "message": "fsnotify: rename mark_entry to just mark\n\npreviously I used mark_entry when talking about marks on inodes.  The\n_entry is pretty useless.  Just use \"mark\" instead.\n\nSigned-off-by: Eric Paris \u003ceparis@redhat.com\u003e\n"
    },
    {
      "commit": "d07754412f9cdc2f4a99318d5ee81ace6715ea99",
      "tree": "f62902ad420de023c0fad931d9508903a9f42e3b",
      "parents": [
        "e61ce86737b4d60521e4e71f9892fe4bdcfb688b"
      ],
      "author": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Thu Dec 17 21:24:24 2009 -0500"
      },
      "committer": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Wed Jul 28 09:58:53 2010 -0400"
      },
      "message": "fsnotify: rename fsnotify_find_mark_entry to fsnotify_find_mark\n\nthe _entry portion of fsnotify functions is useless.  Drop it.\n\nSigned-off-by: Eric Paris \u003ceparis@redhat.com\u003e\n"
    },
    {
      "commit": "e61ce86737b4d60521e4e71f9892fe4bdcfb688b",
      "tree": "a1aba411504ac028d4ead6f28ca05bd024c74142",
      "parents": [
        "72acc854427948efed7a83da27f7dc3239ac9afc"
      ],
      "author": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Thu Dec 17 21:24:24 2009 -0500"
      },
      "committer": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Wed Jul 28 09:58:53 2010 -0400"
      },
      "message": "fsnotify: rename fsnotify_mark_entry to just fsnotify_mark\n\nThe name is long and it serves no real purpose.  So rename\nfsnotify_mark_entry to just fsnotify_mark.\n\nSigned-off-by: Eric Paris \u003ceparis@redhat.com\u003e\n"
    },
    {
      "commit": "72acc854427948efed7a83da27f7dc3239ac9afc",
      "tree": "69a8f479a644701a52abe07d7bf2751cdf4cc159",
      "parents": [
        "098cf2fc77ee190c92bf9d08d69a13305f2487ec"
      ],
      "author": {
        "name": "Andreas Gruenbacher",
        "email": "agruen@suse.de",
        "time": "Thu Dec 17 21:24:24 2009 -0500"
      },
      "committer": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Wed Jul 28 09:58:53 2010 -0400"
      },
      "message": "fsnotify: kill FSNOTIFY_EVENT_FILE\n\nSome fsnotify operations send a struct file.  This is more information than\nwe technically need.  We instead send a struct path in all cases instead of\nsometimes a path and sometimes a file.\n\nSigned-off-by: Andreas Gruenbacher \u003cagruen@suse.de\u003e\nSigned-off-by: Eric Paris \u003ceparis@redhat.com\u003e\n"
    },
    {
      "commit": "098cf2fc77ee190c92bf9d08d69a13305f2487ec",
      "tree": "f6727bf583df63edb751e2887d40287b3bd37809",
      "parents": [
        "4136510dd61a1ca151fc5b9d8c1ebd5a8ce2e8f4"
      ],
      "author": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Thu Dec 17 21:24:24 2009 -0500"
      },
      "committer": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Wed Jul 28 09:58:52 2010 -0400"
      },
      "message": "fsnotify: add flags to fsnotify_mark_entries\n\nTo differentiate between inode and vfsmount (or other future) types of\nmarks we add a flags field and set the inode bit on inode marks (the only\ncurrently supported type of mark)\n\nSigned-off-by: Eric Paris \u003ceparis@redhat.com\u003e\n"
    },
    {
      "commit": "2823e04de4f1a49087b58ff2bb8f61361ffd9321",
      "tree": "0467ddf513cfb9ec76f3fe498bdc9b5084008c84",
      "parents": [
        "3a9fb89f4cd04c23e16397befba92efb5d989b74"
      ],
      "author": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Thu Dec 17 21:24:23 2009 -0500"
      },
      "committer": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Wed Jul 28 09:58:52 2010 -0400"
      },
      "message": "fsnotify: put inode specific fields in an fsnotify_mark in a union\n\nThe addition of marks on vfs mounts will be simplified if the inode\nspecific parts of a mark and the vfsmnt specific parts of a mark are\nactually in a union so naming can be easy.  This patch just implements the\ninode struct and the union.\n\nSigned-off-by: Eric Paris \u003ceparis@redhat.com\u003e\n"
    }
  ],
  "next": "3a9fb89f4cd04c23e16397befba92efb5d989b74"
}
