)]}'
{
  "log": [
    {
      "commit": "b3e19d924b6eaf2ca7d22cba99a517c5171007b6",
      "tree": "8c1fa4074114a883a4e2de2f7d12eb29ed91bdf1",
      "parents": [
        "c6653a838b1b2738561aff0b8c0f62a9b714bdd9"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@kernel.dk",
        "time": "Fri Jan 07 17:50:11 2011 +1100"
      },
      "committer": {
        "name": "Nick Piggin",
        "email": "npiggin@kernel.dk",
        "time": "Fri Jan 07 17:50:33 2011 +1100"
      },
      "message": "fs: scale mntget/mntput\n\nThe problem that this patch aims to fix is vfsmount refcounting scalability.\nWe need to take a reference on the vfsmount for every successful path lookup,\nwhich often go to the same mount point.\n\nThe fundamental difficulty is that a \"simple\" reference count can never be made\nscalable, because any time a reference is dropped, we must check whether that\nwas the last reference. To do that requires communication with all other CPUs\nthat may have taken a reference count.\n\nWe can make refcounts more scalable in a couple of ways, involving keeping\ndistributed counters, and checking for the global-zero condition less\nfrequently.\n\n- check the global sum once every interval (this will delay zero detection\n  for some interval, so it\u0027s probably a showstopper for vfsmounts).\n\n- keep a local count and only taking the global sum when local reaches 0 (this\n  is difficult for vfsmounts, because we can\u0027t hold preempt off for the life of\n  a reference, so a counter would need to be per-thread or tied strongly to a\n  particular CPU which requires more locking).\n\n- keep a local difference of increments and decrements, which allows us to sum\n  the total difference and hence find the refcount when summing all CPUs. Then,\n  keep a single integer \"long\" refcount for slow and long lasting references,\n  and only take the global sum of local counters when the long refcount is 0.\n\nThis last scheme is what I implemented here. Attached mounts and process root\nand working directory references are \"long\" references, and everything else is\na short reference.\n\nThis allows scalable vfsmount references during path walking over mounted\nsubtrees and unattached (lazy umounted) mounts with processes still running\nin them.\n\nThis results in one fewer atomic op in the fastpath: mntget is now just a\nper-CPU inc, rather than an atomic inc; and mntput just requires a spinlock\nand non-atomic decrement in the common case. However code is otherwise bigger\nand heavier, so single threaded performance is basically a wash.\n\nSigned-off-by: Nick Piggin \u003cnpiggin@kernel.dk\u003e\n"
    },
    {
      "commit": "99b7db7b8ffd6bb755eb0a175596421a0b581cb2",
      "tree": "cbaf57d252f0852f967d3fd5a5f87472964a01fe",
      "parents": [
        "6416ccb7899960868f5016751fb81bf25213d24f"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@kernel.dk",
        "time": "Wed Aug 18 04:37:39 2010 +1000"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Aug 18 08:35:48 2010 -0400"
      },
      "message": "fs: brlock vfsmount_lock\n\nfs: brlock vfsmount_lock\n\nUse a brlock for the vfsmount lock. It must be taken for write whenever\nmodifying the mount hash or associated fields, and may be taken for read when\nperforming mount hash lookups.\n\nA new lock is added for the mnt-id allocator, so it doesn\u0027t need to take\nthe heavy vfsmount write-lock.\n\nThe number of atomics should remain the same for fastpath rlock cases, though\ncode would be slightly slower due to per-cpu access. Scalability is not not be\nmuch improved in common cases yet, due to other locks (ie. dcache_lock) getting\nin the way. However path lookups crossing mountpoints should be one case where\nscalability is improved (currently requiring the global lock).\n\nThe slowpath is slower due to use of brlock. On a 64 core, 64 socket, 32 node\nAltix system (high latency to remote nodes), a simple umount microbenchmark\n(mount --bind mnt mnt2 ; umount mnt2 loop 1000 times), before this patch it\ntook 6.8s, afterwards took 7.1s, about 5% slower.\n\nCc: Al Viro \u003cviro@ZenIV.linux.org.uk\u003e\nSigned-off-by: Nick Piggin \u003cnpiggin@kernel.dk\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "796a6b521d0eadb338adf8cf7e482351c3a8a7b4",
      "tree": "25858b16136a0a747d24dba45ee39d18fcbef1fa",
      "parents": [
        "c177c2ac8c5aa83ed181db44543c3b38fd1f17a6"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sat Jan 16 13:28:47 2010 -0500"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Mar 03 13:00:22 2010 -0500"
      },
      "message": "Kill CL_PROPAGATION, sanitize fs/pnode.c:get_source()\n\nFirst of all, get_source() never results in CL_PROPAGATION\nalone.  We either get CL_MAKE_SHARED (for the continuation\nof peer group) or CL_SLAVE (slave that is not shared) or both\n(beginning of peer group among slaves).  Massage the code to\nmake that explicit, kill CL_PROPAGATION test in clone_mnt()\n(nothing sets CL_MAKE_SHARED without CL_PROPAGATION and in\nclone_mnt() we are checking CL_PROPAGATION after we\u0027d found\nthat there\u0027s no CL_SLAVE, so the check for CL_MAKE_SHARED\nwould do just as well).\n\nFix comments, while we are at it...\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "97e7e0f71d6d948c25f11f0a33878d9356d9579e",
      "tree": "2db3bcf3b4f47995308187eec7f3a61d67446dfa",
      "parents": [
        "2d4d4864ac08caff5c204a752bd004eed4f08760"
      ],
      "author": {
        "name": "Miklos Szeredi",
        "email": "mszeredi@suse.cz",
        "time": "Thu Mar 27 13:06:26 2008 +0100"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Apr 23 00:05:09 2008 -0400"
      },
      "message": "[patch 7/7] vfs: mountinfo: show dominating group id\n\nShow peer group ID of nearest dominating group that has intersection\nwith the mount\u0027s namespace.\n\nSigned-off-by: Miklos Szeredi \u003cmszeredi@suse.cz\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "719f5d7f0b90ac2c8f8ca4232eb322b266fea01e",
      "tree": "ed3f63e0856b8b319764d475e68b35719ac0ccb9",
      "parents": [
        "73cd49ecdde92fdce131938bdaff4993010d181b"
      ],
      "author": {
        "name": "Miklos Szeredi",
        "email": "mszeredi@suse.cz",
        "time": "Thu Mar 27 13:06:23 2008 +0100"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Apr 23 00:04:51 2008 -0400"
      },
      "message": "[patch 4/7] vfs: mountinfo: add mount peer group ID\n\nAdd a unique ID to each peer group using the IDR infrastructure.  The\nidentifiers are reused after the peer group dissolves.\n\nThe IDR structures are protected by holding namepspace_sem for write\nwhile allocating or deallocating IDs.\n\nIDs are allocated when a previously unshared vfsmount becomes the\nfirst member of a peer group.  When a new member is added to an\nexisting group, the ID is copied from one of the old members.\n\nIDs are freed when the last member of a peer group is unshared.\n\nSetting the MNT_SHARED flag on members of a subtree is done as a\nseparate step, after all the IDs have been allocated.  This way an\nallocation failure can be cleaned up easilty, without affecting the\npropagation state.\n\nBased on design sketch by Al Viro.\n\nSigned-off-by: Miklos Szeredi \u003cmszeredi@suse.cz\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "4e1b36fb485dd81b0818ef1bc8fb5c0f2923a283",
      "tree": "d3908b7f8e7220002cb1530b20a22e5893814a6b",
      "parents": [
        "8c3ee42e80ccead805806b3cb50b9855ceb957a2"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Mar 24 00:16:03 2008 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Apr 21 23:13:54 2008 -0400"
      },
      "message": "[PATCH] umount_tree() will unhash everything itself\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "6d59e7f582ef1c1988542d0fc3b36d0087b757ce",
      "tree": "2e6e2e7d42af8f89f7b87aeaf5261d4cfbd9b625",
      "parents": [
        "807501475fce0ebe68baedf87f202c3e4ee0d12c"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sat Mar 22 15:48:17 2008 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Apr 21 23:11:01 2008 -0400"
      },
      "message": "[PATCH] move a bunch of declarations to fs/internal.h\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "7c4b93d8269b9d35971a8239426b1f6ddc3d5ef7",
      "tree": "a3309f9237f9d67af000e484bef9c19a7951750a",
      "parents": [
        "1a39068954e33f4bf3e09375a8112dcc801c4688"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Fri Mar 21 23:59:49 2008 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Thu Mar 27 20:47:46 2008 -0400"
      },
      "message": "[PATCH] count ghost references to vfsmounts\n\nmake propagate_mount_busy() exclude references from the vfsmounts\nthat had been isolated by umount_tree() and are just waiting for\nrelease_mounts() to dispose of their -\u003emnt_parent/-\u003emnt_mountpoint.\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "0b03cfb25fa944bc106e816146846dcb48b2e907",
      "tree": "e9e6ad93e71008134bdf8f42e316db5406c88451",
      "parents": [
        "870b8f8c43d000bb321b42a12212facc1087a748"
      ],
      "author": {
        "name": "Andries E. Brouwer",
        "email": "Andries.Brouwer@cwi.nl",
        "time": "Wed Feb 06 01:36:32 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed Feb 06 10:41:02 2008 -0800"
      },
      "message": "MNT_UNBINDABLE fix\n\nSome time ago ( http://lkml.org/lkml/2007/6/19/128 ) I wrote about\nMNT_UNBINDABLE that it felt like a bug that it is not reset by \"mount\n--make-private\".\n\nToday I happened to see mount(8) and Documentation/sharedsubtree.txt and\nboth document the version obtained by applying the little patch given in\nthe above (and again below).\n\nSo, the present kernel code is not according to specs and must be regarded\nas buggy.\n\nSpecification in Documentation/sharedsubtree.txt:\nSee state diagram: unbindable should become private upon make-private.\n\nSpecification in mount(8):\n    ...  It\u0027s\n    also possible to  set  up  uni-directional  propagation  (with  --make-\n    slave),  to  make  a  mount  point unavailable for --bind/--rbind (with\n    --make-unbindable), and to undo any  of  these  (with  --make-private).\n\nRepeat of old fix-shared-subtrees-make-private.patch\n(due to Dirk Gerrits, René Gabriëls, Peter Kooijmans):\n\nAcked-by: Ram Pai \u003clinuxram@us.ibm.com\u003e\nCc: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "b5e618181a927210f8be1d3d2249d31904ba358d",
      "tree": "731f1ae4ff1ba56d402bb329182b7d935bb439a1",
      "parents": [
        "db9c02fa8bd50eb104781a9f78cae923d8da1e74"
      ],
      "author": {
        "name": "Pavel Emelianov",
        "email": "xemul@sw.ru",
        "time": "Tue May 08 00:30:19 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue May 08 11:15:11 2007 -0700"
      },
      "message": "Introduce a handy list_first_entry macro\n\nThere are many places in the kernel where the construction like\n\n   foo \u003d list_entry(head-\u003enext, struct foo_struct, list);\n\nare used.\nThe code might look more descriptive and neat if using the macro\n\n   list_first_entry(head, type, member) \\\n             list_entry((head)-\u003enext, type, member)\n\nHere is the macro itself and the examples of its usage in the generic code.\n If it will turn out to be useful, I can prepare the set of patches to\ninject in into arch-specific code, drivers, networking, etc.\n\nSigned-off-by: Pavel Emelianov \u003cxemul@openvz.org\u003e\nSigned-off-by: Kirill Korotaev \u003cdev@openvz.org\u003e\nCc: Randy Dunlap \u003crandy.dunlap@oracle.com\u003e\nCc: Andi Kleen \u003candi@firstfloor.org\u003e\nCc: Zach Brown \u003czach.brown@oracle.com\u003e\nCc: Davide Libenzi \u003cdavidel@xmailserver.org\u003e\nCc: John McCutchan \u003cttb@tentacle.dhs.org\u003e\nCc: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: john stultz \u003cjohnstul@us.ibm.com\u003e\nCc: Ram Pai \u003clinuxram@us.ibm.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "6b3286ed1169d74fea401367d6d4d6c6ec758a81",
      "tree": "faf5beddb797875bb92855f8606735478267959a",
      "parents": [
        "1ec320afdc9552c92191d5f89fcd1ebe588334ca"
      ],
      "author": {
        "name": "Kirill Korotaev",
        "email": "dev@sw.ru",
        "time": "Fri Dec 08 02:37:56 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.osdl.org",
        "time": "Fri Dec 08 08:28:51 2006 -0800"
      },
      "message": "[PATCH] rename struct namespace to struct mnt_namespace\n\nRename \u0027struct namespace\u0027 to \u0027struct mnt_namespace\u0027 to avoid confusion with\nother namespaces being developped for the containers : pid, uts, ipc, etc.\n\u0027namespace\u0027 variables and attributes are also renamed to \u0027mnt_ns\u0027\n\nSigned-off-by: Kirill Korotaev \u003cdev@sw.ru\u003e\nSigned-off-by: Cedric Le Goater \u003cclg@fr.ibm.com\u003e\nCc: Eric W. Biederman \u003cebiederm@xmission.com\u003e\nCc: Herbert Poetzl \u003cherbert@13thfloor.at\u003e\nCc: Sukadev Bhattiprolu \u003csukadev@us.ibm.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "1bfba4e8ea0e555e3a0296051517d96253660ccc",
      "tree": "48ced9016b5c08f1be217677c25e6879c07b5278",
      "parents": [
        "a7addcea6ac7c0e9733a48cda06ca0880f116a48"
      ],
      "author": {
        "name": "Akinobu Mita",
        "email": "mita@miraclelinux.com",
        "time": "Mon Jun 26 00:24:40 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Mon Jun 26 09:58:17 2006 -0700"
      },
      "message": "[PATCH] core: use list_move()\n\nThis patch converts the combination of list_del(A) and list_add(A, B) to\nlist_move(A, B).\n\nCc: Greg Kroah-Hartman \u003cgregkh@suse.de\u003e\nCc: Ram Pai \u003clinuxram@us.ibm.com\u003e\nSigned-off-by: Akinobu Mita \u003cmita@miraclelinux.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "53b3531bbbf70ac7551b32d1acc229d94de52658",
      "tree": "644440c93f599bbf64bb0b703c97b03b4dc5d737",
      "parents": [
        "29afd49b72a9b2c26fa8c678bcf3976d0540446b"
      ],
      "author": {
        "name": "Alexey Dobriyan",
        "email": "adobriyan@gmail.com",
        "time": "Fri Mar 24 03:16:13 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Fri Mar 24 07:33:24 2006 -0800"
      },
      "message": "[PATCH] s/;;/;/g\n\nSigned-off-by: Alexey Dobriyan \u003cadobriyan@gmail.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "bf066c7db775a04bd761f8ea206f5522d0cf40ff",
      "tree": "e4bfe3bdd8d98a137eaf163a26eb1153af970dfd",
      "parents": [
        "4a0d11fae57989e24fe2ee3eff6d62d72db9716c"
      ],
      "author": {
        "name": "Miklos Szeredi",
        "email": "miklos@szeredi.hu",
        "time": "Sun Jan 08 01:03:19 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Sun Jan 08 20:13:56 2006 -0800"
      },
      "message": "[PATCH] shared mounts: cleanup\n\nSmall cleanups in shared mounts code.\n\nSigned-off-by: Miklos Szeredi \u003cmiklos@szeredi.hu\u003e\nCc: Ram Pai \u003clinuxram@us.ibm.com\u003e\nCc: \u003cviro@parcelfarce.linux.theplanet.co.uk\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "9676f0c6389b62bd6b24d77d4b3abdbcfa32d0f2",
      "tree": "fd7d965c6d646cf7e4cfd35e866723927f6cfe8b",
      "parents": [
        "5afe00221389998a25d611dc7941c06580c29eb6"
      ],
      "author": {
        "name": "Ram Pai",
        "email": "linuxram@us.ibm.com",
        "time": "Mon Nov 07 17:21:20 2005 -0500"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Mon Nov 07 18:18:11 2005 -0800"
      },
      "message": "[PATCH] unbindable mounts\n\nAn unbindable mount does not forward or receive propagation.  Also\nunbindable mount disallows bind mounts.  The semantics is as follows.\n\nBind semantics:\n  It is invalid to bind mount an unbindable mount.\n\nMove semantics:\n  It is invalid to move an unbindable mount under shared mount.\n\nClone-namespace semantics:\n  If a mount is unbindable in the parent namespace, the corresponding\n  cloned mount in the child namespace becomes unbindable too.  Note:\n  there is subtle difference, unbindable mounts cannot be bind mounted\n  but can be cloned during clone-namespace.\n\nSigned-off-by: Ram Pai \u003clinuxram@us.ibm.com\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "5afe00221389998a25d611dc7941c06580c29eb6",
      "tree": "521270fb5974b42ac2b27666541f20fd375d8f66",
      "parents": [
        "a58b0eb8e64b78d9315a5491955e78b1391d42e5"
      ],
      "author": {
        "name": "Ram Pai",
        "email": "linuxram@us.ibm.com",
        "time": "Mon Nov 07 17:21:01 2005 -0500"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Mon Nov 07 18:18:11 2005 -0800"
      },
      "message": "[PATCH] handling of slave mounts\n\nThis makes bind, rbind, move, clone namespace and umount operations\naware of the semantics of slave mount (see Documentation/sharedsubtree.txt\nin the last patch of the series for detailed description).\n\nSigned-off-by: Ram Pai \u003clinuxram@us.ibm.com\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "a58b0eb8e64b78d9315a5491955e78b1391d42e5",
      "tree": "546f77cb0338c817ef1e34d8ebbc6eaf0e5d6be9",
      "parents": [
        "a05964f3917c7c55368c229d7985f8e7c9977e97"
      ],
      "author": {
        "name": "Ram Pai",
        "email": "linuxram@us.ibm.com",
        "time": "Mon Nov 07 17:20:48 2005 -0500"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Mon Nov 07 18:18:11 2005 -0800"
      },
      "message": "[PATCH] introduce slave mounts\n\nA slave mount always has a master mount from which it receives\nmount/umount events.  Unlike shared mount the event propagation does not\nflow from the slave mount to the master.\n\nSigned-off-by: Ram Pai \u003clinuxram@us.ibm.com\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "a05964f3917c7c55368c229d7985f8e7c9977e97",
      "tree": "7ec25550267ef050572c00ba2f37d6a4ff9c469e",
      "parents": [
        "2144440327fa01b2f3f65e355120a78211685702"
      ],
      "author": {
        "name": "Ram Pai",
        "email": "linuxram@us.ibm.com",
        "time": "Mon Nov 07 17:20:17 2005 -0500"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Mon Nov 07 18:18:11 2005 -0800"
      },
      "message": "[PATCH] shared mounts handling: umount\n\nAn unmount of a mount creates a umount event on the parent.  If the\nparent is a shared mount, it gets propagated to all mounts in the peer\ngroup.\n\nSigned-off-by: Ram Pai \u003clinuxram@us.ibm.com\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "b90fa9ae8f51f098ee480bbaabd6867992e9fc58",
      "tree": "2ad583b3a7399face7a78730b001928413c8269e",
      "parents": [
        "03e06e68ff76294e53ffa898cb844d2a997b043e"
      ],
      "author": {
        "name": "Ram Pai",
        "email": "linuxram@us.ibm.com",
        "time": "Mon Nov 07 17:19:50 2005 -0500"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Mon Nov 07 18:18:11 2005 -0800"
      },
      "message": "[PATCH] shared mount handling: bind and rbind\n\nImplement handling of MS_BIND in presense of shared mounts (see\nDocumentation/sharedsubtree.txt in the end of patch series for detailed\ndescription).\n\nSigned-off-by: Ram Pai \u003clinuxram@us.ibm.com\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "03e06e68ff76294e53ffa898cb844d2a997b043e",
      "tree": "df17444b2c9b89e1eed75e09d46ea36c40ebd1df",
      "parents": [
        "07b20889e3052c7e77d6a6a54e7e83446eb1ba84"
      ],
      "author": {
        "name": "Ram Pai",
        "email": "linuxram@us.ibm.com",
        "time": "Mon Nov 07 17:19:33 2005 -0500"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Mon Nov 07 18:18:10 2005 -0800"
      },
      "message": "[PATCH] introduce shared mounts\n\nThis creates shared mounts.  A shared mount when bind-mounted to some\nmountpoint, propagates mount/umount events to each other.  All the\nshared mounts that propagate events to each other belong to the same\npeer-group.\n\nSigned-off-by: Ram Pai \u003clinuxram@us.ibm.com\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "07b20889e3052c7e77d6a6a54e7e83446eb1ba84",
      "tree": "616ac5b7eef3092e105d3b41e7bd2052558b064b",
      "parents": [
        "390c684367de37e1c2f9005cf92f7a746c69fdd3"
      ],
      "author": {
        "name": "Ram Pai",
        "email": "linuxram@us.ibm.com",
        "time": "Mon Nov 07 17:19:07 2005 -0500"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Mon Nov 07 18:18:10 2005 -0800"
      },
      "message": "[PATCH] beginning of the shared-subtree proper\n\nA private mount does not forward or receive propagation.  This patch\nprovides user the ability to convert any mount to private.\n\nSigned-off-by: Ram Pai \u003clinuxram@us.ibm.com\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    }
  ]
}
