static int local_ata_check_ready(struct ata_link *link) { struct ata_port *ap = link->ap; struct domain_device *dev = ap->private_data; struct sas_internal *i = dev_to_sas_internal(dev); if (i->dft->lldd_ata_check_ready) return i->dft->lldd_ata_check_ready(dev); else { return 1; } }
static int local_ata_check_ready(struct ata_link *link) { struct ata_port *ap = link->ap; struct domain_device *dev = ap->private_data; struct sas_internal *i = dev_to_sas_internal(dev); if (i->dft->lldd_ata_check_ready) return i->dft->lldd_ata_check_ready(dev); else { /* lldd's that don't implement 'ready' checking get the * old default behavior of not coordinating reset * recovery with libata */ return 1; } }
level, ap->print_id, dev_name(dev), &vaf); va_end(args); return r; } static int sas_ata_hard_reset(struct ata_link *link, unsigned int *class, unsigned long deadline) { int ret = 0, res; struct sas_phy *phy; struct ata_port *ap = link->ap; int (*check_ready)(struct ata_link *link); struct domain_device *dev = ap->private_data; struct sas_internal *i = dev_to_sas_internal(dev); res = i->dft->lldd_I_T_nexus_reset(dev); if (res == -ENODEV) return res; if (res != TMF_RESP_FUNC_COMPLETE) sas_ata_printk(KERN_DEBUG, dev, "Unable to reset ata device?\n"); phy = sas_get_local_phy(dev); if (scsi_is_sas_phy_local(phy)) check_ready = local_ata_check_ready; else check_ready = smp_ata_check_ready; sas_put_local_phy(phy);