mpt2sas: Add free smids to the head, not tail of list
Reusing a smid quickly means it's still cache-hot. This yields a small but noticable performance improvement in a well-known database benchmark. This improvement is already present in the mpt3sas driver. Signed-off-by: Matthew Wilcox <matthew.r.wilcox@intel.com> Reviewed-by: Nicholas Bellinger <nab@linux-iscsi.org> Reviewed-by: Praveen Krishnamoorthy <Praveen.krishnamoorthy@lsi.com> Acked-by: Sreekanth Reddy <Sreekanth.reddy@lsi.com> Signed-off-by: Christoph Hellwig <hch@lst.de>
This commit is contained in:
Родитель
90f951edb7
Коммит
049b3e81d7
|
@ -1739,14 +1739,14 @@ mpt2sas_base_free_smid(struct MPT2SAS_ADAPTER *ioc, u16 smid)
|
|||
list_for_each_entry_safe(chain_req, next,
|
||||
&ioc->scsi_lookup[i].chain_list, tracker_list) {
|
||||
list_del_init(&chain_req->tracker_list);
|
||||
list_add_tail(&chain_req->tracker_list,
|
||||
list_add(&chain_req->tracker_list,
|
||||
&ioc->free_chain_list);
|
||||
}
|
||||
}
|
||||
ioc->scsi_lookup[i].cb_idx = 0xFF;
|
||||
ioc->scsi_lookup[i].scmd = NULL;
|
||||
ioc->scsi_lookup[i].direct_io = 0;
|
||||
list_add_tail(&ioc->scsi_lookup[i].tracker_list,
|
||||
list_add(&ioc->scsi_lookup[i].tracker_list,
|
||||
&ioc->free_list);
|
||||
spin_unlock_irqrestore(&ioc->scsi_lookup_lock, flags);
|
||||
|
||||
|
@ -1764,13 +1764,13 @@ mpt2sas_base_free_smid(struct MPT2SAS_ADAPTER *ioc, u16 smid)
|
|||
/* hi-priority */
|
||||
i = smid - ioc->hi_priority_smid;
|
||||
ioc->hpr_lookup[i].cb_idx = 0xFF;
|
||||
list_add_tail(&ioc->hpr_lookup[i].tracker_list,
|
||||
list_add(&ioc->hpr_lookup[i].tracker_list,
|
||||
&ioc->hpr_free_list);
|
||||
} else if (smid <= ioc->hba_queue_depth) {
|
||||
/* internal queue */
|
||||
i = smid - ioc->internal_smid;
|
||||
ioc->internal_lookup[i].cb_idx = 0xFF;
|
||||
list_add_tail(&ioc->internal_lookup[i].tracker_list,
|
||||
list_add(&ioc->internal_lookup[i].tracker_list,
|
||||
&ioc->internal_free_list);
|
||||
}
|
||||
spin_unlock_irqrestore(&ioc->scsi_lookup_lock, flags);
|
||||
|
|
Загрузка…
Ссылка в новой задаче