)]}'
{
  "commit": "363f77f27f59b6c54af4d85cbab74f2ababff706",
  "tree": "4290bcd290f550c9aa2d942147042ecd942e143d",
  "parents": [
    "8122b07121b761a277756505cefa281729a148f6"
  ],
  "author": {
    "name": "Al Viro",
    "email": "viro@zeniv.linux.org.uk",
    "time": "Sun Apr 27 22:53:13 2025 -0400"
  },
  "committer": {
    "name": "Al Viro",
    "email": "viro@zeniv.linux.org.uk",
    "time": "Wed Jun 11 14:32:19 2025 -0400"
  },
  "message": "don\u0027t have mounts pin their parents\n\nSimplify the rules for mount refcounts.  Current rules include:\n\t* being a namespace root \u003d\u003e +1\n\t* being someone\u0027s child \u003d\u003e +1\n\t* being someone\u0027s child \u003d\u003e +1 to parent\u0027s refcount, unless you\u0027ve\n\t\t\t\t   already been through umount_tree().\n\nThe last part is not needed at all.  It makes for more places where need\nto decrement refcounts and it creates an asymmetry between the situations\nfor something that has never been a part of a namespace and something that\nleft one, both for no good reason.\n\nIf mount\u0027s refcount has additions from its children, we know that\n\t* it\u0027s either someone\u0027s child itself (and will remain so\nuntil umount_tree(), at which point contributions from children\nwill disappear), or\n\t* or is the root of namespace (and will remain such until\nit either becomes someone\u0027s child in another namespace or goes through\numount_tree()), or\n\t* it is the root of some tree copy, and is currently pinned\nby the caller of copy_tree() (and remains such until it either gets\ninto namespace, or goes to umount_tree()).\nIn all cases we already have contribution(s) to refcount that will last\nas long as the contribution from children remains.  In other words, the\nlifetime is not affected by refcount contributions from children.\n\nIt might be useful for \"is it busy\" checks, but those are actually\nno harder to express without it.\n\nNB: propagate_mnt_busy() part is an equivalent transformation, ugly as it\nis; the current logics is actually wrong and may give false negatives,\nbut fixing that is for a separate patch (probably earlier in the queue).\n\nReviewed-by: Christian Brauner \u003cbrauner@kernel.org\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "d14e9ee9b5522ab22e8f324ecc3ff6cec8deafce",
      "old_mode": 33188,
      "old_path": "fs/namespace.c",
      "new_id": "bb95e51029163e51415ac742040ed07d91e195ce",
      "new_mode": 33188,
      "new_path": "fs/namespace.c"
    },
    {
      "type": "modify",
      "old_id": "f1752dd499af87c892c6278f5a7aaabaa6522310",
      "old_mode": 33188,
      "old_path": "fs/pnode.c",
      "new_id": "efed6bb20c72743abd56548959a30740d3c262ce",
      "new_mode": 33188,
      "new_path": "fs/pnode.c"
    }
  ]
}
