)]}'
{
  "log": [
    {
      "commit": "0fb85621df4f9f7c663c6c77c302e821a832c95e",
      "tree": "b5bcb8e79ad6197ba161dbf9687755bb281b83aa",
      "parents": [
        "ff8d6e983185ce19fa92bb836eb52b589957be65"
      ],
      "author": {
        "name": "Tvrtko Ursulin",
        "email": "tvrtko.ursulin@sophos.com",
        "time": "Fri Aug 20 10:02:15 2010 +0100"
      },
      "committer": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Fri Aug 27 19:54:09 2010 -0400"
      },
      "message": "fanotify: resize pid and reorder structure\n\nresize pid and reorder the fanotify_event_metadata so it is naturally\naligned and we can work towards dropping the packed attributed\n\nSigned-off-by: Tvrtko Ursulin \u003ctvrtko.ursulin@sophos.com\u003e\nCc: Andreas Dilger \u003cadilger@dilger.ca\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": "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": "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": "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": "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": "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": "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": "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": "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": "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"
    }
  ]
}
