Re: linux-next: manual merge of the tip tree with the ext4 tree

From: Stephen Rothwell
Date: Wed Nov 27 2019 - 18:57:12 EST


Hi all,

On Thu, 7 Nov 2019 13:21:38 +1100 Stephen Rothwell <sfr@xxxxxxxxxxxxxxxx> wrote:
>
> Hi all,
>
> Today's linux-next merge of the tip tree got a conflict in:
>
> fs/jbd2/transaction.c
>
> between commit:
>
> ec8b6f600e49 ("jbd2: Factor out common parts of stopping and restarting a handle")
>
> from the ext4 tree and commit:
>
> 5facae4f3549 ("locking/lockdep: Remove unused @nested argument from lock_release()")
>
> from the tip 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/jbd2/transaction.c
> index c068912408dd,b25ebdcabfa3..000000000000
> --- a/fs/jbd2/transaction.c
> +++ b/fs/jbd2/transaction.c
> @@@ -690,49 -655,6 +690,49 @@@ error_out
> return result;
> }
>
> +static void stop_this_handle(handle_t *handle)
> +{
> + transaction_t *transaction = handle->h_transaction;
> + journal_t *journal = transaction->t_journal;
> + int revokes;
> +
> + J_ASSERT(journal_current_handle() == handle);
> + J_ASSERT(atomic_read(&transaction->t_updates) > 0);
> + current->journal_info = NULL;
> + /*
> + * Subtract necessary revoke descriptor blocks from handle credits. We
> + * take care to account only for revoke descriptor blocks the
> + * transaction will really need as large sequences of transactions with
> + * small numbers of revokes are relatively common.
> + */
> + revokes = handle->h_revoke_credits_requested - handle->h_revoke_credits;
> + if (revokes) {
> + int t_revokes, revoke_descriptors;
> + int rr_per_blk = journal->j_revoke_records_per_block;
> +
> + WARN_ON_ONCE(DIV_ROUND_UP(revokes, rr_per_blk)
> + > handle->h_total_credits);
> + t_revokes = atomic_add_return(revokes,
> + &transaction->t_outstanding_revokes);
> + revoke_descriptors =
> + DIV_ROUND_UP(t_revokes, rr_per_blk) -
> + DIV_ROUND_UP(t_revokes - revokes, rr_per_blk);
> + handle->h_total_credits -= revoke_descriptors;
> + }
> + atomic_sub(handle->h_total_credits,
> + &transaction->t_outstanding_credits);
> + if (handle->h_rsv_handle)
> + __jbd2_journal_unreserve_handle(handle->h_rsv_handle);
> + if (atomic_dec_and_test(&transaction->t_updates))
> + wake_up(&journal->j_wait_updates);
> +
> - rwsem_release(&journal->j_trans_commit_map, 1, _THIS_IP_);
> ++ rwsem_release(&journal->j_trans_commit_map, _THIS_IP_);
> + /*
> + * Scope of the GFP_NOFS context is over here and so we can restore the
> + * original alloc context.
> + */
> + memalloc_nofs_restore(handle->saved_alloc_context);
> +}
>
> /**
> * int jbd2_journal_restart() - restart a handle .

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

--
Cheers,
Stephen Rothwell

Attachment: pgpYRghl6Va2I.pgp
Description: OpenPGP digital signature