Lines Matching refs:sdev
88 struct scsi_device *sdev; member
105 struct scsi_device *sdev,
107 static void alua_check(struct scsi_device *sdev, bool force);
126 static int submit_rtpg(struct scsi_device *sdev, unsigned char *buff, in submit_rtpg() argument
145 return scsi_execute_cmd(sdev, cdb, opf, buff, bufflen, in submit_rtpg()
157 static int submit_stpg(struct scsi_device *sdev, int group_id, in submit_stpg() argument
180 return scsi_execute_cmd(sdev, cdb, opf, stpg_data, in submit_stpg()
217 static struct alua_port_group *alua_alloc_pg(struct scsi_device *sdev, in alua_alloc_pg() argument
226 pg->device_id_len = scsi_vpd_lun_id(sdev, pg->device_id_str, in alua_alloc_pg()
233 sdev_printk(KERN_INFO, sdev, in alua_alloc_pg()
274 static int alua_check_tpgs(struct scsi_device *sdev) in alua_check_tpgs() argument
282 if (sdev->type != TYPE_DISK) { in alua_check_tpgs()
283 sdev_printk(KERN_INFO, sdev, in alua_check_tpgs()
289 tpgs = scsi_device_tpgs(sdev); in alua_check_tpgs()
292 sdev_printk(KERN_INFO, sdev, in alua_check_tpgs()
297 sdev_printk(KERN_INFO, sdev, "%s: supports explicit TPGS\n", in alua_check_tpgs()
301 sdev_printk(KERN_INFO, sdev, "%s: supports implicit TPGS\n", in alua_check_tpgs()
305 sdev_printk(KERN_INFO, sdev, "%s: not supported\n", in alua_check_tpgs()
309 sdev_printk(KERN_INFO, sdev, in alua_check_tpgs()
326 static int alua_check_vpd(struct scsi_device *sdev, struct alua_dh_data *h, in alua_check_vpd() argument
334 group_id = scsi_vpd_tpg_id(sdev, &rel_port); in alua_check_vpd()
341 sdev_printk(KERN_INFO, sdev, in alua_check_vpd()
347 pg = alua_alloc_pg(sdev, group_id, tpgs); in alua_check_vpd()
354 sdev_printk(KERN_INFO, sdev, in alua_check_vpd()
359 sdev_printk(KERN_INFO, sdev, in alua_check_vpd()
386 alua_rtpg_queue(pg, sdev, NULL, true); in alua_check_vpd()
417 static void alua_handle_state_transition(struct scsi_device *sdev) in alua_handle_state_transition() argument
419 struct alua_dh_data *h = sdev->handler_data; in alua_handle_state_transition()
427 alua_check(sdev, false); in alua_handle_state_transition()
430 static enum scsi_disposition alua_check_sense(struct scsi_device *sdev, in alua_check_sense() argument
439 alua_handle_state_transition(sdev); in alua_check_sense()
448 alua_handle_state_transition(sdev); in alua_check_sense()
457 alua_check(sdev, true); in alua_check_sense()
474 alua_check(sdev, true); in alua_check_sense()
481 alua_check(sdev, true); in alua_check_sense()
510 static int alua_tur(struct scsi_device *sdev) in alua_tur() argument
515 retval = scsi_test_unit_ready(sdev, ALUA_FAILOVER_TIMEOUT * HZ, in alua_tur()
535 static int alua_rtpg(struct scsi_device *sdev, struct alua_port_group *pg) in alua_rtpg() argument
569 retval = submit_rtpg(sdev, buff, bufflen, &sense_hdr, pg->flags); in alua_rtpg()
582 sdev_printk(KERN_INFO, sdev, in alua_rtpg()
589 sdev_printk(KERN_INFO, sdev, in alua_rtpg()
632 sdev_printk(KERN_ERR, sdev, "%s: rtpg retry\n", in alua_rtpg()
634 scsi_print_sense_hdr(sdev, ALUA_DH_NAME, &sense_hdr); in alua_rtpg()
638 sdev_printk(KERN_ERR, sdev, "%s: rtpg failed\n", in alua_rtpg()
640 scsi_print_sense_hdr(sdev, ALUA_DH_NAME, &sense_hdr); in alua_rtpg()
654 sdev_printk(KERN_WARNING, sdev, in alua_rtpg()
670 sdev_printk(KERN_INFO, sdev, in alua_rtpg()
701 if (!h->sdev) in alua_rtpg()
703 h->sdev->access_state = desc[0]; in alua_rtpg()
723 sdev_printk(KERN_INFO, sdev, in alua_rtpg()
750 if (!h->sdev) in alua_rtpg()
752 h->sdev->access_state = in alua_rtpg()
755 h->sdev->access_state |= in alua_rtpg()
785 static unsigned alua_stpg(struct scsi_device *sdev, struct alua_port_group *pg) in alua_stpg() argument
811 sdev_printk(KERN_INFO, sdev, in alua_stpg()
816 retval = submit_stpg(sdev, pg->group_id, &sense_hdr); in alua_stpg()
820 sdev_printk(KERN_INFO, sdev, in alua_stpg()
826 sdev_printk(KERN_INFO, sdev, "%s: stpg failed\n", in alua_stpg()
828 scsi_print_sense_hdr(sdev, ALUA_DH_NAME, &sense_hdr); in alua_stpg()
843 struct scsi_device *sdev = NULL, *prev_sdev; in alua_rtpg_select_sdev() local
855 if (!h->sdev) in alua_rtpg_select_sdev()
857 if (h->sdev == pg->rtpg_sdev) { in alua_rtpg_select_sdev()
863 !scsi_device_get(h->sdev)) { in alua_rtpg_select_sdev()
864 sdev = h->sdev; in alua_rtpg_select_sdev()
870 if (!sdev) { in alua_rtpg_select_sdev()
877 sdev_printk(KERN_INFO, sdev, "rtpg retry on different device\n"); in alua_rtpg_select_sdev()
880 pg->rtpg_sdev = sdev; in alua_rtpg_select_sdev()
889 struct scsi_device *sdev, *prev_sdev = NULL; in alua_rtpg_work() local
897 sdev = pg->rtpg_sdev; in alua_rtpg_work()
898 if (!sdev) { in alua_rtpg_work()
912 if (alua_tur(sdev) == SCSI_DH_RETRY) { in alua_rtpg_work()
925 err = alua_rtpg(sdev, pg); in alua_rtpg_work()
950 err = alua_stpg(sdev, pg); in alua_rtpg_work()
983 scsi_device_put(sdev); in alua_rtpg_work()
1008 struct scsi_device *sdev, in alua_rtpg_queue() argument
1014 if (WARN_ON_ONCE(!pg) || scsi_device_get(sdev)) in alua_rtpg_queue()
1024 struct alua_dh_data *h = sdev->handler_data; in alua_rtpg_queue()
1031 pg->rtpg_sdev = sdev; in alua_rtpg_queue()
1049 sdev = NULL; in alua_rtpg_queue()
1053 if (sdev) in alua_rtpg_queue()
1054 scsi_device_put(sdev); in alua_rtpg_queue()
1066 static int alua_initialize(struct scsi_device *sdev, struct alua_dh_data *h) in alua_initialize() argument
1072 tpgs = alua_check_tpgs(sdev); in alua_initialize()
1074 err = alua_check_vpd(sdev, h, tpgs); in alua_initialize()
1088 static int alua_set_params(struct scsi_device *sdev, const char *params) in alua_set_params() argument
1090 struct alua_dh_data *h = sdev->handler_data; in alua_set_params()
1132 static int alua_activate(struct scsi_device *sdev, in alua_activate() argument
1135 struct alua_dh_data *h = sdev->handler_data; in alua_activate()
1161 if (alua_rtpg_queue(pg, sdev, qdata, true)) { in alua_activate()
1180 static void alua_check(struct scsi_device *sdev, bool force) in alua_check() argument
1182 struct alua_dh_data *h = sdev->handler_data; in alua_check()
1192 alua_rtpg_queue(pg, sdev, NULL, force); in alua_check()
1202 static blk_status_t alua_prep_fn(struct scsi_device *sdev, struct request *req) in alua_prep_fn() argument
1204 struct alua_dh_data *h = sdev->handler_data; in alua_prep_fn()
1226 static void alua_rescan(struct scsi_device *sdev) in alua_rescan() argument
1228 struct alua_dh_data *h = sdev->handler_data; in alua_rescan()
1230 alua_initialize(sdev, h); in alua_rescan()
1237 static int alua_bus_attach(struct scsi_device *sdev) in alua_bus_attach() argument
1248 h->sdev = sdev; in alua_bus_attach()
1252 err = alua_initialize(sdev, h); in alua_bus_attach()
1256 sdev->handler_data = h; in alua_bus_attach()
1267 static void alua_bus_detach(struct scsi_device *sdev) in alua_bus_detach() argument
1269 struct alua_dh_data *h = sdev->handler_data; in alua_bus_detach()
1282 sdev->handler_data = NULL; in alua_bus_detach()