Lines Matching refs:sdev

185 static void scsi_unlock_floptical(struct scsi_device *sdev,  in scsi_unlock_floptical()  argument
190 sdev_printk(KERN_NOTICE, sdev, "unlocking floptical drive\n"); in scsi_unlock_floptical()
197 scsi_execute_req(sdev, scsi_cmd, DMA_FROM_DEVICE, result, 0x2a, NULL, in scsi_unlock_floptical()
218 struct scsi_device *sdev; in scsi_alloc_sdev() local
222 sdev = kzalloc(sizeof(*sdev) + shost->transportt->device_size, in scsi_alloc_sdev()
224 if (!sdev) in scsi_alloc_sdev()
227 sdev->vendor = scsi_null_device_strs; in scsi_alloc_sdev()
228 sdev->model = scsi_null_device_strs; in scsi_alloc_sdev()
229 sdev->rev = scsi_null_device_strs; in scsi_alloc_sdev()
230 sdev->host = shost; in scsi_alloc_sdev()
231 sdev->queue_ramp_up_period = SCSI_DEFAULT_RAMP_UP_PERIOD; in scsi_alloc_sdev()
232 sdev->id = starget->id; in scsi_alloc_sdev()
233 sdev->lun = lun; in scsi_alloc_sdev()
234 sdev->channel = starget->channel; in scsi_alloc_sdev()
235 mutex_init(&sdev->state_mutex); in scsi_alloc_sdev()
236 sdev->sdev_state = SDEV_CREATED; in scsi_alloc_sdev()
237 INIT_LIST_HEAD(&sdev->siblings); in scsi_alloc_sdev()
238 INIT_LIST_HEAD(&sdev->same_target_siblings); in scsi_alloc_sdev()
239 INIT_LIST_HEAD(&sdev->cmd_list); in scsi_alloc_sdev()
240 INIT_LIST_HEAD(&sdev->starved_entry); in scsi_alloc_sdev()
241 INIT_LIST_HEAD(&sdev->event_list); in scsi_alloc_sdev()
242 spin_lock_init(&sdev->list_lock); in scsi_alloc_sdev()
243 mutex_init(&sdev->inquiry_mutex); in scsi_alloc_sdev()
244 INIT_WORK(&sdev->event_work, scsi_evt_thread); in scsi_alloc_sdev()
245 INIT_WORK(&sdev->requeue_work, scsi_requeue_run_queue); in scsi_alloc_sdev()
247 sdev->sdev_gendev.parent = get_device(&starget->dev); in scsi_alloc_sdev()
248 sdev->sdev_target = starget; in scsi_alloc_sdev()
251 sdev->hostdata = hostdata; in scsi_alloc_sdev()
255 sdev->max_device_blocked = SCSI_DEFAULT_DEVICE_BLOCKED; in scsi_alloc_sdev()
260 sdev->type = -1; in scsi_alloc_sdev()
267 sdev->borken = 1; in scsi_alloc_sdev()
270 sdev->request_queue = scsi_mq_alloc_queue(sdev); in scsi_alloc_sdev()
272 sdev->request_queue = scsi_old_alloc_queue(sdev); in scsi_alloc_sdev()
273 if (!sdev->request_queue) { in scsi_alloc_sdev()
277 kfree(sdev); in scsi_alloc_sdev()
280 WARN_ON_ONCE(!blk_get_queue(sdev->request_queue)); in scsi_alloc_sdev()
281 sdev->request_queue->queuedata = sdev; in scsi_alloc_sdev()
283 if (!shost_use_blk_mq(sdev->host)) { in scsi_alloc_sdev()
284 blk_queue_init_tags(sdev->request_queue, in scsi_alloc_sdev()
285 sdev->host->cmd_per_lun, shost->bqt, in scsi_alloc_sdev()
288 scsi_change_queue_depth(sdev, sdev->host->cmd_per_lun ? in scsi_alloc_sdev()
289 sdev->host->cmd_per_lun : 1); in scsi_alloc_sdev()
291 scsi_sysfs_device_initialize(sdev); in scsi_alloc_sdev()
294 ret = shost->hostt->slave_alloc(sdev); in scsi_alloc_sdev()
306 return sdev; in scsi_alloc_sdev()
309 __scsi_remove_device(sdev); in scsi_alloc_sdev()
568 static int scsi_probe_lun(struct scsi_device *sdev, unsigned char *inq_result, in scsi_probe_lun() argument
582 first_inquiry_len = sdev->inquiry_len ? sdev->inquiry_len : 36; in scsi_probe_lun()
587 SCSI_LOG_SCAN_BUS(3, sdev_printk(KERN_INFO, sdev, in scsi_probe_lun()
601 result = scsi_execute_req(sdev, scsi_cmd, DMA_FROM_DEVICE, in scsi_probe_lun()
606 SCSI_LOG_SCAN_BUS(3, sdev_printk(KERN_INFO, sdev, in scsi_probe_lun()
653 *bflags = scsi_get_device_flags(sdev, &inq_result[8], in scsi_probe_lun()
661 else if (sdev->inquiry_len) in scsi_probe_lun()
662 next_inquiry_len = sdev->inquiry_len; in scsi_probe_lun()
675 sdev_printk(KERN_INFO, sdev, in scsi_probe_lun()
693 sdev->inquiry_len = min(try_inquiry_len, response_len); in scsi_probe_lun()
710 if (sdev->inquiry_len < 36) { in scsi_probe_lun()
711 if (!sdev->host->short_inquiry) { in scsi_probe_lun()
712 shost_printk(KERN_INFO, sdev->host, in scsi_probe_lun()
714 " using 36\n", sdev->inquiry_len); in scsi_probe_lun()
715 sdev->host->short_inquiry = 1; in scsi_probe_lun()
717 sdev->inquiry_len = 36; in scsi_probe_lun()
738 sdev->scsi_level = inq_result[2] & 0x07; in scsi_probe_lun()
739 if (sdev->scsi_level >= 2 || in scsi_probe_lun()
740 (sdev->scsi_level == 1 && (inq_result[3] & 0x0f) == 1)) in scsi_probe_lun()
741 sdev->scsi_level++; in scsi_probe_lun()
742 sdev->sdev_target->scsi_level = sdev->scsi_level; in scsi_probe_lun()
748 sdev->lun_in_cdb = 0; in scsi_probe_lun()
749 if (sdev->scsi_level <= SCSI_2 && in scsi_probe_lun()
750 sdev->scsi_level != SCSI_UNKNOWN && in scsi_probe_lun()
751 !sdev->host->no_scsi2_lun_in_cdb) in scsi_probe_lun()
752 sdev->lun_in_cdb = 1; in scsi_probe_lun()
772 static int scsi_add_lun(struct scsi_device *sdev, unsigned char *inq_result, in scsi_add_lun() argument
797 sdev->inquiry = kmemdup(inq_result, in scsi_add_lun()
798 max_t(size_t, sdev->inquiry_len, 36), in scsi_add_lun()
800 if (sdev->inquiry == NULL) in scsi_add_lun()
803 sdev->vendor = (char *) (sdev->inquiry + 8); in scsi_add_lun()
804 sdev->model = (char *) (sdev->inquiry + 16); in scsi_add_lun()
805 sdev->rev = (char *) (sdev->inquiry + 32); in scsi_add_lun()
807 if (strncmp(sdev->vendor, "ATA ", 8) == 0) { in scsi_add_lun()
814 sdev->allow_restart = 1; in scsi_add_lun()
818 sdev->type = TYPE_ROM; in scsi_add_lun()
819 sdev->removable = 1; in scsi_add_lun()
821 sdev->type = (inq_result[0] & 0x1f); in scsi_add_lun()
822 sdev->removable = (inq_result[1] & 0x80) >> 7; in scsi_add_lun()
829 if (scsi_is_wlun(sdev->lun) && sdev->type != TYPE_WLUN) { in scsi_add_lun()
830 sdev_printk(KERN_WARNING, sdev, in scsi_add_lun()
832 __func__, sdev->type, (unsigned int)sdev->lun); in scsi_add_lun()
833 sdev->type = TYPE_WLUN; in scsi_add_lun()
838 if (sdev->type == TYPE_RBC || sdev->type == TYPE_ROM) { in scsi_add_lun()
863 sdev->inq_periph_qual = (inq_result[0] >> 5) & 7; in scsi_add_lun()
864 sdev->lockable = sdev->removable; in scsi_add_lun()
865 sdev->soft_reset = (inq_result[7] & 1) && ((inq_result[3] & 7) == 2); in scsi_add_lun()
867 if (sdev->scsi_level >= SCSI_3 || in scsi_add_lun()
868 (sdev->inquiry_len > 56 && inq_result[56] & 0x04)) in scsi_add_lun()
869 sdev->ppr = 1; in scsi_add_lun()
871 sdev->wdtr = 1; in scsi_add_lun()
873 sdev->sdtr = 1; in scsi_add_lun()
875 sdev_printk(KERN_NOTICE, sdev, "%s %.8s %.16s %.4s PQ: %d " in scsi_add_lun()
876 "ANSI: %d%s\n", scsi_device_type(sdev->type), in scsi_add_lun()
877 sdev->vendor, sdev->model, sdev->rev, in scsi_add_lun()
878 sdev->inq_periph_qual, inq_result[2] & 0x07, in scsi_add_lun()
881 if ((sdev->scsi_level >= SCSI_2) && (inq_result[7] & 2) && in scsi_add_lun()
883 sdev->tagged_supported = 1; in scsi_add_lun()
884 sdev->simple_tags = 1; in scsi_add_lun()
893 sdev->borken = 0; in scsi_add_lun()
896 sdev->no_uld_attach = 1; in scsi_add_lun()
903 sdev->select_no_atn = 1; in scsi_add_lun()
910 blk_queue_max_hw_sectors(sdev->request_queue, 512); in scsi_add_lun()
916 blk_queue_max_hw_sectors(sdev->request_queue, 1024); in scsi_add_lun()
923 sdev->no_start_on_add = 1; in scsi_add_lun()
926 scsi_target(sdev)->single_lun = 1; in scsi_add_lun()
928 sdev->use_10_for_rw = 1; in scsi_add_lun()
934 sdev->no_report_opcodes = 1; in scsi_add_lun()
938 mutex_lock(&sdev->state_mutex); in scsi_add_lun()
939 ret = scsi_device_set_state(sdev, SDEV_RUNNING); in scsi_add_lun()
941 ret = scsi_device_set_state(sdev, SDEV_BLOCK); in scsi_add_lun()
942 mutex_unlock(&sdev->state_mutex); in scsi_add_lun()
945 sdev_printk(KERN_ERR, sdev, in scsi_add_lun()
947 scsi_device_state_name(sdev->sdev_state)); in scsi_add_lun()
952 sdev->lockable = 0; in scsi_add_lun()
955 sdev->retry_hwerror = 1; in scsi_add_lun()
958 sdev->no_dif = 1; in scsi_add_lun()
961 sdev->unmap_limit_for_ws = 1; in scsi_add_lun()
963 sdev->eh_timeout = SCSI_DEFAULT_EH_TIMEOUT; in scsi_add_lun()
966 sdev->try_vpd_pages = 1; in scsi_add_lun()
968 sdev->skip_vpd_pages = 1; in scsi_add_lun()
970 transport_configure_device(&sdev->sdev_gendev); in scsi_add_lun()
972 if (sdev->host->hostt->slave_configure) { in scsi_add_lun()
973 ret = sdev->host->hostt->slave_configure(sdev); in scsi_add_lun()
980 sdev_printk(KERN_ERR, sdev, in scsi_add_lun()
987 if (sdev->scsi_level >= SCSI_3) in scsi_add_lun()
988 scsi_attach_vpd(sdev); in scsi_add_lun()
990 sdev->max_queue_depth = sdev->queue_depth; in scsi_add_lun()
991 sdev->sdev_bflags = *bflags; in scsi_add_lun()
998 if (!async && scsi_sysfs_add_sdev(sdev) != 0) in scsi_add_lun()
1057 struct scsi_device *sdev; in scsi_probe_and_add_lun() local
1067 sdev = scsi_device_lookup_by_target(starget, lun); in scsi_probe_and_add_lun()
1068 if (sdev) { in scsi_probe_and_add_lun()
1069 if (rescan != SCSI_SCAN_INITIAL || !scsi_device_created(sdev)) { in scsi_probe_and_add_lun()
1070 SCSI_LOG_SCAN_BUS(3, sdev_printk(KERN_INFO, sdev, in scsi_probe_and_add_lun()
1072 dev_name(&sdev->sdev_gendev))); in scsi_probe_and_add_lun()
1074 *sdevp = sdev; in scsi_probe_and_add_lun()
1076 scsi_device_put(sdev); in scsi_probe_and_add_lun()
1079 *bflagsp = scsi_get_device_flags(sdev, in scsi_probe_and_add_lun()
1080 sdev->vendor, in scsi_probe_and_add_lun()
1081 sdev->model); in scsi_probe_and_add_lun()
1084 scsi_device_put(sdev); in scsi_probe_and_add_lun()
1086 sdev = scsi_alloc_sdev(starget, lun, hostdata); in scsi_probe_and_add_lun()
1087 if (!sdev) in scsi_probe_and_add_lun()
1095 if (scsi_probe_lun(sdev, result, result_len, &bflags)) in scsi_probe_and_add_lun()
1114 SCSI_LOG_SCAN_BUS(2, sdev_printk(KERN_INFO, sdev, "scsi scan:" in scsi_probe_and_add_lun()
1122 sdev_printk(KERN_INFO, sdev, in scsi_probe_and_add_lun()
1157 SCSI_LOG_SCAN_BUS(3, sdev_printk(KERN_INFO, sdev, in scsi_probe_and_add_lun()
1164 res = scsi_add_lun(sdev, result, &bflags, shost->async_scan); in scsi_probe_and_add_lun()
1167 sdev->lockable = 0; in scsi_probe_and_add_lun()
1168 scsi_unlock_floptical(sdev, result); in scsi_probe_and_add_lun()
1177 if (scsi_device_get(sdev) == 0) { in scsi_probe_and_add_lun()
1178 *sdevp = sdev; in scsi_probe_and_add_lun()
1180 __scsi_remove_device(sdev); in scsi_probe_and_add_lun()
1185 __scsi_remove_device(sdev); in scsi_probe_and_add_lun()
1307 struct scsi_device *sdev; in scsi_report_lun_scan() local
1330 if (!(sdev = scsi_device_lookup_by_target(starget, 0))) { in scsi_report_lun_scan()
1331 sdev = scsi_alloc_sdev(starget, 0, NULL); in scsi_report_lun_scan()
1332 if (!sdev) in scsi_report_lun_scan()
1334 if (scsi_device_get(sdev)) { in scsi_report_lun_scan()
1335 __scsi_remove_device(sdev); in scsi_report_lun_scan()
1348 (sdev->host->unchecked_isa_dma ? __GFP_DMA : 0)); in scsi_report_lun_scan()
1380 SCSI_LOG_SCAN_BUS(3, sdev_printk (KERN_INFO, sdev, in scsi_report_lun_scan()
1384 result = scsi_execute_req(sdev, scsi_cmd, DMA_FROM_DEVICE, in scsi_report_lun_scan()
1388 SCSI_LOG_SCAN_BUS(3, sdev_printk (KERN_INFO, sdev, in scsi_report_lun_scan()
1423 SCSI_LOG_SCAN_BUS(3, sdev_printk (KERN_INFO, sdev, in scsi_report_lun_scan()
1433 if (lun > sdev->host->max_lun) { in scsi_report_lun_scan()
1434 sdev_printk(KERN_WARNING, sdev, in scsi_report_lun_scan()
1446 sdev_printk(KERN_ERR, sdev, in scsi_report_lun_scan()
1458 if (scsi_device_created(sdev)) in scsi_report_lun_scan()
1462 __scsi_remove_device(sdev); in scsi_report_lun_scan()
1463 scsi_device_put(sdev); in scsi_report_lun_scan()
1470 struct scsi_device *sdev = ERR_PTR(-ENODEV); in __scsi_add_device() local
1487 scsi_probe_and_add_lun(starget, lun, NULL, &sdev, 1, hostdata); in __scsi_add_device()
1499 return sdev; in __scsi_add_device()
1506 struct scsi_device *sdev = in scsi_add_device() local
1508 if (IS_ERR(sdev)) in scsi_add_device()
1509 return PTR_ERR(sdev); in scsi_add_device()
1511 scsi_device_put(sdev); in scsi_add_device()
1518 struct scsi_device *sdev = to_scsi_device(dev); in scsi_rescan_device() local
1522 scsi_attach_vpd(sdev); in scsi_rescan_device()
1524 if (sdev->handler && sdev->handler->rescan) in scsi_rescan_device()
1525 sdev->handler->rescan(sdev); in scsi_rescan_device()
1699 struct scsi_device *sdev; in scsi_sysfs_add_devices() local
1700 shost_for_each_device(sdev, shost) { in scsi_sysfs_add_devices()
1702 if (sdev->sdev_state == SDEV_DEL) in scsi_sysfs_add_devices()
1705 if (sdev->is_visible) in scsi_sysfs_add_devices()
1708 scsi_sysfs_add_sdev(sdev) != 0) in scsi_sysfs_add_devices()
1709 __scsi_remove_device(sdev); in scsi_sysfs_add_devices()
1870 struct scsi_device *sdev; in scsi_forget_host() local
1875 list_for_each_entry(sdev, &shost->__devices, siblings) { in scsi_forget_host()
1876 if (sdev->sdev_state == SDEV_DEL) in scsi_forget_host()
1879 __scsi_remove_device(sdev); in scsi_forget_host()
1904 struct scsi_device *sdev = NULL; in scsi_get_host_dev() local
1914 sdev = scsi_alloc_sdev(starget, 0, NULL); in scsi_get_host_dev()
1915 if (sdev) in scsi_get_host_dev()
1916 sdev->borken = 0; in scsi_get_host_dev()
1922 return sdev; in scsi_get_host_dev()
1934 void scsi_free_host_dev(struct scsi_device *sdev) in scsi_free_host_dev() argument
1936 BUG_ON(sdev->id != sdev->host->this_id); in scsi_free_host_dev()
1938 __scsi_remove_device(sdev); in scsi_free_host_dev()