)]}'
{
  "log": [
    {
      "commit": "60063497a95e716c9a689af3be2687d261f115b4",
      "tree": "6ce0d68db76982c53df46aee5f29f944ebf2c320",
      "parents": [
        "148817ba092f9f6edd35bad3c6c6b8e8f90fe2ed"
      ],
      "author": {
        "name": "Arun Sharma",
        "email": "asharma@fb.com",
        "time": "Tue Jul 26 16:09:06 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jul 26 16:49:47 2011 -0700"
      },
      "message": "atomic: use \u003clinux/atomic.h\u003e\n\nThis allows us to move duplicated code in \u003casm/atomic.h\u003e\n(atomic_inc_not_zero() for now) to \u003clinux/atomic.h\u003e\n\nSigned-off-by: Arun Sharma \u003casharma@fb.com\u003e\nReviewed-by: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: David Miller \u003cdavem@davemloft.net\u003e\nCc: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nAcked-by: Mike Frysinger \u003cvapier@gentoo.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\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": "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": "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": "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": "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": "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": "7131485a93679ff9a543b74df280cfd119eb03ca",
      "tree": "d5d635cb37f77ef7ff8942e15de4c45f3fded940",
      "parents": [
        "4ca763523e040dc61191d4866a82981a5d30a4e9"
      ],
      "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: mount point listeners list and global mask\n\ncurrently all of the notification systems implemented select which inodes\nthey care about and receive messages only about those inodes (or the\nchildren of those inodes.)  This patch begins to flesh out fsnotify support\nfor the concept of listeners that want to hear notification for an inode\naccessed below a given monut point.  This patch implements a second list\nof fsnotify groups to hold these types of groups and a second global mask\nto hold the events of interest for this type of group.\n\nThe reason we want a second group list and mask is because the inode based\nnotification should_send_event support which makes each group look for a mark\non the given inode.  With one nfsmount listener that means that every group would\nhave to take the inode-\u003ei_lock, look for their mark, not find one, and return\nfor every operation.   By seperating vfsmount from inode listeners only when\nthere is a inode listener will the inode groups have to look for their\nmark and take the inode lock.  vfsmount listeners will have to grab the lock and\nlook for a mark but there should be fewer of them, and one vfsmount listener\nwon\u0027t cause the i_lock to be grabbed and released for every fsnotify group\non every io operation.\n\nSigned-off-by: Eric Paris \u003ceparis@redhat.com\u003e\n"
    },
    {
      "commit": "4ca763523e040dc61191d4866a82981a5d30a4e9",
      "tree": "9b02105e7c84853dd89eff16837a9b7fba2a1050",
      "parents": [
        "36fddebaa8a9186d4f5817ab798a83400b2fb2e7"
      ],
      "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:51 2010 -0400"
      },
      "message": "fsnotify: add groups to fsnotify_inode_groups when registering inode watch\n\nCurrently all fsnotify groups are added immediately to the\nfsnotify_inode_groups list upon creation.  This means, even groups with no\nwatches (common for audit) will be on the global tracking list and will\nget checked for every event.  This patch adds groups to the global list on\nwhen the first inode mark is added to the group.\n\nSigned-of-by: Eric Paris \u003ceparis@redhat.com\u003e\n"
    },
    {
      "commit": "36fddebaa8a9186d4f5817ab798a83400b2fb2e7",
      "tree": "5fea41060cada4826677c12b7d4afa747841b124",
      "parents": [
        "19c2a0e1a2f60112c158342ba5f568f72b741c2c"
      ],
      "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:51 2010 -0400"
      },
      "message": "fsnotify: initialize the group-\u003enum_marks in a better place\n\nCurrently the comments say that group-\u003enum_marks is held because the group\nis on the fsnotify_group list.  This isn\u0027t strictly the case, we really\njust hold the num_marks for the life of the group (any time group-\u003erefcnt\nis !\u003d 0)  This patch moves the initialization stuff and makes it clear when\nit is really being held.\n\nSigned-off-by: Eric Paris \u003ceparis@redhat.com\u003e\n"
    },
    {
      "commit": "19c2a0e1a2f60112c158342ba5f568f72b741c2c",
      "tree": "807520e66657e25420389c376cccaf5ca283f346",
      "parents": [
        "0d2e2a1d00d7d23e5bd9bb0935cde7c3d5835c56"
      ],
      "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:51 2010 -0400"
      },
      "message": "fsnotify: rename fsnotify_groups to fsnotify_inode_groups\n\nSimple renaming patch.  fsnotify is about to support mount point listeners\nso I am renaming fsnotify_groups and fsnotify_mask to indicate these are lists\nused only for groups which have watches on inodes.\n\nSigned-off-by: Eric Paris \u003ceparis@redhat.com\u003e\n"
    },
    {
      "commit": "0d2e2a1d00d7d23e5bd9bb0935cde7c3d5835c56",
      "tree": "1c6bbbcbb143a364838d6749aa086af3c019f965",
      "parents": [
        "220d14df0dc587c06b97762829a41157c9375b94"
      ],
      "author": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Thu Dec 17 21:24:22 2009 -0500"
      },
      "committer": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Wed Jul 28 09:58:51 2010 -0400"
      },
      "message": "fsnotify: drop mask argument from fsnotify_alloc_group\n\nNothing uses the mask argument to fsnotify_alloc_group.  This patch drops\nthat argument.\n\nSigned-off-by: Eric Paris \u003ceparis@redhat.com\u003e\n"
    },
    {
      "commit": "ffab83402f01555a5fa32efb48a4dd0ce8d12ef5",
      "tree": "4e02fa7422becb56e6ed4b8721f8b0fb3a867d44",
      "parents": [
        "cd7752ce7cac5184ca35aecebffafae9662570bc"
      ],
      "author": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Thu Dec 17 21:24:22 2009 -0500"
      },
      "committer": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Wed Jul 28 09:58:50 2010 -0400"
      },
      "message": "fsnotify: fsnotify_obtain_group should be fsnotify_alloc_group\n\nfsnotify_obtain_group was intended to be able to find an already existing\ngroup.  Nothing uses that functionality.  This just renames it to\nfsnotify_alloc_group so it is clear what it is doing.\n\nSigned-off-by: Eric Paris \u003ceparis@redhat.com\u003e\n"
    },
    {
      "commit": "cd7752ce7cac5184ca35aecebffafae9662570bc",
      "tree": "42c1d6af6bb0992345e2cb9ca87190fbce35d6f8",
      "parents": [
        "74be0cc82835aecad332a29896b0f212ba893403"
      ],
      "author": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Thu Dec 17 21:24:22 2009 -0500"
      },
      "committer": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Wed Jul 28 09:58:50 2010 -0400"
      },
      "message": "fsnotify: fsnotify_obtain_group kzalloc cleanup\n\nfsnotify_obtain_group uses kzalloc but then proceedes to set things to 0.\nThis patch just deletes those useless lines.\n\nSigned-off-by: Eric Paris \u003ceparis@redhat.com\u003e\n"
    },
    {
      "commit": "74be0cc82835aecad332a29896b0f212ba893403",
      "tree": "eaae59c73ba52ff8cab8ee845e989d9877603f4c",
      "parents": [
        "cac69dad32899c6f4c66bb4f9baf69b0d3c7d3d1"
      ],
      "author": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Thu Dec 17 21:24:22 2009 -0500"
      },
      "committer": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Wed Jul 28 09:58:50 2010 -0400"
      },
      "message": "fsnotify: remove group_num altogether\n\nThe original fsnotify interface has a group-num which was intended to be\nable to find a group after it was added.  I no longer think this is a\nnecessary thing to do and so we remove the group_num.\n\nSigned-off-by: Eric Paris \u003ceparis@redhat.com\u003e\n"
    },
    {
      "commit": "f0553af054d31f48a75fddd3ef8beb5c39715019",
      "tree": "023a3505df93755f0726ab4ba0dff456ff68c88b",
      "parents": [
        "31ddd3268dcb6c1d70e9930a83be43bf86e4bf17"
      ],
      "author": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Thu Dec 17 20:12:06 2009 -0500"
      },
      "committer": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Wed Jul 28 09:58:20 2010 -0400"
      },
      "message": "fsnotify: kzalloc fsnotify groups\n\nUse kzalloc for fsnotify_groups so that none of the fields can leak any\ninformation accidentally.\n\nSigned-off-by: Eric Paris \u003ceparis@redhat.com\u003e\n"
    },
    {
      "commit": "a2d8bc6cb4a3024661baf877242f123787d0c054",
      "tree": "4ff3f93877a8992d5383c14fb6012ab9b1954660",
      "parents": [
        "3c5119c05d624f95f4967d16b38c9624b816bdb9"
      ],
      "author": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Thu May 21 17:01:37 2009 -0400"
      },
      "committer": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Thu Jun 11 14:57:53 2009 -0400"
      },
      "message": "fsnotify: generic notification queue and waitq\n\ninotify needs to do asyc notification in which event information is stored\non a queue until the listener is ready to receive it.  This patch\nimplements a generic notification queue for inotify (and later fanotify) to\nstore events to be sent at a later time.\n\nSigned-off-by: Eric Paris \u003ceparis@redhat.com\u003e\nAcked-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nCc: Christoph Hellwig \u003chch@lst.de\u003e\n"
    },
    {
      "commit": "3be25f49b9d6a97eae9bcb96d3292072b7658bd8",
      "tree": "36f7d96481a47a6bde3c2f961346e940698111e0",
      "parents": [
        "90586523eb4b349806887c62ee70685a49415124"
      ],
      "author": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Thu May 21 17:01:26 2009 -0400"
      },
      "committer": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Thu Jun 11 14:57:53 2009 -0400"
      },
      "message": "fsnotify: add marks to inodes so groups can interpret how to handle those inodes\n\nThis patch creates a way for fsnotify groups to attach marks to inodes.\nThese marks have little meaning to the generic fsnotify infrastructure\nand thus their meaning should be interpreted by the group that attached\nthem to the inode\u0027s list.\n\ndnotify and inotify  will make use of these markings to indicate which\ninodes are of interest to their respective groups.  But this implementation\nhas the useful property that in the future other listeners could actually\nuse the marks for the exact opposite reason, aka to indicate which inodes\nit had NO interest in.\n\nSigned-off-by: Eric Paris \u003ceparis@redhat.com\u003e\nAcked-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nCc: Christoph Hellwig \u003chch@lst.de\u003e\n"
    },
    {
      "commit": "90586523eb4b349806887c62ee70685a49415124",
      "tree": "2ba6da637f897bbb2309b141b81801e4151d87b0",
      "parents": [
        "c9059598ea8981d02356eead3188bf7fa4d717b8"
      ],
      "author": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Thu May 21 17:01:20 2009 -0400"
      },
      "committer": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Thu Jun 11 14:57:52 2009 -0400"
      },
      "message": "fsnotify: unified filesystem notification backend\n\nfsnotify is a backend for filesystem notification.  fsnotify does\nnot provide any userspace interface but does provide the basis\nneeded for other notification schemes such as dnotify.  fsnotify\ncan be extended to be the backend for inotify or the upcoming\nfanotify.  fsnotify provides a mechanism for \"groups\" to register for\nsome set of filesystem events and to then deliver those events to\nthose groups for processing.\n\nfsnotify has a number of benefits, the first being actually shrinking the size\nof an inode.  Before fsnotify to support both dnotify and inotify an inode had\n\n        unsigned long           i_dnotify_mask; /* Directory notify events */\n        struct dnotify_struct   *i_dnotify; /* for directory notifications */\n        struct list_head        inotify_watches; /* watches on this inode */\n        struct mutex            inotify_mutex;  /* protects the watches list\n\nBut with fsnotify this same functionallity (and more) is done with just\n\n        __u32                   i_fsnotify_mask; /* all events for this inode */\n        struct hlist_head       i_fsnotify_mark_entries; /* marks on this inode */\n\nThat\u0027s right, inotify, dnotify, and fanotify all in 64 bits.  We used that\nmuch space just in inotify_watches alone, before this patch set.\n\nfsnotify object lifetime and locking is MUCH better than what we have today.\ninotify locking is incredibly complex.  See 8f7b0ba1c8539 as an example of\nwhat\u0027s been busted since inception.  inotify needs to know internal semantics\nof superblock destruction and unmounting to function.  The inode pinning and\nvfs contortions are horrible.\n\nno fsnotify implementers do allocation under locks.  This means things like\nf04b30de3 which (due to an overabundance of caution) changes GFP_KERNEL to\nGFP_NOFS can be reverted.  There are no longer any allocation rules when using\nor implementing your own fsnotify listener.\n\nfsnotify paves the way for fanotify.  In brief fanotify is a notification\nmechanism that delivers the lisener both an \u0027event\u0027 and an open file descriptor\nto the object in question.  This means that fanotify is pathname agnostic.\nSome on lkml may not care for the original companies or users that pushed for\nTALPA, but fanotify was designed with flexibility and input for other users in\nmind.  The readahead group expressed interest in fanotify as it could be used\nto profile disk access on boot without breaking the audit system.  The desktop\nsearch groups have also expressed interest in fanotify as it solves a number\nof the race conditions and problems present with managing inotify when more\nthan a limited number of specific files are of interest.  fanotify can provide\nfor a userspace access control system which makes it a clean interface for AV\nvendors to hook without trying to do binary patching on the syscall table,\nLSM, and everywhere else they do their things today.  With this patch series\nfanotify can be implemented in less than 1200 lines of easy to review code.\nAlmost all of which is the socket based user interface.\n\nThis patch series builds fsnotify to the point that it can implement\ndnotify and inotify_user.  Patches exist and will be sent soon after\nacceptance to finish the in kernel inotify conversion (audit) and implement\nfanotify.\n\nSigned-off-by: Eric Paris \u003ceparis@redhat.com\u003e\nAcked-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nCc: Christoph Hellwig \u003chch@lst.de\u003e\n"
    }
  ]
}
