All of lore.kernel.org
 help / color / mirror / Atom feed
* [hch-misc:swap_ops-updates 2/3] mm/zswap.c:995:21: error: variable has incomplete type 'struct swap_io_ctx'
@ 2026-07-22 15:18 kernel test robot
  0 siblings, 0 replies; only message in thread
From: kernel test robot @ 2026-07-22 15:18 UTC (permalink / raw)
  To: Christoph Hellwig; +Cc: oe-kbuild-all

tree:   git://git.infradead.org/users/hch/misc.git swap_ops-updates
head:   c80bf0cb4ab741f6c6dfac1d8c61e52b2c8a8491
commit: 8932d7f3e323ba9d8369a069dfd84acedb24c598 [2/3] mm/swap: add a new swap_ops.h header to allow for pluggable swap ops
config: arm64-randconfig-002-20260722 (https://download.01.org/0day-ci/archive/20260722/202607222319.vWfFfvar-lkp@intel.com/config)
compiler: clang version 18.1.8 (https://github.com/llvm/llvm-project 3b5b5c1ec4a3095ab096dd780e84d7ab81f3d7ff)
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20260722/202607222319.vWfFfvar-lkp@intel.com/reproduce)

If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202607222319.vWfFfvar-lkp@intel.com/

All errors (new ones prefixed by >>):

>> mm/zswap.c:995:21: error: variable has incomplete type 'struct swap_io_ctx'
     995 |         struct swap_io_ctx ctx = {};
         |                            ^
   mm/swap.h:11:8: note: forward declaration of 'struct swap_io_ctx'
      11 | struct swap_io_ctx;
         |        ^
   1 error generated.


vim +995 mm/zswap.c

f91e81d31c1ef7 Johannes Weiner   2024-01-29   971  
9986d35d4ceb53 Johannes Weiner   2024-01-29   972  /*********************************
9986d35d4ceb53 Johannes Weiner   2024-01-29   973  * writeback code
9986d35d4ceb53 Johannes Weiner   2024-01-29   974  **********************************/
9986d35d4ceb53 Johannes Weiner   2024-01-29   975  /*
9986d35d4ceb53 Johannes Weiner   2024-01-29   976   * Attempts to free an entry by adding a folio to the swap cache,
9986d35d4ceb53 Johannes Weiner   2024-01-29   977   * decompressing the entry data into the folio, and issuing a
9986d35d4ceb53 Johannes Weiner   2024-01-29   978   * bio write to write the folio back to the swap device.
9986d35d4ceb53 Johannes Weiner   2024-01-29   979   *
9986d35d4ceb53 Johannes Weiner   2024-01-29   980   * This can be thought of as a "resumed writeback" of the folio
9986d35d4ceb53 Johannes Weiner   2024-01-29   981   * to the swap device.  We are basically resuming the same swap
9986d35d4ceb53 Johannes Weiner   2024-01-29   982   * writeback path that was intercepted with the zswap_store()
9986d35d4ceb53 Johannes Weiner   2024-01-29   983   * in the first place.  After the folio has been decompressed into
9986d35d4ceb53 Johannes Weiner   2024-01-29   984   * the swap cache, the compressed version stored by zswap can be
9986d35d4ceb53 Johannes Weiner   2024-01-29   985   * freed.
9986d35d4ceb53 Johannes Weiner   2024-01-29   986   */
9986d35d4ceb53 Johannes Weiner   2024-01-29   987  static int zswap_writeback_entry(struct zswap_entry *entry,
9986d35d4ceb53 Johannes Weiner   2024-01-29   988  				 swp_entry_t swpentry)
9986d35d4ceb53 Johannes Weiner   2024-01-29   989  {
796c2c23e14e75 Chris Li          2024-03-26   990  	struct xarray *tree;
796c2c23e14e75 Chris Li          2024-03-26   991  	pgoff_t offset = swp_offset(swpentry);
9986d35d4ceb53 Johannes Weiner   2024-01-29   992  	struct folio *folio;
9986d35d4ceb53 Johannes Weiner   2024-01-29   993  	struct mempolicy *mpol;
78524b05f1a3e1 Kairui Song       2025-03-14   994  	struct swap_info_struct *si;
215fbe95e12f08 Christoph Hellwig 2026-07-13  @995  	struct swap_io_ctx ctx = {};
ff22f9299d7b2c Nhat Pham         2025-03-06   996  	int ret = 0;
9986d35d4ceb53 Johannes Weiner   2024-01-29   997  
9986d35d4ceb53 Johannes Weiner   2024-01-29   998  	/* try to allocate swap cache folio */
78524b05f1a3e1 Kairui Song       2025-03-14   999  	si = get_swap_device(swpentry);
78524b05f1a3e1 Kairui Song       2025-03-14  1000  	if (!si)
78524b05f1a3e1 Kairui Song       2025-03-14  1001  		return -EEXIST;
78524b05f1a3e1 Kairui Song       2025-03-14  1002  
9986d35d4ceb53 Johannes Weiner   2024-01-29  1003  	mpol = get_task_policy(current);
e1e6750df3b473 Kairui Song       2026-05-17  1004  	folio = swap_cache_alloc_folio(swpentry, GFP_KERNEL, BIT(0), NULL, mpol,
a2e61ffb47493f Kairui Song       2026-05-17  1005  				       NO_INTERLEAVE_INDEX);
78524b05f1a3e1 Kairui Song       2025-03-14  1006  	put_swap_device(si);
9986d35d4ceb53 Johannes Weiner   2024-01-29  1007  
9986d35d4ceb53 Johannes Weiner   2024-01-29  1008  	/*
a2e61ffb47493f Kairui Song       2026-05-17  1009  	 * Swap cache allocation might fail due to OOM, or the entry
a2e61ffb47493f Kairui Song       2026-05-17  1010  	 * may already be cached due to concurrent swapin or have been
a2e61ffb47493f Kairui Song       2026-05-17  1011  	 * freed. If already cached, a concurrent swapin made the folio
a2e61ffb47493f Kairui Song       2026-05-17  1012  	 * hot, so skip it. For the unlikely concurrent shrinker case,
a2e61ffb47493f Kairui Song       2026-05-17  1013  	 * it will be unlinked and freed when invalidated anyway.
9986d35d4ceb53 Johannes Weiner   2024-01-29  1014  	 */
a2e61ffb47493f Kairui Song       2026-05-17  1015  	if (IS_ERR(folio))
a2e61ffb47493f Kairui Song       2026-05-17  1016  		return PTR_ERR(folio);
9986d35d4ceb53 Johannes Weiner   2024-01-29  1017  
9986d35d4ceb53 Johannes Weiner   2024-01-29  1018  	/*
9986d35d4ceb53 Johannes Weiner   2024-01-29  1019  	 * folio is locked, and the swapcache is now secured against
f9c0f1c32cb568 Chengming Zhou    2024-02-04  1020  	 * concurrent swapping to and from the slot, and concurrent
f9c0f1c32cb568 Chengming Zhou    2024-02-04  1021  	 * swapoff so we can safely dereference the zswap tree here.
f9c0f1c32cb568 Chengming Zhou    2024-02-04  1022  	 * Verify that the swap entry hasn't been invalidated and recycled
f9c0f1c32cb568 Chengming Zhou    2024-02-04  1023  	 * behind our backs, to avoid overwriting a new swap folio with
f9c0f1c32cb568 Chengming Zhou    2024-02-04  1024  	 * old compressed data. Only when this is successful can the entry
f9c0f1c32cb568 Chengming Zhou    2024-02-04  1025  	 * be dereferenced.
9986d35d4ceb53 Johannes Weiner   2024-01-29  1026  	 */
9986d35d4ceb53 Johannes Weiner   2024-01-29  1027  	tree = swap_zswap_tree(swpentry);
ff22f9299d7b2c Nhat Pham         2025-03-06  1028  	if (entry != xa_load(tree, offset)) {
ff22f9299d7b2c Nhat Pham         2025-03-06  1029  		ret = -ENOMEM;
ff22f9299d7b2c Nhat Pham         2025-03-06  1030  		goto out;
9986d35d4ceb53 Johannes Weiner   2024-01-29  1031  	}
9986d35d4ceb53 Johannes Weiner   2024-01-29  1032  
ff22f9299d7b2c Nhat Pham         2025-03-06  1033  	if (!zswap_decompress(entry, folio)) {
ff22f9299d7b2c Nhat Pham         2025-03-06  1034  		ret = -EIO;
ff22f9299d7b2c Nhat Pham         2025-03-06  1035  		goto out;
ff22f9299d7b2c Nhat Pham         2025-03-06  1036  	}
ff22f9299d7b2c Nhat Pham         2025-03-06  1037  
ff22f9299d7b2c Nhat Pham         2025-03-06  1038  	xa_erase(tree, offset);
9986d35d4ceb53 Johannes Weiner   2024-01-29  1039  
9986d35d4ceb53 Johannes Weiner   2024-01-29  1040  	count_vm_event(ZSWPWB);
9986d35d4ceb53 Johannes Weiner   2024-01-29  1041  	if (entry->objcg)
e7ac4daeed91a2 Barry Song        2024-11-07  1042  		count_objcg_events(entry->objcg, ZSWPWB, 1);
9986d35d4ceb53 Johannes Weiner   2024-01-29  1043  
a230c20e63efef Chengming Zhou    2024-02-04  1044  	zswap_entry_free(entry);
9986d35d4ceb53 Johannes Weiner   2024-01-29  1045  
9986d35d4ceb53 Johannes Weiner   2024-01-29  1046  	/* folio is up to date */
9986d35d4ceb53 Johannes Weiner   2024-01-29  1047  	folio_mark_uptodate(folio);
9986d35d4ceb53 Johannes Weiner   2024-01-29  1048  
9986d35d4ceb53 Johannes Weiner   2024-01-29  1049  	/* move it to the tail of the inactive list after end_writeback */
9986d35d4ceb53 Johannes Weiner   2024-01-29  1050  	folio_set_reclaim(folio);
9986d35d4ceb53 Johannes Weiner   2024-01-29  1051  
9986d35d4ceb53 Johannes Weiner   2024-01-29  1052  	/* start writeback */
215fbe95e12f08 Christoph Hellwig 2026-07-13  1053  	__swap_writepage(&ctx, folio);
215fbe95e12f08 Christoph Hellwig 2026-07-13  1054  	swap_write_submit(&ctx);
9986d35d4ceb53 Johannes Weiner   2024-01-29  1055  
ff22f9299d7b2c Nhat Pham         2025-03-06  1056  out:
a2e61ffb47493f Kairui Song       2026-05-17  1057  	if (ret) {
fd8d4f862f8c27 Kairui Song       2025-09-17  1058  		swap_cache_del_folio(folio);
ff22f9299d7b2c Nhat Pham         2025-03-06  1059  		folio_unlock(folio);
ff22f9299d7b2c Nhat Pham         2025-03-06  1060  	}
ff22f9299d7b2c Nhat Pham         2025-03-06  1061  	folio_put(folio);
ff22f9299d7b2c Nhat Pham         2025-03-06  1062  	return ret;
9986d35d4ceb53 Johannes Weiner   2024-01-29  1063  }
9986d35d4ceb53 Johannes Weiner   2024-01-29  1064  

:::::: The code at line 995 was first introduced by commit
:::::: 215fbe95e12f086dd301d3353ecac8ac95d15ce1 mm/swap: introduce struct swap_io_ctx

:::::: TO: Christoph Hellwig <hch@lst.de>
:::::: CC: Andrew Morton <akpm@linux-foundation.org>

--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki

^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2026-07-22 15:18 UTC | newest]

Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-07-22 15:18 [hch-misc:swap_ops-updates 2/3] mm/zswap.c:995:21: error: variable has incomplete type 'struct swap_io_ctx' kernel test robot

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.