Hi Matthew, Thank you for the patch! Yet something to improve: [auto build test ERROR on linus/master] [cannot apply to v5.3-rc7 next-20190904] [if your patch is applied to the wrong git tree, please drop us a note to help improve the system] url: https://github.com/0day-ci/linux/commits/Matthew-Wilcox/mm-Add-__page_cache_alloc_order/20190906-034745 config: i386-tinyconfig (attached as .config) compiler: gcc-7 (Debian 7.4.0-11) 7.4.0 reproduce: # save the attached .config to linux build tree make ARCH=i386 If you fix the issue, kindly add following tag Reported-by: kbuild test robot <lkp@xxxxxxxxx> All errors (new ones prefixed by >>): mm/filemap.c: In function '__add_to_page_cache_locked': >> mm/filemap.c:863:8: error: implicit declaration of function 'compound_nr'; did you mean 'compound_order'? [-Werror=implicit-function-declaration] nr = compound_nr(page); ^~~~~~~~~~~ compound_order cc1: some warnings being treated as errors vim +863 mm/filemap.c 840 841 static int __add_to_page_cache_locked(struct page *page, 842 struct address_space *mapping, 843 pgoff_t offset, gfp_t gfp_mask, 844 void **shadowp) 845 { 846 XA_STATE(xas, &mapping->i_pages, offset); 847 int huge = PageHuge(page); 848 struct mem_cgroup *memcg; 849 int error; 850 unsigned int nr = 1; 851 void *old; 852 853 VM_BUG_ON_PAGE(!PageLocked(page), page); 854 VM_BUG_ON_PAGE(PageSwapBacked(page), page); 855 mapping_set_update(&xas, mapping); 856 857 if (!huge) { 858 error = mem_cgroup_try_charge(page, current->mm, 859 gfp_mask, &memcg, false); 860 if (error) 861 return error; 862 xas_set_order(&xas, offset, compound_order(page)); > 863 nr = compound_nr(page); 864 } 865 866 page_ref_add(page, nr); 867 page->mapping = mapping; 868 page->index = offset; 869 870 do { 871 unsigned long exceptional = 0; 872 unsigned int i = 0; 873 874 xas_lock_irq(&xas); 875 xas_for_each_conflict(&xas, old) { 876 if (!xa_is_value(old)) 877 break; 878 exceptional++; 879 if (shadowp) 880 *shadowp = old; 881 } 882 if (old) { 883 xas_set_err(&xas, -EEXIST); 884 break; 885 } 886 xas_create_range(&xas); 887 if (xas_error(&xas)) 888 goto unlock; 889 890 next: 891 xas_store(&xas, page); 892 if (++i < nr) { 893 xas_next(&xas); 894 goto next; 895 } 896 mapping->nrexceptional -= exceptional; 897 mapping->nrpages += nr; 898 899 /* hugetlb pages do not participate in page cache accounting */ 900 if (!huge) 901 __mod_node_page_state(page_pgdat(page), NR_FILE_PAGES, 902 nr); 903 unlock: 904 xas_unlock_irq(&xas); 905 } while (xas_nomem(&xas, gfp_mask & GFP_RECLAIM_MASK)); 906 907 if (xas_error(&xas)) 908 goto error; 909 910 if (!huge) 911 mem_cgroup_commit_charge(page, memcg, false, false); 912 trace_mm_filemap_add_to_page_cache(page); 913 return 0; 914 error: 915 page->mapping = NULL; 916 /* Leave page->index set: truncation relies upon it */ 917 if (!huge) 918 mem_cgroup_cancel_charge(page, memcg, false); 919 page_ref_sub(page, nr); 920 return xas_error(&xas); 921 } 922 ALLOW_ERROR_INJECTION(__add_to_page_cache_locked, ERRNO); 923 --- 0-DAY kernel test infrastructure Open Source Technology Center https://lists.01.org/pipermail/kbuild-all Intel Corporation
Attachment:
.config.gz
Description: application/gzip