• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /asuswrt-rt-n18u-9.0.0.4.380.2695/release/src-rt-6.x.4708/linux/linux-2.6.36/drivers/scsi/

Lines Matching refs:cmd

73 static void scsi_done(struct scsi_cmnd *cmd);
173 struct scsi_cmnd *cmd;
175 cmd = kmem_cache_zalloc(pool->cmd_slab, gfp_mask | pool->gfp_mask);
176 if (!cmd)
179 cmd->sense_buffer = kmem_cache_alloc(pool->sense_slab,
181 if (!cmd->sense_buffer) {
182 kmem_cache_free(pool->cmd_slab, cmd);
186 return cmd;
192 * @cmd: command to release
199 struct scsi_cmnd *cmd)
201 if (cmd->prot_sdb)
202 kmem_cache_free(scsi_sdb_cache, cmd->prot_sdb);
204 kmem_cache_free(pool->sense_slab, cmd->sense_buffer);
205 kmem_cache_free(pool->cmd_slab, cmd);
219 struct scsi_cmnd *cmd;
221 cmd = scsi_pool_alloc_command(shost->cmd_pool, gfp_mask);
222 if (!cmd)
226 cmd->prot_sdb = kmem_cache_zalloc(scsi_sdb_cache, gfp_mask);
228 if (!cmd->prot_sdb) {
229 scsi_pool_free_command(shost->cmd_pool, cmd);
234 return cmd;
247 struct scsi_cmnd *cmd = scsi_host_alloc_command(shost, gfp_mask);
249 if (unlikely(!cmd)) {
254 cmd = list_entry(shost->free_list.next,
256 list_del_init(&cmd->list);
260 if (cmd) {
263 buf = cmd->sense_buffer;
264 prot = cmd->prot_sdb;
266 memset(cmd, 0, sizeof(*cmd));
268 cmd->sense_buffer = buf;
269 cmd->prot_sdb = prot;
273 return cmd;
286 struct scsi_cmnd *cmd;
292 cmd = __scsi_get_command(dev->host, gfp_mask);
294 if (likely(cmd != NULL)) {
297 cmd->device = dev;
298 INIT_LIST_HEAD(&cmd->list);
300 list_add_tail(&cmd->list, &dev->cmd_list);
302 cmd->jiffies_at_alloc = jiffies;
306 return cmd;
313 * @cmd: Command to free
316 void __scsi_put_command(struct Scsi_Host *shost, struct scsi_cmnd *cmd,
324 list_add(&cmd->list, &shost->free_list);
325 cmd = NULL;
329 if (likely(cmd != NULL))
330 scsi_pool_free_command(shost->cmd_pool, cmd);
338 * @cmd: command block to free
344 void scsi_put_command(struct scsi_cmnd *cmd)
346 struct scsi_device *sdev = cmd->device;
350 spin_lock_irqsave(&cmd->device->list_lock, flags);
351 BUG_ON(list_empty(&cmd->list));
352 list_del_init(&cmd->list);
353 spin_unlock_irqrestore(&cmd->device->list_lock, flags);
355 __scsi_put_command(cmd->device->host, cmd, &sdev->sdev_gendev);
440 * @cmd: command to free
446 void scsi_free_command(gfp_t gfp_mask, struct scsi_cmnd *cmd)
458 scsi_pool_free_command(pool, cmd);
481 struct scsi_cmnd *cmd;
495 cmd = scsi_host_alloc_command(shost, gfp_mask);
496 if (!cmd) {
501 list_add(&cmd->list, &shost->free_list);
519 struct scsi_cmnd *cmd;
521 cmd = list_entry(shost->free_list.next, struct scsi_cmnd, list);
522 list_del_init(&cmd->list);
523 scsi_pool_free_command(shost->cmd_pool, cmd);
530 void scsi_log_send(struct scsi_cmnd *cmd)
541 * 3: same as 2 plus dump cmd address
549 scmd_printk(KERN_INFO, cmd, "Send: ");
551 printk("0x%p ", cmd);
553 scsi_print_command(cmd);
557 scsi_sglist(cmd), scsi_bufflen(cmd),
558 cmd->device->host->hostt->queuecommand);
565 void scsi_log_completion(struct scsi_cmnd *cmd, int disposition)
577 * 3: same as 2 plus dump cmd address
584 if (((level > 0) && (cmd->result || disposition != SUCCESS)) ||
586 scmd_printk(KERN_INFO, cmd, "Done: ");
588 printk("0x%p ", cmd);
615 scsi_print_result(cmd);
616 scsi_print_command(cmd);
617 if (status_byte(cmd->result) & CHECK_CONDITION)
618 scsi_print_sense("", cmd);
620 scmd_printk(KERN_INFO, cmd,
622 cmd->device->host->host_busy,
623 cmd->device->host->host_failed);
632 * @cmd: command to assign serial number to
637 static inline void scsi_cmd_get_serial(struct Scsi_Host *host, struct scsi_cmnd *cmd)
639 cmd->serial_number = host->cmd_serial_number++;
640 if (cmd->serial_number == 0)
641 cmd->serial_number = host->cmd_serial_number++;
646 * @cmd: command block we are dispatching.
651 int scsi_dispatch_cmd(struct scsi_cmnd *cmd)
653 struct Scsi_Host *host = cmd->device->host;
658 atomic_inc(&cmd->device->iorequest_cnt);
661 if (unlikely(cmd->device->sdev_state == SDEV_DEL)) {
665 cmd->result = DID_NO_CONNECT << 16;
666 scsi_done(cmd);
672 if (unlikely(scsi_device_blocked(cmd->device))) {
681 scsi_queue_insert(cmd, SCSI_MLQUEUE_DEVICE_BUSY);
695 if (cmd->device->scsi_level <= SCSI_2 &&
696 cmd->device->scsi_level != SCSI_UNKNOWN) {
697 cmd->cmnd[1] = (cmd->cmnd[1] & 0x1f) |
698 (cmd->device->lun << 5 & 0xe0);
723 scsi_log_send(cmd);
729 if (cmd->cmd_len > cmd->device->host->max_cmd_len) {
733 cmd->cmd_len, cmd->device->host->max_cmd_len));
734 cmd->result = (DID_ABORT << 16);
736 scsi_done(cmd);
747 scsi_cmd_get_serial(host, cmd);
750 cmd->result = (DID_NO_CONNECT << 16);
751 scsi_done(cmd);
753 trace_scsi_dispatch_cmd_start(cmd);
754 rtn = host->hostt->queuecommand(cmd, scsi_done);
758 trace_scsi_dispatch_cmd_error(cmd, rtn);
763 scsi_queue_insert(cmd, rtn);
776 * @cmd: The SCSI Command for which a low-level device driver (LLDD) gives
787 static void scsi_done(struct scsi_cmnd *cmd)
789 trace_scsi_dispatch_cmd_done(cmd);
790 blk_complete_request(cmd->request);
794 static struct scsi_driver *scsi_cmd_to_driver(struct scsi_cmnd *cmd)
796 return *(struct scsi_driver **)cmd->request->rq_disk->private_data;
801 * @cmd: the command
807 void scsi_finish_command(struct scsi_cmnd *cmd)
809 struct scsi_device *sdev = cmd->device;
825 if (SCSI_SENSE_VALID(cmd))
826 cmd->result |= (DRIVER_SENSE << 24);
830 "(result %x)\n", cmd->result));
832 good_bytes = scsi_bufflen(cmd);
833 if (cmd->request->cmd_type != REQ_TYPE_BLOCK_PC) {
835 drv = scsi_cmd_to_driver(cmd);
837 good_bytes = drv->done(cmd);
845 good_bytes -= scsi_get_resid(cmd);
847 scsi_io_completion(cmd, good_bytes);
990 unsigned char cmd[16];
992 cmd[0] = INQUIRY;
993 cmd[1] = 1; /* EVPD */
994 cmd[2] = page;
995 cmd[3] = len >> 8;
996 cmd[4] = len & 0xff;
997 cmd[5] = 0; /* Control byte */
1003 result = scsi_execute_req(sdev, cmd, DMA_FROM_DEVICE, buffer,