]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
mm/huge_memory: allow split shmem large folio to any lower order
authorZi Yan <ziy@nvidia.com>
Wed, 22 Jan 2025 16:19:27 +0000 (11:19 -0500)
committerAndrew Morton <akpm@linux-foundation.org>
Mon, 17 Mar 2025 05:05:56 +0000 (22:05 -0700)
Commit 4d684b5f92ba ("mm: shmem: add large folio support for tmpfs") has
added large folio support to shmem.  Remove the restriction in
split_huge_page*().

Link: https://lkml.kernel.org/r/20250122161928.1240637-2-ziy@nvidia.com
Signed-off-by: Zi Yan <ziy@nvidia.com>
Reviewed-by: Baolin Wang <baolin.wang@linux.alibaba.com>
Reviewed-by: Yang Shi <yang@os.amperecomputing.com>
Cc: David Hildenbrand <david@redhat.com>
Cc: Hugh Dickins <hughd@google.com>
Cc: John Hubbard <jhubbard@nvidia.com>
Cc: Kefeng Wang <wangkefeng.wang@huawei.com>
Cc: Kirill A. Shuemov <kirill.shutemov@linux.intel.com>
Cc: Miaohe Lin <linmiaohe@huawei.com>
Cc: Matthew Wilcox <willy@infradead.org>
Cc: Ryan Roberts <ryan.roberts@arm.com>
Cc: Yu Zhao <yuzhao@google.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
mm/huge_memory.c

index 118f2127c78568e13b365113d574559eb7372721..e33da765c428ebe289155885c5ed9416ea87d15b 100644 (file)
@@ -3299,7 +3299,7 @@ static void __split_huge_page(struct page *page, struct list_head *list,
                /* Some pages can be beyond EOF: drop them from page cache */
                if (tail->index >= end) {
                        if (shmem_mapping(folio->mapping))
-                               nr_dropped++;
+                               nr_dropped += new_nr;
                        else if (folio_test_clear_dirty(tail))
                                folio_account_cleaned(tail,
                                        inode_to_wb(folio->mapping->host));
@@ -3465,12 +3465,6 @@ int split_huge_page_to_list_to_order(struct page *page, struct list_head *list,
                        return -EINVAL;
                }
        } else if (new_order) {
-               /* Split shmem folio to non-zero order not supported */
-               if (shmem_mapping(folio->mapping)) {
-                       VM_WARN_ONCE(1,
-                               "Cannot split shmem folio to non-0 order");
-                       return -EINVAL;
-               }
                /*
                 * No split if the file system does not support large folio.
                 * Note that we might still have THPs in such mappings due to