• Damien Le Moal's avatar
    ata: libata-sata: Fix device queue depth control · 141f3d62
    Damien Le Moal authored
    The function __ata_change_queue_depth() uses the helper
    ata_scsi_find_dev() to get the ata_device structure of a scsi device and
    set that device maximum queue depth. However, when the ata device is
    managed by libsas, ata_scsi_find_dev() returns NULL, turning
    __ata_change_queue_depth() into a nop, which prevents the user from
    setting the maximum queue depth of ATA devices used with libsas based
    HBAs.
    
    Fix this by renaming __ata_change_queue_depth() to
    ata_change_queue_depth() and adding a pointer to the ata_device
    structure of the target device as argument. This pointer is provided by
    ata_scsi_change_queue_depth() using ata_scsi_find_dev() in the case of
    a libata managed device and by sas_change_queue_depth() using
    sas_to_ata_dev() in the case of a libsas managed ata device.
    Signed-off-by: default avatarDamien Le Moal <damien.lemoal@opensource.wdc.com>
    Tested-by: default avatarJohn Garry <john.garry@huawei.com>
    141f3d62
sas_scsi_host.c 32.4 KB