@@ -1525,15 +1525,6 @@ static void ata_qc_complete_internal(struct ata_queued_cmd *qc)
1525
1525
complete (waiting );
1526
1526
}
1527
1527
1528
- static bool ata_valid_internal_tag (struct ata_port * ap , struct ata_device * dev ,
1529
- unsigned int tag )
1530
- {
1531
- if (!ap -> scsi_host )
1532
- return !test_and_set_bit (tag , & ap -> sas_tag_allocated );
1533
- return !dev -> sdev ||
1534
- !blk_queue_find_tag (dev -> sdev -> request_queue , tag );
1535
- }
1536
-
1537
1528
/**
1538
1529
* ata_exec_internal_sg - execute libata internal command
1539
1530
* @dev: Device to which the command is sent
@@ -1594,7 +1585,6 @@ unsigned ata_exec_internal_sg(struct ata_device *dev,
1594
1585
else
1595
1586
tag = 0 ;
1596
1587
1597
- BUG_ON (!ata_valid_internal_tag (ap , dev , tag ));
1598
1588
qc = __ata_qc_from_tag (ap , tag );
1599
1589
1600
1590
qc -> tag = tag ;
@@ -4734,80 +4724,36 @@ void swap_buf_le16(u16 *buf, unsigned int buf_words)
4734
4724
}
4735
4725
4736
4726
/**
4737
- * ata_qc_new - Request an available ATA command, for queueing
4738
- * @ap: target port
4739
- *
4740
- * Some ATA host controllers may implement a queue depth which is less
4741
- * than ATA_MAX_QUEUE. So we shouldn't allocate a tag which is beyond
4742
- * the hardware limitation.
4727
+ * ata_qc_new_init - Request an available ATA command, and initialize it
4728
+ * @dev: Device from whom we request an available command structure
4743
4729
*
4744
4730
* LOCKING:
4745
4731
* None.
4746
4732
*/
4747
4733
4748
- static struct ata_queued_cmd * sas_ata_qc_new (struct ata_port * ap )
4749
- {
4750
- struct ata_queued_cmd * qc = NULL ;
4751
- unsigned int max_queue = ap -> host -> n_tags ;
4752
- unsigned int i , tag ;
4753
-
4754
- for (i = 0 , tag = ap -> sas_last_tag + 1 ; i < max_queue ; i ++ , tag ++ ) {
4755
- tag = tag < max_queue ? tag : 0 ;
4756
-
4757
- /* the last tag is reserved for internal command. */
4758
- if (tag == ATA_TAG_INTERNAL )
4759
- continue ;
4760
-
4761
- if (!test_and_set_bit (tag , & ap -> sas_tag_allocated )) {
4762
- qc = __ata_qc_from_tag (ap , tag );
4763
- qc -> tag = tag ;
4764
- ap -> sas_last_tag = tag ;
4765
- break ;
4766
- }
4767
- }
4768
-
4769
- return qc ;
4770
- }
4771
-
4772
- static struct ata_queued_cmd * ata_qc_new (struct ata_port * ap , int blktag )
4734
+ struct ata_queued_cmd * ata_qc_new_init (struct ata_device * dev , int tag )
4773
4735
{
4736
+ struct ata_port * ap = dev -> link -> ap ;
4774
4737
struct ata_queued_cmd * qc ;
4775
4738
4776
4739
/* no command while frozen */
4777
4740
if (unlikely (ap -> pflags & ATA_PFLAG_FROZEN ))
4778
4741
return NULL ;
4779
4742
4780
- /* SATA will directly use block tag. libsas need its own tag management */
4781
- if (ap -> scsi_host ) {
4782
- qc = __ata_qc_from_tag (ap , blktag );
4783
- qc -> tag = blktag ;
4784
- return qc ;
4743
+ /* libsas case */
4744
+ if (! ap -> scsi_host ) {
4745
+ tag = ata_sas_allocate_tag (ap );
4746
+ if ( tag < 0 )
4747
+ return NULL ;
4785
4748
}
4786
4749
4787
- return sas_ata_qc_new (ap );
4788
- }
4789
-
4790
- /**
4791
- * ata_qc_new_init - Request an available ATA command, and initialize it
4792
- * @dev: Device from whom we request an available command structure
4793
- *
4794
- * LOCKING:
4795
- * None.
4796
- */
4797
-
4798
- struct ata_queued_cmd * ata_qc_new_init (struct ata_device * dev , int blktag )
4799
- {
4800
- struct ata_port * ap = dev -> link -> ap ;
4801
- struct ata_queued_cmd * qc ;
4802
-
4803
- qc = ata_qc_new (ap , blktag );
4804
- if (qc ) {
4805
- qc -> scsicmd = NULL ;
4806
- qc -> ap = ap ;
4807
- qc -> dev = dev ;
4750
+ qc = __ata_qc_from_tag (ap , tag );
4751
+ qc -> tag = tag ;
4752
+ qc -> scsicmd = NULL ;
4753
+ qc -> ap = ap ;
4754
+ qc -> dev = dev ;
4808
4755
4809
- ata_qc_reinit (qc );
4810
- }
4756
+ ata_qc_reinit (qc );
4811
4757
4812
4758
return qc ;
4813
4759
}
@@ -4822,12 +4768,6 @@ struct ata_queued_cmd *ata_qc_new_init(struct ata_device *dev, int blktag)
4822
4768
* LOCKING:
4823
4769
* spin_lock_irqsave(host lock)
4824
4770
*/
4825
- static void sas_ata_qc_free (unsigned int tag , struct ata_port * ap )
4826
- {
4827
- if (!ap -> scsi_host )
4828
- clear_bit (tag , & ap -> sas_tag_allocated );
4829
- }
4830
-
4831
4771
void ata_qc_free (struct ata_queued_cmd * qc )
4832
4772
{
4833
4773
struct ata_port * ap ;
@@ -4840,7 +4780,8 @@ void ata_qc_free(struct ata_queued_cmd *qc)
4840
4780
tag = qc -> tag ;
4841
4781
if (likely (ata_tag_valid (tag ))) {
4842
4782
qc -> tag = ATA_TAG_POISON ;
4843
- sas_ata_qc_free (tag , ap );
4783
+ if (!ap -> scsi_host )
4784
+ ata_sas_free_tag (tag , ap );
4844
4785
}
4845
4786
}
4846
4787
0 commit comments