linux-next: manual merge of the libata tree with the origin tree

Mark Brown posted 1 patch 6 days, 11 hours ago
linux-next: manual merge of the libata tree with the origin tree
Posted by Mark Brown 6 days, 11 hours ago
Hi all,

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

  drivers/ata/libata-scsi.c

between commits:

  759e8756da00a ("ata: libata-scsi: do not needlessly defer commands when using PMP with FBS")
  360190bd965f9 ("ata: libata-scsi: improve readability of ata_scsi_qc_issue()")

from the origin tree and commit:

  374a9cb4bd6a0 ("ata: libata: Pass ap parameter directly to functions in the issuing path")

from the libata 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.

diff --cc drivers/ata/libata-scsi.c
index d43207c6e4679,0fe7ffded6e24..0000000000000
--- a/drivers/ata/libata-scsi.c
+++ b/drivers/ata/libata-scsi.c
@@@ -1677,11 -1676,11 +1677,11 @@@ void ata_scsi_deferred_qc_work(struct w
  	 * such case, we should not need any more deferring the qc, so warn if
  	 * qc_defer() says otherwise.
  	 */
 -	qc = ap->deferred_qc;
 +	qc = link->deferred_qc;
  	if (qc && !ata_port_eh_scheduled(ap)) {
  		WARN_ON_ONCE(ap->ops->qc_defer(qc));
 -		ap->deferred_qc = NULL;
 +		link->deferred_qc = NULL;
- 		ata_qc_issue(qc);
+ 		ata_qc_issue(ap, qc);
  	}
  
  	spin_unlock_irqrestore(ap->lock, flags);
@@@ -1769,8 -1763,8 +1769,9 @@@ static void ata_scsi_qc_complete(struc
  }
  
  static int ata_scsi_qc_issue(struct ata_port *ap, struct ata_queued_cmd *qc)
+ 	__must_hold(ap->lock)
  {
 +	struct ata_link *link = qc->dev->link;
  	int ret;
  
  	if (!ap->ops->qc_defer)
@@@ -1808,31 -1794,31 +1809,31 @@@
  	default:
  		WARN_ON_ONCE(1);
  		ret = SCSI_MLQUEUE_HOST_BUSY;
 -		break;
 +		goto free_qc;
  	}
  
 -	if (ret) {
 -		/*
 -		 * We must defer this qc: if this is not an NCQ command, keep
 -		 * this qc as a deferred one and report to the SCSI layer that
 -		 * we issued it so that it is not requeued. The deferred qc will
 -		 * be issued with the port deferred_qc_work once all on-going
 -		 * commands complete.
 -		 */
 -		if (!ata_is_ncq(qc->tf.protocol)) {
 -			ap->deferred_qc = qc;
 -			return 0;
 -		}
 -
 -		/* Force a requeue of the command to defer its execution. */
 -		ata_qc_free(qc);
 -		return ret;
 -	}
 -
 -issue:
 +issue_qc:
- 	ata_qc_issue(qc);
+ 	ata_qc_issue(ap, qc);
 -
  	return 0;
 +
 +defer_qc:
 +	/*
 +	 * We must defer this qc: if this is not an NCQ command, keep
 +	 * this qc as a deferred one and report to the SCSI layer that
 +	 * we issued it so that it is not requeued. The deferred qc will
 +	 * be issued with the port deferred_qc_work once all on-going
 +	 * commands complete.
 +	 */
 +	if (!ata_is_ncq(qc->tf.protocol)) {
 +		link->deferred_qc = qc;
 +		return 0;
 +	}
 +
 +free_qc:
 +	/* Force a requeue of the command to defer its execution. */
 +	ata_qc_free(qc);
 +
 +	return ret;
  }
  
  /**
Re: linux-next: manual merge of the libata tree with the origin tree
Posted by Niklas Cassel 6 days, 9 hours ago
On Mon, Jun 01, 2026 at 05:59:20PM +0100, Mark Brown wrote:
> Hi all,
> 
> Today's linux-next merge of the libata tree got a conflict in:
> 
>   drivers/ata/libata-scsi.c
> 
> between commits:
> 
>   759e8756da00a ("ata: libata-scsi: do not needlessly defer commands when using PMP with FBS")
>   360190bd965f9 ("ata: libata-scsi: improve readability of ata_scsi_qc_issue()")
> 
> from the origin tree and commit:
> 
>   374a9cb4bd6a0 ("ata: libata: Pass ap parameter directly to functions in the issuing path")
> 
> from the libata 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.

Hello Mark,

Thank you for the heads-up!

Since we are about three weeks away from the merge window opening,
I decided to simply rebase our for-next branch.
(Instead of merging in the fixes branch to for-next.)

FWIW, your conflict resolution looks correct.
(But should not be needed for tomorrow's linux-next tag.)


Kind regards,
Niklas