Subject: Re: linux-next: manual merge of the vfs-brauner tree with the exfat tree

From: Stephen Rothwell <[email-masked]>
Date: Tue, 17 Sep 2024 08:22:19 +1000

Hi all,

On Mon, 12 Aug 2024 08:10:46 +1000 Stephen Rothwell <[email-masked]> wrote:
>
> Today's linux-next merge of the vfs-brauner tree got a conflict in:
> 
>   fs/exfat/inode.c
> 
> between commits:
> 
>   3e491faa7648 ("exfat: do not fallback to buffered write")
>   98ad7b9012b5 ("exfat: Implement sops->shutdown and ioctl")
> 
> from the exfat tree and commits:
> 
>   a225800f322a ("fs: Convert aops->write_end to take a folio")
>   1da86618bdce ("fs: Convert aops->write_begin to take a folio")
> 
> from the vfs-brauner 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 fs/exfat/inode.c
> index 7d43a0942911,05f0e07b01d0..000000000000
> --- a/fs/exfat/inode.c
> +++ b/fs/exfat/inode.c
> @@@ -428,11 -452,7 +428,10 @@@ static int exfat_write_begin(struct fil
>   {
>   	int ret;
>   
>  +	if (unlikely(exfat_forced_shutdown(mapping->host->i_sb)))
>  +		return -EIO;
>  +
> - 	*pagep = NULL;
> - 	ret = block_write_begin(mapping, pos, len, pagep, exfat_get_block);
> + 	ret = block_write_begin(mapping, pos, len, foliop, exfat_get_block);
>   
>   	if (ret < 0)
>   		exfat_write_failed(mapping, pos+len);
> @@@ -448,7 -468,15 +447,7 @@@ static int exfat_write_end(struct file 
>   	struct exfat_inode_info *ei = EXFAT_I(inode);
>   	int err;
>   
> - 	err = generic_write_end(file, mapping, pos, len, copied, pagep, fsdata);
> + 	err = generic_write_end(file, mapping, pos, len, copied, folio, fsdata);
>  -
>  -	if (ei->i_size_aligned < i_size_read(inode)) {
>  -		exfat_fs_error(inode->i_sb,
>  -			"invalid size(size(%llu) > aligned(%llu)\n",
>  -			i_size_read(inode), ei->i_size_aligned);
>  -		return -EIO;
>  -	}
>  -
>   	if (err < len)
>   		exfat_write_failed(mapping, pos+len);
>   

This is now a conflict between the exfat tree and Linus' tree.

-- 
Cheers,
Stephen Rothwell