Lines Matching refs:shost
69 int scsi_init_sense_cache(struct Scsi_Host *shost) in scsi_init_sense_cache() argument
74 cache = scsi_select_sense_cache(shost->unchecked_isa_dma); in scsi_init_sense_cache()
79 if (shost->unchecked_isa_dma) { in scsi_init_sense_cache()
343 static void scsi_dec_host_busy(struct Scsi_Host *shost) in scsi_dec_host_busy() argument
348 atomic_dec(&shost->host_busy); in scsi_dec_host_busy()
349 if (unlikely(scsi_host_in_recovery(shost))) { in scsi_dec_host_busy()
350 spin_lock_irqsave(shost->host_lock, flags); in scsi_dec_host_busy()
351 if (shost->host_failed || shost->host_eh_scheduled) in scsi_dec_host_busy()
352 scsi_eh_wakeup(shost); in scsi_dec_host_busy()
353 spin_unlock_irqrestore(shost->host_lock, flags); in scsi_dec_host_busy()
360 struct Scsi_Host *shost = sdev->host; in scsi_device_unbusy() local
363 scsi_dec_host_busy(shost); in scsi_device_unbusy()
388 struct Scsi_Host *shost = current_sdev->host; in scsi_single_lun_run() local
393 spin_lock_irqsave(shost->host_lock, flags); in scsi_single_lun_run()
395 spin_unlock_irqrestore(shost->host_lock, flags); in scsi_single_lun_run()
405 spin_lock_irqsave(shost->host_lock, flags); in scsi_single_lun_run()
415 spin_unlock_irqrestore(shost->host_lock, flags); in scsi_single_lun_run()
417 spin_lock_irqsave(shost->host_lock, flags); in scsi_single_lun_run()
422 spin_unlock_irqrestore(shost->host_lock, flags); in scsi_single_lun_run()
445 static inline bool scsi_host_is_busy(struct Scsi_Host *shost) in scsi_host_is_busy() argument
447 if (shost->can_queue > 0 && in scsi_host_is_busy()
448 atomic_read(&shost->host_busy) >= shost->can_queue) in scsi_host_is_busy()
450 if (atomic_read(&shost->host_blocked) > 0) in scsi_host_is_busy()
452 if (shost->host_self_blocked) in scsi_host_is_busy()
457 static void scsi_starved_list_run(struct Scsi_Host *shost) in scsi_starved_list_run() argument
463 spin_lock_irqsave(shost->host_lock, flags); in scsi_starved_list_run()
464 list_splice_init(&shost->starved_list, &starved_list); in scsi_starved_list_run()
479 if (scsi_host_is_busy(shost)) in scsi_starved_list_run()
487 &shost->starved_list); in scsi_starved_list_run()
504 spin_unlock_irqrestore(shost->host_lock, flags); in scsi_starved_list_run()
509 spin_lock_irqsave(shost->host_lock, flags); in scsi_starved_list_run()
512 list_splice(&starved_list, &shost->starved_list); in scsi_starved_list_run()
513 spin_unlock_irqrestore(shost->host_lock, flags); in scsi_starved_list_run()
589 void scsi_run_host_queues(struct Scsi_Host *shost) in scsi_run_host_queues() argument
593 shost_for_each_device(sdev, shost) in scsi_run_host_queues()
1250 struct Scsi_Host *shost = sdev->host; in scsi_add_cmd_to_list() local
1253 if (shost->use_cmd_list) { in scsi_add_cmd_to_list()
1264 struct Scsi_Host *shost = sdev->host; in scsi_del_cmd_from_list() local
1267 if (shost->use_cmd_list) { in scsi_del_cmd_from_list()
1539 static inline int scsi_target_queue_ready(struct Scsi_Host *shost, in scsi_target_queue_ready() argument
1546 spin_lock_irq(shost->host_lock); in scsi_target_queue_ready()
1549 spin_unlock_irq(shost->host_lock); in scsi_target_queue_ready()
1553 spin_unlock_irq(shost->host_lock); in scsi_target_queue_ready()
1580 spin_lock_irq(shost->host_lock); in scsi_target_queue_ready()
1581 list_move_tail(&sdev->starved_entry, &shost->starved_list); in scsi_target_queue_ready()
1582 spin_unlock_irq(shost->host_lock); in scsi_target_queue_ready()
1595 struct Scsi_Host *shost, in scsi_host_queue_ready() argument
1600 if (scsi_host_in_recovery(shost)) in scsi_host_queue_ready()
1603 busy = atomic_inc_return(&shost->host_busy) - 1; in scsi_host_queue_ready()
1604 if (atomic_read(&shost->host_blocked) > 0) { in scsi_host_queue_ready()
1611 if (atomic_dec_return(&shost->host_blocked) > 0) in scsi_host_queue_ready()
1615 shost_printk(KERN_INFO, shost, in scsi_host_queue_ready()
1619 if (shost->can_queue > 0 && busy >= shost->can_queue) in scsi_host_queue_ready()
1621 if (shost->host_self_blocked) in scsi_host_queue_ready()
1626 spin_lock_irq(shost->host_lock); in scsi_host_queue_ready()
1629 spin_unlock_irq(shost->host_lock); in scsi_host_queue_ready()
1635 spin_lock_irq(shost->host_lock); in scsi_host_queue_ready()
1637 list_add_tail(&sdev->starved_entry, &shost->starved_list); in scsi_host_queue_ready()
1638 spin_unlock_irq(shost->host_lock); in scsi_host_queue_ready()
1640 scsi_dec_host_busy(shost); in scsi_host_queue_ready()
1659 struct Scsi_Host *shost; 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()
1686 struct Scsi_Host *shost; in scsi_kill_request() local
1694 shost = sdev->host; in scsi_kill_request()
1705 atomic_inc(&shost->host_busy); in scsi_kill_request()
1868 struct Scsi_Host *shost; in scsi_request_fn() local
1876 shost = sdev->host; in scsi_request_fn()
1924 spin_lock_irq(shost->host_lock); in scsi_request_fn()
1927 &shost->starved_list); in scsi_request_fn()
1928 spin_unlock_irq(shost->host_lock); 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()
1997 static unsigned int scsi_mq_sgl_size(struct Scsi_Host *shost) in scsi_mq_sgl_size() argument
1999 return min_t(unsigned int, shost->sg_tablesize, SG_CHUNK_SIZE) * in scsi_mq_sgl_size()
2007 struct Scsi_Host *shost = sdev->host; in scsi_mq_prep_fn() local
2019 sg = (void *)cmd + sizeof(struct scsi_cmnd) + shost->hostt->cmd_size; in scsi_mq_prep_fn()
2022 if (scsi_host_get_prot(shost)) { in scsi_mq_prep_fn()
2086 struct Scsi_Host *shost = sdev->host; in scsi_queue_rq() local
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()
2128 scsi_dec_host_busy(shost); in scsi_queue_rq()
2166 struct Scsi_Host *shost = set->driver_data; in scsi_mq_init_request() local
2167 const bool unchecked_isa_dma = shost->unchecked_isa_dma; in scsi_mq_init_request()
2179 if (scsi_host_get_prot(shost)) { in scsi_mq_init_request()
2181 shost->hostt->cmd_size; in scsi_mq_init_request()
2182 cmd->prot_sdb = (void *)sg + scsi_mq_sgl_size(shost); in scsi_mq_init_request()
2199 struct Scsi_Host *shost = container_of(set, struct Scsi_Host, tag_set); in scsi_map_queues() local
2201 if (shost->hostt->map_queues) in scsi_map_queues()
2202 return shost->hostt->map_queues(shost); in scsi_map_queues()
2206 void __scsi_init_queue(struct Scsi_Host *shost, struct request_queue *q) in __scsi_init_queue() argument
2208 struct device *dev = shost->dma_dev; in __scsi_init_queue()
2213 blk_queue_max_segments(q, min_t(unsigned short, shost->sg_tablesize, in __scsi_init_queue()
2216 if (scsi_host_prot_dma(shost)) { in __scsi_init_queue()
2217 shost->sg_prot_tablesize = in __scsi_init_queue()
2218 min_not_zero(shost->sg_prot_tablesize, in __scsi_init_queue()
2220 BUG_ON(shost->sg_prot_tablesize < shost->sg_tablesize); in __scsi_init_queue()
2221 blk_queue_max_integrity_segments(q, shost->sg_prot_tablesize); in __scsi_init_queue()
2224 blk_queue_max_hw_sectors(q, shost->max_sectors); in __scsi_init_queue()
2225 if (shost->unchecked_isa_dma) in __scsi_init_queue()
2227 blk_queue_segment_boundary(q, shost->dma_boundary); in __scsi_init_queue()
2228 dma_set_seg_boundary(dev, shost->dma_boundary); in __scsi_init_queue()
2232 if (!shost->use_clustering) in __scsi_init_queue()
2249 struct Scsi_Host *shost = q->rq_alloc_data; in scsi_old_init_rq() local
2250 const bool unchecked_isa_dma = shost->unchecked_isa_dma; in scsi_old_init_rq()
2263 if (scsi_host_get_prot(shost) >= SHOST_DIX_TYPE0_PROTECTION) { in scsi_old_init_rq()
2289 struct Scsi_Host *shost = sdev->host; in scsi_old_alloc_queue() local
2295 q->cmd_size = sizeof(struct scsi_cmnd) + shost->hostt->cmd_size; in scsi_old_alloc_queue()
2296 q->rq_alloc_data = shost; in scsi_old_alloc_queue()
2307 __scsi_init_queue(shost, q); in scsi_old_alloc_queue()
2344 int scsi_mq_setup_tags(struct Scsi_Host *shost) in scsi_mq_setup_tags() argument
2348 sgl_size = scsi_mq_sgl_size(shost); in scsi_mq_setup_tags()
2349 cmd_size = sizeof(struct scsi_cmnd) + shost->hostt->cmd_size + sgl_size; in scsi_mq_setup_tags()
2350 if (scsi_host_get_prot(shost)) in scsi_mq_setup_tags()
2353 memset(&shost->tag_set, 0, sizeof(shost->tag_set)); in scsi_mq_setup_tags()
2354 shost->tag_set.ops = &scsi_mq_ops; in scsi_mq_setup_tags()
2355 shost->tag_set.nr_hw_queues = shost->nr_hw_queues ? : 1; in scsi_mq_setup_tags()
2356 shost->tag_set.queue_depth = shost->can_queue; in scsi_mq_setup_tags()
2357 shost->tag_set.cmd_size = cmd_size; in scsi_mq_setup_tags()
2358 shost->tag_set.numa_node = NUMA_NO_NODE; in scsi_mq_setup_tags()
2359 shost->tag_set.flags = BLK_MQ_F_SHOULD_MERGE | BLK_MQ_F_SG_MERGE; in scsi_mq_setup_tags()
2360 shost->tag_set.flags |= in scsi_mq_setup_tags()
2361 BLK_ALLOC_POLICY_TO_MQ_FLAG(shost->hostt->tag_alloc_policy); in scsi_mq_setup_tags()
2362 shost->tag_set.driver_data = shost; in scsi_mq_setup_tags()
2364 return blk_mq_alloc_tag_set(&shost->tag_set); in scsi_mq_setup_tags()
2367 void scsi_mq_destroy_tags(struct Scsi_Host *shost) in scsi_mq_destroy_tags() argument
2369 blk_mq_free_tag_set(&shost->tag_set); in scsi_mq_destroy_tags()
2411 void scsi_block_requests(struct Scsi_Host *shost) in scsi_block_requests() argument
2413 shost->host_self_blocked = 1; in scsi_block_requests()
2437 void scsi_unblock_requests(struct Scsi_Host *shost) in scsi_unblock_requests() argument
2439 shost->host_self_blocked = 0; in scsi_unblock_requests()
2440 scsi_run_host_queues(shost); in scsi_unblock_requests()