)]}'
{
  "commit": "eb028c33451af08bb34f45c6be6967ef1c98cbd1",
  "tree": "d9045e8e5304e020baeeb7ce2652723bc14a9108",
  "parents": [
    "ca459ca70f60ce05445845eca74c788b0d5ddb1b"
  ],
  "author": {
    "name": "Al Viro",
    "email": "viro@zeniv.linux.org.uk",
    "time": "Mon Oct 27 18:32:21 2025 -0400"
  },
  "committer": {
    "name": "Al Viro",
    "email": "viro@zeniv.linux.org.uk",
    "time": "Mon Nov 17 23:59:27 2025 -0500"
  },
  "message": "d_make_discardable(): warn if given a non-persistent dentry\n\nAt this point there are very few call chains that might lead to\nd_make_discardable() on a dentry that hadn\u0027t been made persistent:\ncalls of simple_unlink() and simple_rmdir() in configfs and\napparmorfs.\n\nBoth filesystems do pin (part of) their contents in dcache, but\nthey are currently playing very unusual games with that.  Converting\nthem to more usual patterns might be possible, but it\u0027s definitely\ngoing to be a long series of changes in both cases.\n\nFor now the easiest solution is to have both stop using simple_unlink()\nand simple_rmdir() - that allows to make d_make_discardable() warn\nwhen given a non-persistent dentry.\n\nRather than giving them full-blown private copies (with calls of\nd_make_discardable() replaced with dput()), let\u0027s pull the parts of\nsimple_unlink() and simple_rmdir() that deal with timestamps and link\ncounts into separate helpers (__simple_unlink() and __simple_rmdir()\nresp.) and have those used by configfs and apparmorfs.\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "81f4f06bc87e755c1c7d3ddc25c4bc3581577dc8",
      "old_mode": 33188,
      "old_path": "fs/configfs/dir.c",
      "new_id": "e8f2f44012e9ab709c13c25b3e9daf9dcf9c8c7d",
      "new_mode": 33188,
      "new_path": "fs/configfs/dir.c"
    },
    {
      "type": "modify",
      "old_id": "1d2e3a5738d10d352f762878d80744d521bc8798",
      "old_mode": 33188,
      "old_path": "fs/configfs/inode.c",
      "new_id": "bcda3372e141ad6086786bc8194a306f84a190c8",
      "new_mode": 33188,
      "new_path": "fs/configfs/inode.c"
    },
    {
      "type": "modify",
      "old_id": "5ee2e78a91b394e74cbc2625d5205e286bf10bf9",
      "old_mode": 33188,
      "old_path": "fs/dcache.c",
      "new_id": "824d620bb563bed69afe81c6149ae7d3e15d1365",
      "new_mode": 33188,
      "new_path": "fs/dcache.c"
    },
    {
      "type": "modify",
      "old_id": "80f288a771e30f7a118c52f0cafc8254bb14bc46",
      "old_mode": 33188,
      "old_path": "fs/libfs.c",
      "new_id": "0aa630e7eb00f10a0f31b996c76aa34a762d5f1c",
      "new_mode": 33188,
      "new_path": "fs/libfs.c"
    },
    {
      "type": "modify",
      "old_id": "95933ceaae51d8829171e8b44db3b6366b698c12",
      "old_mode": 33188,
      "old_path": "include/linux/fs.h",
      "new_id": "ef842adbd418bdb5f6d742878d999c9dee4bc8c3",
      "new_mode": 33188,
      "new_path": "include/linux/fs.h"
    },
    {
      "type": "modify",
      "old_id": "391a586d0557f04b8ebe7e6175ceb71717a4ccdd",
      "old_mode": 33188,
      "old_path": "security/apparmor/apparmorfs.c",
      "new_id": "9b9090d38ea22673f272a72724fc9281be4584c4",
      "new_mode": 33188,
      "new_path": "security/apparmor/apparmorfs.c"
    }
  ]
}
