Subject: Re: linux-next: manual merge of the djw-vfs tree with the xfs tree

From: "Darrick J. Wong" <[email-masked]>
Date: Tue, 22 Aug 2023 21:46:26 -0700

On Wed, Aug 23, 2023 at 09:33:47AM +1000, Stephen Rothwell wrote:
> Hi all,
> 
> Today's linux-next merge of the djw-vfs tree got a conflict in:
> 
>   fs/xfs/scrub/scrub.c
> 
> between commit:
> 
>   526aab5f5790 ("xfs: implement online scrubbing of rtsummary info")
> 
> from the xfs tree and commit:
> 
>   ce85a1e04645 ("xfs: stabilize fs summary counters for online fsck")
> 
> from the djw-vfs 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/xfs/scrub/scrub.c
> index e92129d74462,a0fffbcd022b..000000000000
> --- a/fs/xfs/scrub/scrub.c
> +++ b/fs/xfs/scrub/scrub.c
> @@@ -178,16 -178,16 +178,18 @@@ xchk_teardown
>   	}
>   	if (sc->ip) {
>   		if (sc->ilock_flags)
>  -			xfs_iunlock(sc->ip, sc->ilock_flags);
>  -		if (sc->ip != ip_in &&
>  -		    !xfs_internal_inum(sc->mp, sc->ip->i_ino))
>  -			xchk_irele(sc, sc->ip);
>  +			xchk_iunlock(sc, sc->ilock_flags);
>  +		xchk_irele(sc, sc->ip);
>   		sc->ip = NULL;
>   	}
> - 	if (sc->sm->sm_flags & XFS_SCRUB_IFLAG_REPAIR)
> + 	if (sc->flags & XCHK_HAVE_FREEZE_PROT) {
> + 		sc->flags &= ~XCHK_HAVE_FREEZE_PROT;
>   		mnt_drop_write_file(sc->file);
> + 	}

Yep, I changed the mnt_drop_write_file conditional to be an explicit
flag instead of implied by the XFS_SCRUB_IFLAG_REPAIR coming from
userspace.  You've correctly resolved both conflicts, thank you.

(And apologies for things being way messier than is traditional.)

--D

>  +	if (sc->xfile) {
>  +		xfile_destroy(sc->xfile);
>  +		sc->xfile = NULL;
>  +	}
>   	if (sc->buf) {
>   		if (sc->buf_cleanup)
>   			sc->buf_cleanup(sc->buf);