Lines Matching refs:sdev
144 struct scsi_device *sdev = cmd->device; in scsi_mq_requeue_cmd() local
153 put_device(&sdev->sdev_gendev); in scsi_mq_requeue_cmd()
258 int __scsi_execute(struct scsi_device *sdev, const unsigned char *cmd, in __scsi_execute() argument
268 req = blk_get_request(sdev->request_queue, in __scsi_execute()
275 if (bufflen && blk_rq_map_kern(sdev->request_queue, req, in __scsi_execute()
358 void scsi_device_unbusy(struct scsi_device *sdev) in scsi_device_unbusy() argument
360 struct Scsi_Host *shost = sdev->host; in scsi_device_unbusy()
361 struct scsi_target *starget = scsi_target(sdev); in scsi_device_unbusy()
368 atomic_dec(&sdev->device_busy); in scsi_device_unbusy()
389 struct scsi_device *sdev, *tmp; in scsi_single_lun_run() local
408 list_for_each_entry_safe(sdev, tmp, &starget->devices, in scsi_single_lun_run()
410 if (sdev == current_sdev) in scsi_single_lun_run()
412 if (scsi_device_get(sdev)) in scsi_single_lun_run()
416 scsi_kick_queue(sdev->request_queue); in scsi_single_lun_run()
419 scsi_device_put(sdev); in scsi_single_lun_run()
425 static inline bool scsi_device_is_busy(struct scsi_device *sdev) in scsi_device_is_busy() argument
427 if (atomic_read(&sdev->device_busy) >= sdev->queue_depth) in scsi_device_is_busy()
429 if (atomic_read(&sdev->device_blocked) > 0) in scsi_device_is_busy()
460 struct scsi_device *sdev; in scsi_starved_list_run() local
482 sdev = list_entry(starved_list.next, in scsi_starved_list_run()
484 list_del_init(&sdev->starved_entry); in scsi_starved_list_run()
485 if (scsi_target_is_busy(scsi_target(sdev))) { in scsi_starved_list_run()
486 list_move_tail(&sdev->starved_entry, in scsi_starved_list_run()
501 slq = sdev->request_queue; in scsi_starved_list_run()
530 struct scsi_device *sdev = q->queuedata; in scsi_run_queue() local
532 if (scsi_target(sdev)->single_lun) in scsi_run_queue()
533 scsi_single_lun_run(sdev); in scsi_run_queue()
534 if (!list_empty(&sdev->host->starved_list)) in scsi_run_queue()
535 scsi_starved_list_run(sdev->host); in scsi_run_queue()
545 struct scsi_device *sdev; in scsi_requeue_run_queue() local
548 sdev = container_of(work, struct scsi_device, requeue_work); in scsi_requeue_run_queue()
549 q = sdev->request_queue; in scsi_requeue_run_queue()
573 struct scsi_device *sdev = cmd->device; in scsi_requeue_command() local
586 put_device(&sdev->sdev_gendev); in scsi_requeue_command()
591 struct scsi_device *sdev; in scsi_run_host_queues() local
593 shost_for_each_device(sdev, shost) in scsi_run_host_queues()
594 scsi_run_queue(sdev->request_queue); in scsi_run_host_queues()
670 struct scsi_device *sdev = cmd->device; in scsi_end_request() local
671 struct request_queue *q = sdev->request_queue; in scsi_end_request()
702 if (scsi_target(sdev)->single_lun || in scsi_end_request()
703 !list_empty(&sdev->host->starved_list)) in scsi_end_request()
704 kblockd_schedule_work(&sdev->requeue_work); in scsi_end_request()
722 put_device(&sdev->sdev_gendev); in scsi_end_request()
1150 struct scsi_device *sdev = cmd->device; in scsi_init_io() local
1219 put_device(&sdev->sdev_gendev); in scsi_init_io()
1249 struct scsi_device *sdev = cmd->device; in scsi_add_cmd_to_list() local
1250 struct Scsi_Host *shost = sdev->host; in scsi_add_cmd_to_list()
1254 spin_lock_irqsave(&sdev->list_lock, flags); in scsi_add_cmd_to_list()
1255 list_add_tail(&cmd->list, &sdev->cmd_list); in scsi_add_cmd_to_list()
1256 spin_unlock_irqrestore(&sdev->list_lock, flags); in scsi_add_cmd_to_list()
1263 struct scsi_device *sdev = cmd->device; in scsi_del_cmd_from_list() local
1264 struct Scsi_Host *shost = sdev->host; in scsi_del_cmd_from_list()
1268 spin_lock_irqsave(&sdev->list_lock, flags); in scsi_del_cmd_from_list()
1271 spin_unlock_irqrestore(&sdev->list_lock, flags); in scsi_del_cmd_from_list()
1307 static int scsi_setup_scsi_cmnd(struct scsi_device *sdev, struct request *req) in scsi_setup_scsi_cmnd() argument
1338 static int scsi_setup_fs_cmnd(struct scsi_device *sdev, struct request *req) in scsi_setup_fs_cmnd() argument
1342 if (unlikely(sdev->handler && sdev->handler->prep_fn)) { in scsi_setup_fs_cmnd()
1343 int ret = sdev->handler->prep_fn(sdev, req); in scsi_setup_fs_cmnd()
1353 static int scsi_setup_cmnd(struct scsi_device *sdev, struct request *req) in scsi_setup_cmnd() argument
1365 return scsi_setup_scsi_cmnd(sdev, req); in scsi_setup_cmnd()
1367 return scsi_setup_fs_cmnd(sdev, req); in scsi_setup_cmnd()
1371 scsi_prep_state_check(struct scsi_device *sdev, struct request *req) in scsi_prep_state_check() argument
1379 if (unlikely(sdev->sdev_state != SDEV_RUNNING)) { in scsi_prep_state_check()
1380 switch (sdev->sdev_state) { in scsi_prep_state_check()
1388 sdev_printk(KERN_ERR, sdev, in scsi_prep_state_check()
1397 sdev_printk(KERN_ERR, sdev, in scsi_prep_state_check()
1429 struct scsi_device *sdev = q->queuedata; in scsi_prep_return() local
1440 put_device(&sdev->sdev_gendev); in scsi_prep_return()
1450 if (atomic_read(&sdev->device_busy) == 0) in scsi_prep_return()
1462 struct scsi_device *sdev = q->queuedata; in scsi_prep_fn() local
1466 ret = scsi_prep_state_check(sdev, req); in scsi_prep_fn()
1472 if (unlikely(!get_device(&sdev->sdev_gendev))) { in scsi_prep_fn()
1477 scsi_init_command(sdev, cmd); in scsi_prep_fn()
1485 ret = scsi_setup_cmnd(sdev, req); in scsi_prep_fn()
1502 struct scsi_device *sdev) in scsi_dev_queue_ready() argument
1506 busy = atomic_inc_return(&sdev->device_busy) - 1; in scsi_dev_queue_ready()
1507 if (atomic_read(&sdev->device_blocked)) { in scsi_dev_queue_ready()
1514 if (atomic_dec_return(&sdev->device_blocked) > 0) { in scsi_dev_queue_ready()
1522 SCSI_LOG_MLQUEUE(3, sdev_printk(KERN_INFO, sdev, in scsi_dev_queue_ready()
1526 if (busy >= sdev->queue_depth) in scsi_dev_queue_ready()
1531 atomic_dec(&sdev->device_busy); in scsi_dev_queue_ready()
1540 struct scsi_device *sdev) in scsi_target_queue_ready() argument
1542 struct scsi_target *starget = scsi_target(sdev); in scsi_target_queue_ready()
1548 starget->starget_sdev_user != sdev) { in scsi_target_queue_ready()
1552 starget->starget_sdev_user = sdev; in scsi_target_queue_ready()
1581 list_move_tail(&sdev->starved_entry, &shost->starved_list); in scsi_target_queue_ready()
1596 struct scsi_device *sdev) in scsi_host_queue_ready() argument
1625 if (!list_empty(&sdev->starved_entry)) { in scsi_host_queue_ready()
1627 if (!list_empty(&sdev->starved_entry)) in scsi_host_queue_ready()
1628 list_del_init(&sdev->starved_entry); in scsi_host_queue_ready()
1636 if (list_empty(&sdev->starved_entry)) in scsi_host_queue_ready()
1637 list_add_tail(&sdev->starved_entry, &shost->starved_list); in scsi_host_queue_ready()
1658 struct scsi_device *sdev = q->queuedata; in scsi_lld_busy() local
1664 shost = sdev->host; in scsi_lld_busy()
1672 if (scsi_host_in_recovery(shost) || scsi_device_is_busy(sdev)) in scsi_lld_busy()
1684 struct scsi_device *sdev; in scsi_kill_request() local
1692 sdev = cmd->device; in scsi_kill_request()
1693 starget = scsi_target(sdev); in scsi_kill_request()
1694 shost = sdev->host; in scsi_kill_request()
1704 atomic_inc(&sdev->device_busy); in scsi_kill_request()
1867 struct scsi_device *sdev = q->queuedata; in scsi_request_fn() local
1876 shost = sdev->host; in scsi_request_fn()
1888 if (unlikely(!scsi_device_online(sdev))) { in scsi_request_fn()
1889 sdev_printk(KERN_ERR, sdev, in scsi_request_fn()
1895 if (!scsi_dev_queue_ready(q, sdev)) in scsi_request_fn()
1925 if (list_empty(&sdev->starved_entry)) in scsi_request_fn()
1926 list_add_tail(&sdev->starved_entry, in scsi_request_fn()
1932 if (!scsi_target_queue_ready(shost, sdev)) in scsi_request_fn()
1935 if (!scsi_host_queue_ready(q, shost, sdev)) in scsi_request_fn()
1938 if (sdev->simple_tags) in scsi_request_fn()
1965 if (scsi_target(sdev)->can_queue > 0) in scsi_request_fn()
1966 atomic_dec(&scsi_target(sdev)->target_busy); in scsi_request_fn()
1978 atomic_dec(&sdev->device_busy); in scsi_request_fn()
1980 if (!atomic_read(&sdev->device_busy) && !scsi_device_blocked(sdev)) in scsi_request_fn()
2006 struct scsi_device *sdev = req->q->queuedata; in scsi_mq_prep_fn() local
2007 struct Scsi_Host *shost = sdev->host; in scsi_mq_prep_fn()
2010 scsi_init_command(sdev, cmd); in scsi_mq_prep_fn()
2042 return scsi_setup_cmnd(sdev, req); in scsi_mq_prep_fn()
2054 struct scsi_device *sdev = q->queuedata; in scsi_mq_put_budget() local
2056 atomic_dec(&sdev->device_busy); in scsi_mq_put_budget()
2057 put_device(&sdev->sdev_gendev); in scsi_mq_put_budget()
2063 struct scsi_device *sdev = q->queuedata; in scsi_mq_get_budget() local
2065 if (!get_device(&sdev->sdev_gendev)) in scsi_mq_get_budget()
2067 if (!scsi_dev_queue_ready(q, sdev)) in scsi_mq_get_budget()
2073 put_device(&sdev->sdev_gendev); in scsi_mq_get_budget()
2075 if (atomic_read(&sdev->device_busy) == 0 && !scsi_device_blocked(sdev)) in scsi_mq_get_budget()
2085 struct scsi_device *sdev = q->queuedata; in scsi_queue_rq() local
2086 struct Scsi_Host *shost = sdev->host; in scsi_queue_rq()
2091 ret = prep_to_mq(scsi_prep_state_check(sdev, req)); in scsi_queue_rq()
2096 if (!scsi_target_queue_ready(shost, sdev)) in scsi_queue_rq()
2098 if (!scsi_host_queue_ready(q, shost, sdev)) in scsi_queue_rq()
2110 if (sdev->simple_tags) in scsi_queue_rq()
2130 if (scsi_target(sdev)->can_queue > 0) in scsi_queue_rq()
2131 atomic_dec(&scsi_target(sdev)->target_busy); in scsi_queue_rq()
2138 if (atomic_read(&sdev->device_busy) || in scsi_queue_rq()
2139 scsi_device_blocked(sdev)) in scsi_queue_rq()
2287 struct request_queue *scsi_old_alloc_queue(struct scsi_device *sdev) in scsi_old_alloc_queue() argument
2289 struct Scsi_Host *shost = sdev->host; in scsi_old_alloc_queue()
2332 struct request_queue *scsi_mq_alloc_queue(struct scsi_device *sdev) in scsi_mq_alloc_queue() argument
2334 sdev->request_queue = blk_mq_init_queue(&sdev->host->tag_set); in scsi_mq_alloc_queue()
2335 if (IS_ERR(sdev->request_queue)) in scsi_mq_alloc_queue()
2338 sdev->request_queue->queuedata = sdev; in scsi_mq_alloc_queue()
2339 __scsi_init_queue(sdev->host, sdev->request_queue); in scsi_mq_alloc_queue()
2340 blk_queue_flag_set(QUEUE_FLAG_SCSI_PASSTHROUGH, sdev->request_queue); in scsi_mq_alloc_queue()
2341 return sdev->request_queue; in scsi_mq_alloc_queue()
2381 struct scsi_device *sdev = NULL; in scsi_device_from_queue() local
2385 sdev = q->queuedata; in scsi_device_from_queue()
2387 sdev = q->queuedata; in scsi_device_from_queue()
2388 if (!sdev || !get_device(&sdev->sdev_gendev)) in scsi_device_from_queue()
2389 sdev = NULL; in scsi_device_from_queue()
2391 return sdev; in scsi_device_from_queue()
2483 scsi_mode_select(struct scsi_device *sdev, int pf, int sp, int modepage, in scsi_mode_select() argument
2494 if (sdev->use_10_for_ms) { in scsi_mode_select()
2534 ret = scsi_execute_req(sdev, cmd, DMA_TO_DEVICE, real_buffer, len, in scsi_mode_select()
2559 scsi_mode_sense(struct scsi_device *sdev, int dbd, int modepage, in scsi_mode_sense() argument
2579 use_10_for_ms = sdev->use_10_for_ms; in scsi_mode_sense()
2599 result = scsi_execute_req(sdev, cmd, DMA_FROM_DEVICE, buffer, len, in scsi_mode_sense()
2615 sdev->use_10_for_ms = 0; in scsi_mode_sense()
2667 scsi_test_unit_ready(struct scsi_device *sdev, int timeout, int retries, in scsi_test_unit_ready() argument
2677 result = scsi_execute_req(sdev, cmd, DMA_NONE, NULL, 0, sshdr, in scsi_test_unit_ready()
2679 if (sdev->removable && scsi_sense_valid(sshdr) && in scsi_test_unit_ready()
2681 sdev->changed = 1; in scsi_test_unit_ready()
2698 scsi_device_set_state(struct scsi_device *sdev, enum scsi_device_state state) in scsi_device_set_state() argument
2700 enum scsi_device_state oldstate = sdev->sdev_state; in scsi_device_set_state()
2800 sdev->sdev_state = state; in scsi_device_set_state()
2805 sdev_printk(KERN_ERR, sdev, in scsi_device_set_state()
2821 static void scsi_evt_emit(struct scsi_device *sdev, struct scsi_event *evt) in scsi_evt_emit() argument
2831 scsi_rescan_device(&sdev->sdev_gendev); in scsi_evt_emit()
2859 kobject_uevent_env(&sdev->sdev_gendev.kobj, KOBJ_CHANGE, envp); in scsi_evt_emit()
2871 struct scsi_device *sdev; in scsi_evt_thread() local
2875 sdev = container_of(work, struct scsi_device, event_work); in scsi_evt_thread()
2878 if (test_and_clear_bit(evt_type, sdev->pending_events)) in scsi_evt_thread()
2879 sdev_evt_send_simple(sdev, evt_type, GFP_KERNEL); in scsi_evt_thread()
2886 spin_lock_irqsave(&sdev->list_lock, flags); in scsi_evt_thread()
2887 list_splice_init(&sdev->event_list, &event_list); in scsi_evt_thread()
2888 spin_unlock_irqrestore(&sdev->list_lock, flags); in scsi_evt_thread()
2896 scsi_evt_emit(sdev, evt); in scsi_evt_thread()
2909 void sdev_evt_send(struct scsi_device *sdev, struct scsi_event *evt) in sdev_evt_send() argument
2917 if (!test_bit(evt->evt_type, sdev->supported_events)) { in sdev_evt_send()
2923 spin_lock_irqsave(&sdev->list_lock, flags); in sdev_evt_send()
2924 list_add_tail(&evt->node, &sdev->event_list); in sdev_evt_send()
2925 schedule_work(&sdev->event_work); in sdev_evt_send()
2926 spin_unlock_irqrestore(&sdev->list_lock, flags); in sdev_evt_send()
2974 void sdev_evt_send_simple(struct scsi_device *sdev, in sdev_evt_send_simple() argument
2979 sdev_printk(KERN_ERR, sdev, "event %d eaten due to OOM\n", in sdev_evt_send_simple()
2984 sdev_evt_send(sdev, evt); in sdev_evt_send_simple()
2992 static int scsi_request_fn_active(struct scsi_device *sdev) in scsi_request_fn_active() argument
2994 struct request_queue *q = sdev->request_queue; in scsi_request_fn_active()
2997 WARN_ON_ONCE(sdev->host->use_blk_mq); in scsi_request_fn_active()
3013 static void scsi_wait_for_queuecommand(struct scsi_device *sdev) in scsi_wait_for_queuecommand() argument
3015 WARN_ON_ONCE(sdev->host->use_blk_mq); in scsi_wait_for_queuecommand()
3017 while (scsi_request_fn_active(sdev)) in scsi_wait_for_queuecommand()
3037 scsi_device_quiesce(struct scsi_device *sdev) in scsi_device_quiesce() argument
3039 struct request_queue *q = sdev->request_queue; in scsi_device_quiesce()
3047 WARN_ON_ONCE(sdev->quiesced_by && sdev->quiesced_by != current); in scsi_device_quiesce()
3061 mutex_lock(&sdev->state_mutex); in scsi_device_quiesce()
3062 err = scsi_device_set_state(sdev, SDEV_QUIESCE); in scsi_device_quiesce()
3064 sdev->quiesced_by = current; in scsi_device_quiesce()
3067 mutex_unlock(&sdev->state_mutex); in scsi_device_quiesce()
3082 void scsi_device_resume(struct scsi_device *sdev) in scsi_device_resume() argument
3088 mutex_lock(&sdev->state_mutex); in scsi_device_resume()
3089 WARN_ON_ONCE(!sdev->quiesced_by); in scsi_device_resume()
3090 sdev->quiesced_by = NULL; in scsi_device_resume()
3091 blk_clear_preempt_only(sdev->request_queue); in scsi_device_resume()
3092 if (sdev->sdev_state == SDEV_QUIESCE) in scsi_device_resume()
3093 scsi_device_set_state(sdev, SDEV_RUNNING); in scsi_device_resume()
3094 mutex_unlock(&sdev->state_mutex); in scsi_device_resume()
3099 device_quiesce_fn(struct scsi_device *sdev, void *data) in device_quiesce_fn() argument
3101 scsi_device_quiesce(sdev); in device_quiesce_fn()
3112 device_resume_fn(struct scsi_device *sdev, void *data) in device_resume_fn() argument
3114 scsi_device_resume(sdev); in device_resume_fn()
3138 int scsi_internal_device_block_nowait(struct scsi_device *sdev) in scsi_internal_device_block_nowait() argument
3140 struct request_queue *q = sdev->request_queue; in scsi_internal_device_block_nowait()
3144 err = scsi_device_set_state(sdev, SDEV_BLOCK); in scsi_internal_device_block_nowait()
3146 err = scsi_device_set_state(sdev, SDEV_CREATED_BLOCK); in scsi_internal_device_block_nowait()
3188 static int scsi_internal_device_block(struct scsi_device *sdev) in scsi_internal_device_block() argument
3190 struct request_queue *q = sdev->request_queue; in scsi_internal_device_block()
3193 mutex_lock(&sdev->state_mutex); in scsi_internal_device_block()
3194 err = scsi_internal_device_block_nowait(sdev); in scsi_internal_device_block()
3199 scsi_wait_for_queuecommand(sdev); in scsi_internal_device_block()
3201 mutex_unlock(&sdev->state_mutex); in scsi_internal_device_block()
3206 void scsi_start_queue(struct scsi_device *sdev) in scsi_start_queue() argument
3208 struct request_queue *q = sdev->request_queue; in scsi_start_queue()
3235 int scsi_internal_device_unblock_nowait(struct scsi_device *sdev, in scsi_internal_device_unblock_nowait() argument
3242 switch (sdev->sdev_state) { in scsi_internal_device_unblock_nowait()
3245 sdev->sdev_state = new_state; in scsi_internal_device_unblock_nowait()
3250 sdev->sdev_state = new_state; in scsi_internal_device_unblock_nowait()
3252 sdev->sdev_state = SDEV_CREATED; in scsi_internal_device_unblock_nowait()
3260 scsi_start_queue(sdev); in scsi_internal_device_unblock_nowait()
3280 static int scsi_internal_device_unblock(struct scsi_device *sdev, in scsi_internal_device_unblock() argument
3285 mutex_lock(&sdev->state_mutex); in scsi_internal_device_unblock()
3286 ret = scsi_internal_device_unblock_nowait(sdev, new_state); in scsi_internal_device_unblock()
3287 mutex_unlock(&sdev->state_mutex); in scsi_internal_device_unblock()
3293 device_block(struct scsi_device *sdev, void *data) in device_block() argument
3295 scsi_internal_device_block(sdev); in device_block()
3319 device_unblock(struct scsi_device *sdev, void *data) in device_unblock() argument
3321 scsi_internal_device_unblock(sdev, *(enum scsi_device_state *)data); in device_unblock()
3404 void sdev_disable_disk_events(struct scsi_device *sdev) in sdev_disable_disk_events() argument
3406 atomic_inc(&sdev->disk_events_disable_depth); in sdev_disable_disk_events()
3410 void sdev_enable_disk_events(struct scsi_device *sdev) in sdev_enable_disk_events() argument
3412 if (WARN_ON_ONCE(atomic_read(&sdev->disk_events_disable_depth) <= 0)) in sdev_enable_disk_events()
3414 atomic_dec(&sdev->disk_events_disable_depth); in sdev_enable_disk_events()
3432 int scsi_vpd_lun_id(struct scsi_device *sdev, char *id, size_t id_len) in scsi_vpd_lun_id() argument
3441 vpd_pg83 = rcu_dereference(sdev->vpd_pg83); in scsi_vpd_lun_id()
3583 int scsi_vpd_tpg_id(struct scsi_device *sdev, int *rel_id) in scsi_vpd_tpg_id() argument
3590 vpd_pg83 = rcu_dereference(sdev->vpd_pg83); in scsi_vpd_tpg_id()