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

From: Stephen Rothwell <[email-masked]>
Date: Thu, 7 Nov 2019 13:21:38 +1100

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 .