Re: [PATCH v15 17/17] iomap: Convert iomap_migrate_page to use folios
From: kernel test robot <hidden>
Date: 2021-07-20 13:35:46
Also in:
linux-fsdevel, linux-mm, oe-kbuild-all
Hi "Matthew, Thank you for the patch! Yet something to improve: [auto build test ERROR on linus/master] [also build test ERROR on v5.14-rc2 next-20210720] [cannot apply to xfs-linux/for-next block/for-next] [If your patch is applied to the wrong git tree, kindly drop us a note. And when submitting patch, we suggest to use '--base' as documented in https://git-scm.com/docs/git-format-patch] url: https://github.com/0day-ci/linux/commits/Matthew-Wilcox-Oracle/Folio-support-in-block-iomap-layers/20210720-152323 base: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git 2734d6c1b1a089fb593ef6a23d4b70903526fe0c config: openrisc-randconfig-p002-20210720 (attached as .config) compiler: or1k-linux-gcc (GCC) 10.3.0 reproduce (this is a W=1 build): wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross chmod +x ~/bin/make.cross # https://github.com/0day-ci/linux/commit/c560a69342e882de7f1fd097fa2589e8d330eba0 git remote add linux-review https://github.com/0day-ci/linux git fetch --no-tags linux-review Matthew-Wilcox-Oracle/Folio-support-in-block-iomap-layers/20210720-152323 git checkout c560a69342e882de7f1fd097fa2589e8d330eba0 # save the attached .config to linux build tree COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-10.3.0 make.cross ARCH=openrisc If you fix the issue, kindly add following tag as appropriate Reported-by: kernel test robot <redacted> All errors (new ones prefixed by >>): | ^ include/asm-generic/bug.h:65:36: note: in expansion of macro 'unlikely' 65 | #define BUG_ON(condition) do { if (unlikely(condition)) BUG(); } while (0) | ^~~~~~~~ fs/iomap/buffered-io.c:207:2: note: in expansion of macro 'BUG_ON' 207 | BUG_ON(folio->index); | ^~~~~~ fs/iomap/buffered-io.c:207:14: error: invalid use of undefined type 'struct folio' 207 | BUG_ON(folio->index); | ^~ include/linux/compiler.h:35:19: note: in definition of macro '__branch_check__' 35 | expect, is_constant); \ | ^~~~~~~~~~~ include/asm-generic/bug.h:65:36: note: in expansion of macro 'unlikely' 65 | #define BUG_ON(condition) do { if (unlikely(condition)) BUG(); } while (0) | ^~~~~~~~ fs/iomap/buffered-io.c:207:2: note: in expansion of macro 'BUG_ON' 207 | BUG_ON(folio->index); | ^~~~~~ fs/iomap/buffered-io.c:208:9: error: implicit declaration of function 'folio_multi' [-Werror=implicit-function-declaration] 208 | BUG_ON(folio_multi(folio)); | ^~~~~~~~~~~ include/linux/compiler.h:33:34: note: in definition of macro '__branch_check__' 33 | ______r = __builtin_expect(!!(x), expect); \ | ^ include/asm-generic/bug.h:65:36: note: in expansion of macro 'unlikely' 65 | #define BUG_ON(condition) do { if (unlikely(condition)) BUG(); } while (0) | ^~~~~~~~ fs/iomap/buffered-io.c:208:2: note: in expansion of macro 'BUG_ON' 208 | BUG_ON(folio_multi(folio)); | ^~~~~~ fs/iomap/buffered-io.c:211:9: error: implicit declaration of function 'kmap_local_folio'; did you mean 'kmap_local_fork'? [-Werror=implicit-function-declaration] 211 | addr = kmap_local_folio(folio, 0); | ^~~~~~~~~~~~~~~~ | kmap_local_fork fs/iomap/buffered-io.c:211:7: warning: assignment to 'void *' from 'int' makes pointer from integer without a cast [-Wint-conversion] 211 | addr = kmap_local_folio(folio, 0); | ^ fs/iomap/buffered-io.c: In function 'iomap_readpage_actor': fs/iomap/buffered-io.c:251:19: error: invalid use of undefined type 'struct folio' 251 | zero_user(&folio->page, poff, plen); | ^~ fs/iomap/buffered-io.c:263:44: error: invalid use of undefined type 'struct folio' 263 | if (__bio_try_merge_page(ctx->bio, &folio->page, plen, poff, | ^~ fs/iomap/buffered-io.c:270:43: error: invalid use of undefined type 'struct folio' 270 | gfp_t gfp = mapping_gfp_constraint(folio->mapping, GFP_KERNEL); | ^~ fs/iomap/buffered-io.c: In function 'iomap_readpage': fs/iomap/buffered-io.c:309:24: warning: initialization of 'struct folio *' from 'int' makes pointer from integer without a cast [-Wint-conversion] 309 | struct folio *folio = page_folio(page); | ^~~~~~~~~~ fs/iomap/buffered-io.c:311:29: error: invalid use of undefined type 'struct folio' 311 | struct inode *inode = folio->mapping->host; | ^~ fs/iomap/buffered-io.c:319:28: error: implicit declaration of function 'folio_pos' [-Werror=implicit-function-declaration] 319 | ret = iomap_apply(inode, folio_pos(folio) + poff, len - poff, | ^~~~~~~~~ fs/iomap/buffered-io.c: In function 'iomap_readahead_actor': fs/iomap/buffered-io.c:360:21: error: implicit declaration of function 'readahead_folio'; did you mean 'readahead_count'? [-Werror=implicit-function-declaration] 360 | ctx->cur_folio = readahead_folio(ctx->rac); | ^~~~~~~~~~~~~~~ | readahead_count fs/iomap/buffered-io.c:360:19: warning: assignment to 'struct folio *' from 'int' makes pointer from integer without a cast [-Wint-conversion] 360 | ctx->cur_folio = readahead_folio(ctx->rac); | ^ fs/iomap/buffered-io.c: In function 'iomap_is_partially_uptodate': fs/iomap/buffered-io.c:427:24: warning: initialization of 'struct folio *' from 'int' makes pointer from integer without a cast [-Wint-conversion] 427 | struct folio *folio = page_folio(page); | ^~~~~~~~~~ fs/iomap/buffered-io.c: In function 'iomap_releasepage': fs/iomap/buffered-io.c:454:24: warning: initialization of 'struct folio *' from 'int' makes pointer from integer without a cast [-Wint-conversion] 454 | struct folio *folio = page_folio(page); | ^~~~~~~~~~ fs/iomap/buffered-io.c:456:31: error: invalid use of undefined type 'struct folio' 456 | trace_iomap_releasepage(folio->mapping->host, folio_pos(folio), | ^~ fs/iomap/buffered-io.c:464:6: error: implicit declaration of function 'folio_test_dirty' [-Werror=implicit-function-declaration] 464 | if (folio_test_dirty(folio) || folio_test_writeback(folio)) | ^~~~~~~~~~~~~~~~ fs/iomap/buffered-io.c:464:33: error: implicit declaration of function 'folio_test_writeback' [-Werror=implicit-function-declaration] 464 | if (folio_test_dirty(folio) || folio_test_writeback(folio)) | ^~~~~~~~~~~~~~~~~~~~ fs/iomap/buffered-io.c: In function 'iomap_invalidatepage': fs/iomap/buffered-io.c:474:24: warning: initialization of 'struct folio *' from 'int' makes pointer from integer without a cast [-Wint-conversion] 474 | struct folio *folio = page_folio(page); | ^~~~~~~~~~ fs/iomap/buffered-io.c:476:34: error: invalid use of undefined type 'struct folio' 476 | trace_iomap_invalidatepage(folio->mapping->host, offset, len); | ^~ fs/iomap/buffered-io.c:484:3: error: implicit declaration of function 'folio_cancel_dirty' [-Werror=implicit-function-declaration] 484 | folio_cancel_dirty(folio); | ^~~~~~~~~~~~~~~~~~ fs/iomap/buffered-io.c: In function 'iomap_migrate_page': fs/iomap/buffered-io.c:495:24: warning: initialization of 'struct folio *' from 'int' makes pointer from integer without a cast [-Wint-conversion] 495 | struct folio *folio = page_folio(page); | ^~~~~~~~~~ fs/iomap/buffered-io.c:496:27: warning: initialization of 'struct folio *' from 'int' makes pointer from integer without a cast [-Wint-conversion] 496 | struct folio *newfolio = page_folio(newpage); | ^~~~~~~~~~
quoted
fs/iomap/buffered-io.c:499:8: error: implicit declaration of function 'folio_migrate_mapping' [-Werror=implicit-function-declaration]
499 | ret = folio_migrate_mapping(mapping, newfolio, folio, 0);
| ^~~~~~~~~~~~~~~~~~~~~quoted
fs/iomap/buffered-io.c:507:3: error: implicit declaration of function 'folio_migrate_copy' [-Werror=implicit-function-declaration]
507 | folio_migrate_copy(newfolio, folio);
| ^~~~~~~~~~~~~~~~~~quoted
fs/iomap/buffered-io.c:509:3: error: implicit declaration of function 'folio_migrate_flags'; did you mean 'do_migrate_pages'? [-Werror=implicit-function-declaration]
509 | folio_migrate_flags(newfolio, folio);
| ^~~~~~~~~~~~~~~~~~~
| do_migrate_pages
fs/iomap/buffered-io.c: In function '__iomap_write_begin':
fs/iomap/buffered-io.c:559:2: error: implicit declaration of function 'folio_clear_error' [-Werror=implicit-function-declaration]
559 | folio_clear_error(folio);
| ^~~~~~~~~~~~~~~~~
fs/iomap/buffered-io.c:575:29: error: invalid use of undefined type 'struct folio'
575 | zero_user_segments(&folio->page, poff, from, to,
| ^~
fs/iomap/buffered-io.c: In function 'iomap_write_begin':
fs/iomap/buffered-io.c:596:52: error: 'FGP_STABLE' undeclared (first use in this function)
596 | unsigned fgp = FGP_LOCK | FGP_WRITE | FGP_CREAT | FGP_STABLE | FGP_NOFS;
| ^~~~~~~~~~
fs/iomap/buffered-io.c:596:52: note: each undeclared identifier is reported only once for each function it appears in
fs/iomap/buffered-io.c:612:10: error: implicit declaration of function '__filemap_get_folio' [-Werror=implicit-function-declaration]
612 | folio = __filemap_get_folio(inode->i_mapping, pos >> PAGE_SHIFT, fgp,
| ^~~~~~~~~~~~~~~~~~~
fs/iomap/buffered-io.c:612:8: warning: assignment to 'struct folio *' from 'int' makes pointer from integer without a cast [-Wint-conversion]
612 | folio = __filemap_get_folio(inode->i_mapping, pos >> PAGE_SHIFT, fgp,
| ^
fs/iomap/buffered-io.c:619:9: error: implicit declaration of function 'folio_file_page' [-Werror=implicit-function-declaration]
619 | page = folio_file_page(folio, pos >> PAGE_SHIFT);
| ^~~~~~~~~~~~~~~
fs/iomap/buffered-io.c:619:7: warning: assignment to 'struct page *' from 'int' makes pointer from integer without a cast [-Wint-conversion]
619 | page = folio_file_page(folio, pos >> PAGE_SHIFT);
| ^
fs/iomap/buffered-io.c:636:2: error: implicit declaration of function 'folio_put'; did you mean 'bio_put'? [-Werror=implicit-function-declaration]
636 | folio_put(folio);
| ^~~~~~~~~
| bio_put
fs/iomap/buffered-io.c: In function '__iomap_write_end':
fs/iomap/buffered-io.c:649:2: error: implicit declaration of function 'flush_dcache_folio'; did you mean 'flush_cache_all'? [-Werror=implicit-function-declaration]
649 | flush_dcache_folio(folio);
| ^~~~~~~~~~~~~~~~~~
| flush_cache_all
fs/iomap/buffered-io.c:665:2: error: implicit declaration of function 'filemap_dirty_folio' [-Werror=implicit-function-declaration]
665 | filemap_dirty_folio(inode->i_mapping, folio);
| ^~~~~~~~~~~~~~~~~~~
fs/iomap/buffered-io.c: In function 'iomap_write_end_inline':
fs/iomap/buffered-io.c:678:7: warning: assignment to 'void *' from 'int' makes pointer from integer without a cast [-Wint-conversion]
678 | addr = kmap_local_folio(folio, 0);
| ^
fs/iomap/buffered-io.c: In function 'iomap_write_end':
fs/iomap/buffered-io.c:691:22: warning: initialization of 'struct page *' from 'int' makes pointer from integer without a cast [-Wint-conversion]
691 | struct page *page = folio_file_page(folio, pos >> PAGE_SHIFT);
| ^~~~~~~~~~~~~~~
fs/iomap/buffered-io.c: In function 'iomap_write_actor':
fs/iomap/buffered-io.c:765:8: warning: assignment to 'struct page *' from 'int' makes pointer from integer without a cast [-Wint-conversion]
765 | page = folio_file_page(folio, pos >> PAGE_SHIFT);
| ^
fs/iomap/buffered-io.c: In function 'iomap_zero':
fs/iomap/buffered-io.c:891:12: warning: passing argument 1 of 'zero_user' makes pointer from integer without a cast [-Wint-conversion]
891 | zero_user(folio_file_page(folio, pos >> PAGE_SHIFT), offset, bytes);
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
| |
| int
In file included from include/linux/bio.h:8,
from include/linux/blkdev.h:18,
from include/linux/iomap.h:11,
from fs/iomap/buffered-io.c:9:
include/linux/highmem.h:231:43: note: expected 'struct page *' but argument is of type 'int'
231 | static inline void zero_user(struct page *page,
| ~~~~~~~~~~~~~^~~~
fs/iomap/buffered-io.c:892:2: error: implicit declaration of function 'folio_mark_accessed' [-Werror=implicit-function-declaration]
892 | folio_mark_accessed(folio);
| ^~~~~~~~~~~~~~~~~~~
fs/iomap/buffered-io.c: In function 'iomap_folio_mkwrite_actor':
fs/iomap/buffered-io.c:970:39: error: invalid use of undefined type 'struct folio'
970 | ret = __block_write_begin_int(&folio->page, pos, length, NULL,
| ^~
fs/iomap/buffered-io.c:974:28: error: invalid use of undefined type 'struct folio'
974 | block_commit_write(&folio->page, 0, length);
| ^~
fs/iomap/buffered-io.c:977:3: error: implicit declaration of function 'folio_mark_dirty' [-Werror=implicit-function-declaration]
977 | folio_mark_dirty(folio);
| ^~~~~~~~~~~~~~~~
fs/iomap/buffered-io.c: In function 'iomap_page_mkwrite':
fs/iomap/buffered-io.c:985:24: warning: initialization of 'struct folio *' from 'int' makes pointer from integer without a cast [-Wint-conversion]
985 | struct folio *folio = page_folio(vmf->page);
| ^~~~~~~~~~
fs/iomap/buffered-io.c:991:2: error: implicit declaration of function 'folio_lock'; did you mean 'osq_lock'? [-Werror=implicit-function-declaration]
991 | folio_lock(folio);
| ^~~~~~~~~~
| osq_lock
fs/iomap/buffered-io.c:992:8: error: implicit declaration of function 'folio_mkwrite_check_truncate'; did you mean 'page_mkwrite_check_truncate'? [-Werror=implicit-function-declaration]
992 | ret = folio_mkwrite_check_truncate(folio, inode);
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
| page_mkwrite_check_truncate
fs/iomap/buffered-io.c:1008:2: error: implicit declaration of function 'folio_wait_stable' [-Werror=implicit-function-declaration]
1008 | folio_wait_stable(folio);
| ^~~~~~~~~~~~~~~~~
fs/iomap/buffered-io.c: In function 'iomap_finish_folio_write':
fs/iomap/buffered-io.c:1030:3: error: implicit declaration of function 'folio_end_writeback'; did you mean 'file_end_write'? [-Werror=implicit-function-declaration]
1030 | folio_end_writeback(folio);
| ^~~~~~~~~~~~~~~~~~~
| file_end_write
fs/iomap/buffered-io.c: In function 'iomap_add_to_ioend':
fs/iomap/buffered-io.c:1280:38: error: invalid use of undefined type 'struct folio'
1280 | wbc_account_cgroup_owner(wbc, &folio->page, len);
vim +/folio_migrate_mapping +499 fs/iomap/buffered-io.c
489
490 #ifdef CONFIG_MIGRATION
491 int
492 iomap_migrate_page(struct address_space *mapping, struct page *newpage,
493 struct page *page, enum migrate_mode mode)
494 {
495 struct folio *folio = page_folio(page);
496 struct folio *newfolio = page_folio(newpage);
497 int ret;
498
> 499 ret = folio_migrate_mapping(mapping, newfolio, folio, 0);
500 if (ret != MIGRATEPAGE_SUCCESS)
501 return ret;
502
503 if (folio_test_private(folio))
504 folio_attach_private(newfolio, folio_detach_private(folio));
505
506 if (mode != MIGRATE_SYNC_NO_COPY)
> 507 folio_migrate_copy(newfolio, folio);
508 else
> 509 folio_migrate_flags(newfolio, folio);
510 return MIGRATEPAGE_SUCCESS;
511 }
512 EXPORT_SYMBOL_GPL(iomap_migrate_page);
513 #endif /* CONFIG_MIGRATION */
514
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org Attachments
- .config.gz [application/gzip] 22003 bytes