Lines Matching refs:sdev
194 * @sdev: scsi device to send command to
201 static void scsi_unlock_floptical(struct scsi_device *sdev,
206 sdev_printk(KERN_NOTICE, sdev, "unlocking floptical drive\n");
213 scsi_execute_cmd(sdev, scsi_cmd, REQ_OP_DRV_IN, result, 0x2a,
217 static int scsi_realloc_sdev_budget_map(struct scsi_device *sdev,
221 bool need_alloc = !sdev->budget_map.map;
226 depth = min_t(unsigned int, depth, scsi_device_max_queue_depth(sdev));
232 if (!need_alloc && new_shift != sdev->budget_map.shift)
243 blk_mq_freeze_queue(sdev->request_queue);
244 sb_backup = sdev->budget_map;
246 ret = sbitmap_init_node(&sdev->budget_map,
247 scsi_device_max_queue_depth(sdev),
249 sdev->request_queue->node, false, true);
251 sbitmap_resize(&sdev->budget_map, depth);
255 sdev->budget_map = sb_backup;
259 blk_mq_unfreeze_queue(sdev->request_queue);
282 struct scsi_device *sdev;
287 sdev = kzalloc(sizeof(*sdev) + shost->transportt->device_size,
289 if (!sdev)
292 sdev->vendor = scsi_null_device_strs;
293 sdev->model = scsi_null_device_strs;
294 sdev->rev = scsi_null_device_strs;
295 sdev->host = shost;
296 sdev->queue_ramp_up_period = SCSI_DEFAULT_RAMP_UP_PERIOD;
297 sdev->id = starget->id;
298 sdev->lun = lun;
299 sdev->channel = starget->channel;
300 mutex_init(&sdev->state_mutex);
301 sdev->sdev_state = SDEV_CREATED;
302 INIT_LIST_HEAD(&sdev->siblings);
303 INIT_LIST_HEAD(&sdev->same_target_siblings);
304 INIT_LIST_HEAD(&sdev->starved_entry);
305 INIT_LIST_HEAD(&sdev->event_list);
306 spin_lock_init(&sdev->list_lock);
307 mutex_init(&sdev->inquiry_mutex);
308 INIT_WORK(&sdev->event_work, scsi_evt_thread);
309 INIT_WORK(&sdev->requeue_work, scsi_requeue_run_queue);
311 sdev->sdev_gendev.parent = get_device(&starget->dev);
312 sdev->sdev_target = starget;
315 sdev->hostdata = hostdata;
319 sdev->max_device_blocked = SCSI_DEFAULT_DEVICE_BLOCKED;
324 sdev->type = -1;
331 sdev->borken = 1;
333 sdev->sg_reserved_size = INT_MAX;
335 q = blk_mq_init_queue(&sdev->host->tag_set);
340 kfree(sdev);
343 kref_get(&sdev->host->tagset_refcnt);
344 sdev->request_queue = q;
345 q->queuedata = sdev;
346 __scsi_init_queue(sdev->host, q);
348 depth = sdev->host->cmd_per_lun ?: 1;
356 if (scsi_realloc_sdev_budget_map(sdev, depth)) {
358 kfree(sdev);
362 scsi_change_queue_depth(sdev, depth);
364 scsi_sysfs_device_initialize(sdev);
367 ret = shost->hostt->slave_alloc(sdev);
379 return sdev;
382 __scsi_remove_device(sdev);
432 * Search for an existing target for this sdev.
631 * @sdev: scsi_device to probe
643 static int scsi_probe_lun(struct scsi_device *sdev, unsigned char *inq_result,
659 * transfer length of 36 unless sdev->inquiry_len specifies a
661 first_inquiry_len = sdev->inquiry_len ? sdev->inquiry_len : 36;
666 SCSI_LOG_SCAN_BUS(3, sdev_printk(KERN_INFO, sdev,
678 result = scsi_execute_cmd(sdev, scsi_cmd, REQ_OP_DRV_IN,
683 SCSI_LOG_SCAN_BUS(3, sdev_printk(KERN_INFO, sdev,
730 *bflags = scsi_get_device_flags(sdev, &inq_result[8],
739 * LLD specified a maximum sdev->inquiry_len
746 else if (sdev->inquiry_len &&
747 response_len > sdev->inquiry_len &&
749 next_inquiry_len = sdev->inquiry_len;
762 sdev_printk(KERN_INFO, sdev,
780 sdev->inquiry_len = min(try_inquiry_len, response_len);
797 if (sdev->inquiry_len < 36) {
798 if (!sdev->host->short_inquiry) {
799 shost_printk(KERN_INFO, sdev->host,
801 " using 36\n", sdev->inquiry_len);
802 sdev->host->short_inquiry = 1;
804 sdev->inquiry_len = 36;
825 sdev->scsi_level = inq_result[2] & 0x0f;
826 if (sdev->scsi_level >= 2 ||
827 (sdev->scsi_level == 1 && (inq_result[3] & 0x0f) == 1))
828 sdev->scsi_level++;
829 sdev->sdev_target->scsi_level = sdev->scsi_level;
835 sdev->lun_in_cdb = 0;
836 if (sdev->scsi_level <= SCSI_2 &&
837 sdev->scsi_level != SCSI_UNKNOWN &&
838 !sdev->host->no_scsi2_lun_in_cdb)
839 sdev->lun_in_cdb = 1;
846 * @sdev: holds information to be stored in the new scsi_device
852 * Initialize the scsi_device @sdev. Optionally set fields based
859 static int scsi_add_lun(struct scsi_device *sdev, unsigned char *inq_result,
884 sdev->inquiry = kmemdup(inq_result,
885 max_t(size_t, sdev->inquiry_len, 36),
887 if (sdev->inquiry == NULL)
890 sdev->vendor = (char *) (sdev->inquiry + 8);
891 sdev->model = (char *) (sdev->inquiry + 16);
892 sdev->rev = (char *) (sdev->inquiry + 32);
894 if (strncmp(sdev->vendor, "ATA ", 8) == 0) {
901 sdev->allow_restart = 1;
905 sdev->type = TYPE_ROM;
906 sdev->removable = 1;
908 sdev->type = (inq_result[0] & 0x1f);
909 sdev->removable = (inq_result[1] & 0x80) >> 7;
916 if (scsi_is_wlun(sdev->lun) && sdev->type != TYPE_WLUN) {
917 sdev_printk(KERN_WARNING, sdev,
919 __func__, sdev->type, (unsigned int)sdev->lun);
920 sdev->type = TYPE_WLUN;
925 if (sdev->type == TYPE_RBC || sdev->type == TYPE_ROM) {
950 sdev->inq_periph_qual = (inq_result[0] >> 5) & 7;
951 sdev->lockable = sdev->removable;
952 sdev->soft_reset = (inq_result[7] & 1) && ((inq_result[3] & 7) == 2);
954 if (sdev->scsi_level >= SCSI_3 ||
955 (sdev->inquiry_len > 56 && inq_result[56] & 0x04))
956 sdev->ppr = 1;
958 sdev->wdtr = 1;
960 sdev->sdtr = 1;
962 sdev_printk(KERN_NOTICE, sdev, "%s %.8s %.16s %.4s PQ: %d "
963 "ANSI: %d%s\n", scsi_device_type(sdev->type),
964 sdev->vendor, sdev->model, sdev->rev,
965 sdev->inq_periph_qual, inq_result[2] & 0x07,
968 if ((sdev->scsi_level >= SCSI_2) && (inq_result[7] & 2) &&
970 sdev->tagged_supported = 1;
971 sdev->simple_tags = 1;
980 sdev->borken = 0;
983 sdev->no_uld_attach = 1;
990 sdev->select_no_atn = 1;
997 blk_queue_max_hw_sectors(sdev->request_queue, 512);
1003 blk_queue_max_hw_sectors(sdev->request_queue, 1024);
1010 sdev->no_start_on_add = 1;
1013 scsi_target(sdev)->single_lun = 1;
1015 sdev->use_10_for_rw = 1;
1021 sdev->no_report_opcodes = 1;
1025 mutex_lock(&sdev->state_mutex);
1026 ret = scsi_device_set_state(sdev, SDEV_RUNNING);
1028 ret = scsi_device_set_state(sdev, SDEV_BLOCK);
1029 mutex_unlock(&sdev->state_mutex);
1032 sdev_printk(KERN_ERR, sdev,
1034 scsi_device_state_name(sdev->sdev_state));
1039 sdev->lockable = 0;
1042 sdev->retry_hwerror = 1;
1045 sdev->no_dif = 1;
1048 sdev->unmap_limit_for_ws = 1;
1051 sdev->ignore_media_change = 1;
1053 sdev->eh_timeout = SCSI_DEFAULT_EH_TIMEOUT;
1056 sdev->try_vpd_pages = 1;
1058 sdev->skip_vpd_pages = 1;
1061 sdev->no_vpd_size = 1;
1063 transport_configure_device(&sdev->sdev_gendev);
1065 if (sdev->host->hostt->slave_configure) {
1066 ret = sdev->host->hostt->slave_configure(sdev);
1073 sdev_printk(KERN_ERR, sdev,
1084 scsi_realloc_sdev_budget_map(sdev, sdev->queue_depth);
1087 if (sdev->scsi_level >= SCSI_3)
1088 scsi_attach_vpd(sdev);
1090 scsi_cdl_check(sdev);
1092 sdev->max_queue_depth = sdev->queue_depth;
1093 WARN_ON_ONCE(sdev->max_queue_depth > sdev->budget_map.depth);
1094 sdev->sdev_bflags = *bflags;
1101 if (!async && scsi_sysfs_add_sdev(sdev) != 0)
1160 struct scsi_device *sdev;
1170 sdev = scsi_device_lookup_by_target(starget, lun);
1171 if (sdev) {
1172 if (rescan != SCSI_SCAN_INITIAL || !scsi_device_created(sdev)) {
1173 SCSI_LOG_SCAN_BUS(3, sdev_printk(KERN_INFO, sdev,
1175 dev_name(&sdev->sdev_gendev)));
1177 *sdevp = sdev;
1179 scsi_device_put(sdev);
1182 *bflagsp = scsi_get_device_flags(sdev,
1183 sdev->vendor,
1184 sdev->model);
1187 scsi_device_put(sdev);
1189 sdev = scsi_alloc_sdev(starget, lun, hostdata);
1190 if (!sdev)
1197 if (scsi_probe_lun(sdev, result, result_len, &bflags))
1213 * logical disk configured at sdev->lun, but there
1216 SCSI_LOG_SCAN_BUS(2, sdev_printk(KERN_INFO, sdev, "scsi scan:"
1224 sdev_printk(KERN_INFO, sdev,
1239 * that no LUN is present, so don't add sdev in these cases.
1259 SCSI_LOG_SCAN_BUS(3, sdev_printk(KERN_INFO, sdev,
1266 res = scsi_add_lun(sdev, result, &bflags, shost->async_scan);
1269 sdev->lockable = 0;
1270 scsi_unlock_floptical(sdev, result);
1279 if (scsi_device_get(sdev) == 0) {
1280 *sdevp = sdev;
1282 __scsi_remove_device(sdev);
1287 __scsi_remove_device(sdev);
1339 * to alloc an sdev for lun > 0 on an already found SCSI_1 device.
1409 struct scsi_device *sdev;
1435 if (!(sdev = scsi_device_lookup_by_target(starget, 0))) {
1436 sdev = scsi_alloc_sdev(starget, 0, NULL);
1437 if (!sdev)
1439 if (scsi_device_get(sdev)) {
1440 __scsi_remove_device(sdev);
1484 SCSI_LOG_SCAN_BUS(3, sdev_printk (KERN_INFO, sdev,
1488 result = scsi_execute_cmd(sdev, scsi_cmd, REQ_OP_DRV_IN,
1493 SCSI_LOG_SCAN_BUS(3, sdev_printk (KERN_INFO, sdev,
1528 SCSI_LOG_SCAN_BUS(3, sdev_printk (KERN_INFO, sdev,
1538 if (lun > sdev->host->max_lun) {
1539 sdev_printk(KERN_WARNING, sdev,
1551 sdev_printk(KERN_ERR, sdev,
1563 if (scsi_device_created(sdev))
1565 * the sdev we used didn't appear in the report luns scan
1567 __scsi_remove_device(sdev);
1568 scsi_device_put(sdev);
1575 struct scsi_device *sdev = ERR_PTR(-ENODEV);
1592 scsi_probe_and_add_lun(starget, lun, NULL, &sdev,
1605 return sdev;
1612 struct scsi_device *sdev =
1614 if (IS_ERR(sdev))
1615 return PTR_ERR(sdev);
1617 scsi_device_put(sdev);
1622 int scsi_rescan_device(struct scsi_device *sdev)
1624 struct device *dev = &sdev->sdev_gendev;
1635 if (sdev->sdev_state != SDEV_RUNNING ||
1636 blk_queue_pm_only(sdev->request_queue)) {
1641 scsi_attach_vpd(sdev);
1642 scsi_cdl_check(sdev);
1644 if (sdev->handler && sdev->handler->rescan)
1645 sdev->handler->rescan(sdev);
1823 struct scsi_device *sdev;
1824 shost_for_each_device(sdev, shost) {
1826 if (sdev->sdev_state == SDEV_DEL)
1829 if (sdev->is_visible)
1832 scsi_sysfs_add_sdev(sdev) != 0)
1833 __scsi_remove_device(sdev);
1995 struct scsi_device *sdev;
2000 list_for_each_entry(sdev, &shost->__devices, siblings) {
2001 if (sdev->sdev_state == SDEV_DEL)
2004 __scsi_remove_device(sdev);