)]}'
{
  "commit": "bc34b6ba8a2164b0eb8978c698b7c5cfeaf6f7c9",
  "tree": "6846f7fb6de6daf2daf40dead48354edc8be7061",
  "parents": [
    "999a5c64d26146256b98d6fd4960da5d7f05ad64"
  ],
  "author": {
    "name": "David Howells",
    "email": "dhowells@redhat.com",
    "time": "Thu Apr 08 21:01:31 2021 +0100"
  },
  "committer": {
    "name": "David Howells",
    "email": "dhowells@redhat.com",
    "time": "Fri Apr 23 12:35:13 2021 +0100"
  },
  "message": "mm: Split page_has_private() in two to better handle PG_private_2\n\nSplit page_has_private() into two functions:\n\n (1) page_needs_cleanup() to find out if a page needs the -\u003ereleasepage(),\n     -\u003einvalidatepage(), etc. address space ops calling upon it.\n\n     This returns true when either PG_private or PG_private_2 are set.\n\n (2) page_private_count() which returns a count of the number of refs\n     contributed to a page for attached private data.\n\n     This returns 1 if PG_private is set and 0 otherwise.\n\nI think suggestion[1] is that PG_private_2 should just have a ref on the\npage, but this isn\u0027t accounted in the same way as PG_private\u0027s ref.\n\nNotes:\n\n (*) The following:\n\n\tbtrfs_migratepage()\n\tiomap_set_range_uptodate()\n\tiomap_migrate_page()\n\tto_iomap_page()\n\n     should probably all use PagePrivate() rather than page_has_private()\n     since they\u0027re interested in what\u0027s attached to page-\u003eprivate when\n     they\u0027re doing this, and not PG_private_2.\n\n     It may not matter in these cases since page-\u003eprivate is probably NULL\n     if PG_private is not set.\n\n (*) Should PAGE_FLAGS_CLEANUP (PAGE_FLAGS_PRIVATE as was) just be merged\n     into page_needs_cleanup() as that\u0027s the only user?\n\n (*) Do we actually need PG_private, or is it possible just to see if\n     page-\u003eprivate is NULL?\n\n (*) There are a lot of \"if (page_has_private()) try_to_release_page()\"\n     combinations.  Does it make sense to make an inline function that does\n     this?\n\nSigned-off-by: David Howells \u003cdhowells@redhat.com\u003e\ncc: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\ncc: Matthew Wilcox \u003cwilly@infradead.org\u003e\ncc: Christoph Hellwig \u003chch@lst.de\u003e\ncc: Josef Bacik \u003cjosef@toxicpanda.com\u003e\ncc: Alexander Viro \u003cviro@zeniv.linux.org.uk\u003e\ncc: Andrew Morton \u003cakpm@linux-foundation.org\u003e\ncc: linux-mm@kvack.org\ncc: linux-cachefs@redhat.com\nLink: https://lore.kernel.org/linux-fsdevel/CAHk-\u003dwhWoJhGeMn85LOh9FX-5d2-Upzmv1m2ZmYxvD31TKpUTA@mail.gmail.com/ [1]\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "b2d2ad1530676ddad2142c3963bdd41bd0a72da7",
      "old_mode": 33188,
      "old_path": "arch/s390/kernel/uv.c",
      "new_id": "09256f40cd8907cceda858e0b6042665b9f4dcd1",
      "new_mode": 33188,
      "new_path": "arch/s390/kernel/uv.c"
    },
    {
      "type": "modify",
      "old_id": "41b718cfea406fc3f302b5a784a04ca1e2a5447e",
      "old_mode": 33188,
      "old_path": "fs/btrfs/disk-io.c",
      "new_id": "d95f8d4b30041ac04d5b346b1fb5043cfa99f727",
      "new_mode": 33188,
      "new_path": "fs/btrfs/disk-io.c"
    },
    {
      "type": "modify",
      "old_id": "7cdf65be3707cd4c1602de86698488b84e97bf3f",
      "old_mode": 33188,
      "old_path": "fs/btrfs/inode.c",
      "new_id": "94f038d34f16fa37ba563184eaef16bbc475d8ac",
      "new_mode": 33188,
      "new_path": "fs/btrfs/inode.c"
    },
    {
      "type": "modify",
      "old_id": "64a579734f934a9ffdcd4a36076cc1ef2bbe1dbb",
      "old_mode": 33188,
      "old_path": "fs/ext4/move_extent.c",
      "new_id": "16d0a7a7319136c7a34218079255ce0865be7444",
      "new_mode": 33188,
      "new_path": "fs/ext4/move_extent.c"
    },
    {
      "type": "modify",
      "old_id": "c0fee830a34eda74e37abbbb4a99f0edd26693da",
      "old_mode": 33188,
      "old_path": "fs/fuse/dev.c",
      "new_id": "76e8ca9e47fa5fe0b35aa3430e1cc26042042439",
      "new_mode": 33188,
      "new_path": "fs/fuse/dev.c"
    },
    {
      "type": "modify",
      "old_id": "414769a6ad113af77a363e12518d8cfc711a164e",
      "old_mode": 33188,
      "old_path": "fs/iomap/buffered-io.c",
      "new_id": "b98ff795fd4c53c8fb19b043a7bd91985932d1cb",
      "new_mode": 33188,
      "new_path": "fs/iomap/buffered-io.c"
    },
    {
      "type": "modify",
      "old_id": "5dbce4dcc1a7df61559eb19b0ba3c471afc1debe",
      "old_mode": 33188,
      "old_path": "fs/splice.c",
      "new_id": "bf102bc947bbbeb4c7e82b24b92ca7a99d91dce2",
      "new_mode": 33188,
      "new_path": "fs/splice.c"
    },
    {
      "type": "modify",
      "old_id": "4ff7de61b13db1e5bcfcb35af4e2381a144066ee",
      "old_mode": 33188,
      "old_path": "include/linux/page-flags.h",
      "new_id": "be42a269901400f1635feaac9e16f2a54bacd7fb",
      "new_mode": 33188,
      "new_path": "include/linux/page-flags.h"
    },
    {
      "type": "modify",
      "old_id": "e1735fe7c76afd0900294a42c3f1e0e8b22998ce",
      "old_mode": 33188,
      "old_path": "include/trace/events/pagemap.h",
      "new_id": "3ff3404cc399a41ea70a0d8a6d27204c79a3be30",
      "new_mode": 33188,
      "new_path": "include/trace/events/pagemap.h"
    },
    {
      "type": "modify",
      "old_id": "a7d6cb912b051b79480b4b7466f2b93daa6117e2",
      "old_mode": 33188,
      "old_path": "mm/khugepaged.c",
      "new_id": "d3b60a31aae2675f54e76102c44f998e1825cd50",
      "new_mode": 33188,
      "new_path": "mm/khugepaged.c"
    },
    {
      "type": "modify",
      "old_id": "24210c9bd8434816ce4451e6041e4e7dab24b165",
      "old_mode": 33188,
      "old_path": "mm/memory-failure.c",
      "new_id": "5a23d129c2a35a912bd26f70d6eaf72e06ed159b",
      "new_mode": 33188,
      "new_path": "mm/memory-failure.c"
    },
    {
      "type": "modify",
      "old_id": "62b81d5257aaa7dcf485b69e82bc60dd3f1c1574",
      "old_mode": 33188,
      "old_path": "mm/migrate.c",
      "new_id": "eafd73bea94563dceaeffecf434806dc153b9923",
      "new_mode": 33188,
      "new_path": "mm/migrate.c"
    },
    {
      "type": "modify",
      "old_id": "d589f147f4c2f6792d5061ae0fabce35e7efe789",
      "old_mode": 33188,
      "old_path": "mm/readahead.c",
      "new_id": "9b05d51475cd5755feffff1a8b5f724804980815",
      "new_mode": 33188,
      "new_path": "mm/readahead.c"
    },
    {
      "type": "modify",
      "old_id": "455944264663ef30f90df7027f4766b84446cdee",
      "old_mode": 33188,
      "old_path": "mm/truncate.c",
      "new_id": "7cad4c79686ba0c5012001fe4fa932b30e7f4113",
      "new_mode": 33188,
      "new_path": "mm/truncate.c"
    },
    {
      "type": "modify",
      "old_id": "562e87cbd7a1ab94203489e9cd9b4e8bec278aea",
      "old_mode": 33188,
      "old_path": "mm/vmscan.c",
      "new_id": "4d9928e3446d46ec489a9f3ecbb201d022e78e38",
      "new_mode": 33188,
      "new_path": "mm/vmscan.c"
    }
  ]
}
