Subject: linux-next: manual merge of the akpm-current tree with the btrfs-kdave tree

From: Stephen Rothwell <[email-masked]>
Date: Fri, 5 Oct 2018 15:47:21 +1000

Hi all,

Today's linux-next merge of the akpm-current tree got a conflict in:

  include/linux/swap.h

between commit:

  0f83d16b8f1f ("mm: split SWP_FILE into SWP_ACTIVATED and SWP_FS")

from the btrfs-kdave tree and commit:

  26833300651e ("mm, swap: fix race between swapoff and some swap operations")

from the akpm-current tree.

I fixed it up (see below) and can carry the fix as necessary. This
is now fixed as far as linux-next is concerned, but any non trivial
conflicts should be mentioned to your upstream maintainer when your tree
is submitted for merging.  You may also want to consider cooperating
with the maintainer of the conflicting tree to minimise any particularly
complex conflicts.

-- 
Cheers,
Stephen Rothwell

diff --cc include/linux/swap.h
index 4fff094dbd53,f32f94639b13..000000000000
--- a/include/linux/swap.h
+++ b/include/linux/swap.h
@@@ -167,14 -167,14 +167,15 @@@ enum 
  	SWP_SOLIDSTATE	= (1 << 4),	/* blkdev seeks are cheap */
  	SWP_CONTINUED	= (1 << 5),	/* swap_map has count continuation */
  	SWP_BLKDEV	= (1 << 6),	/* its a block device */
 -	SWP_FILE	= (1 << 7),	/* set after swap_activate success */
 -	SWP_AREA_DISCARD = (1 << 8),	/* single-time swap area discards */
 -	SWP_PAGE_DISCARD = (1 << 9),	/* freed swap page-cluster discards */
 -	SWP_STABLE_WRITES = (1 << 10),	/* no overwrite PG_writeback pages */
 -	SWP_SYNCHRONOUS_IO = (1 << 11),	/* synchronous IO is efficient */
 -	SWP_VALID	= (1 << 12),	/* swap is valid to be operated on? */
 +	SWP_ACTIVATED	= (1 << 7),	/* set after swap_activate success */
 +	SWP_FS		= (1 << 8),	/* swap file goes through fs */
 +	SWP_AREA_DISCARD = (1 << 9),	/* single-time swap area discards */
 +	SWP_PAGE_DISCARD = (1 << 10),	/* freed swap page-cluster discards */
 +	SWP_STABLE_WRITES = (1 << 11),	/* no overwrite PG_writeback pages */
 +	SWP_SYNCHRONOUS_IO = (1 << 12),	/* synchronous IO is efficient */
++	SWP_VALID	= (1 << 13),	/* swap is valid to be operated on? */
  					/* add others here before... */
--	SWP_SCANNING	= (1 << 13),	/* refcount in scan_swap_map */
++	SWP_SCANNING	= (1 << 14),	/* refcount in scan_swap_map */
  };
  
  #define SWAP_CLUSTER_MAX 32UL
@@@ -297,15 -297,20 +298,15 @@@ struct vma_swap_readahead 
  
  /* linux/mm/workingset.c */
  void *workingset_eviction(struct address_space *mapping, struct page *page);
- bool workingset_refault(void *shadow);
+ void workingset_refault(struct page *page, void *shadow);
  void workingset_activation(struct page *page);
  
 -/* Do not use directly, use workingset_lookup_update */
 -void workingset_update_node(struct radix_tree_node *node);
 -
 -/* Returns workingset_update_node() if the mapping has shadow entries. */
 -#define workingset_lookup_update(mapping)				\
 -({									\
 -	radix_tree_update_node_t __helper = workingset_update_node;	\
 -	if (dax_mapping(mapping) || shmem_mapping(mapping))		\
 -		__helper = NULL;					\
 -	__helper;							\
 -})
 +/* Only track the nodes of mappings with shadow entries */
 +void workingset_update_node(struct xa_node *node);
 +#define mapping_set_update(xas, mapping) do {				\
 +	if (!dax_mapping(mapping) && !shmem_mapping(mapping))		\
 +		xas_set_update(xas, workingset_update_node);		\
 +} while (0)
  
  /* linux/mm/page_alloc.c */
  extern unsigned long totalram_pages;