1 /* 2 * scsi_lib.c Copyright (C) 1999 Eric Youngdale 3 * 4 * SCSI queueing library. 5 * Initial versions: Eric Youngdale (eric@andante.org). 6 * Based upon conversations with large numbers 7 * of people at Linux Expo. 8 */ 9 10 #include <linux/bio.h> 11 #include <linux/bitops.h> 12 #include <linux/blkdev.h> 13 #include <linux/completion.h> 14 #include <linux/kernel.h> 15 #include <linux/export.h> 16 #include <linux/mempool.h> 17 #include <linux/slab.h> 18 #include <linux/init.h> 19 #include <linux/pci.h> 20 #include <linux/delay.h> 21 #include <linux/hardirq.h> 22 #include <linux/scatterlist.h> 23 24 #include <scsi/scsi.h> 25 #include <scsi/scsi_cmnd.h> 26 #include <scsi/scsi_dbg.h> 27 #include <scsi/scsi_device.h> 28 #include <scsi/scsi_driver.h> 29 #include <scsi/scsi_eh.h> 30 #include <scsi/scsi_host.h> 31 32 #include "scsi_priv.h" 33 #include "scsi_logging.h" 34 35 36 #define SG_MEMPOOL_NR ARRAY_SIZE(scsi_sg_pools) 37 #define SG_MEMPOOL_SIZE 2 38 39 struct scsi_host_sg_pool { 40 size_t size; 41 char *name; 42 struct kmem_cache *slab; 43 mempool_t *pool; 44 }; 45 46 #define SP(x) { x, "sgpool-" __stringify(x) } 47 #if (SCSI_MAX_SG_SEGMENTS < 32) 48 #error SCSI_MAX_SG_SEGMENTS is too small (must be 32 or greater) 49 #endif 50 static struct scsi_host_sg_pool scsi_sg_pools[] = { 51 SP(8), 52 SP(16), 53 #if (SCSI_MAX_SG_SEGMENTS > 32) 54 SP(32), 55 #if (SCSI_MAX_SG_SEGMENTS > 64) 56 SP(64), 57 #if (SCSI_MAX_SG_SEGMENTS > 128) 58 SP(128), 59 #if (SCSI_MAX_SG_SEGMENTS > 256) 60 #error SCSI_MAX_SG_SEGMENTS is too large (256 MAX) 61 #endif 62 #endif 63 #endif 64 #endif 65 SP(SCSI_MAX_SG_SEGMENTS) 66 }; 67 #undef SP 68 69 struct kmem_cache *scsi_sdb_cache; 70 71 #ifdef CONFIG_ACPI 72 #include <acpi/acpi_bus.h> 73 74 static bool acpi_scsi_bus_match(struct device *dev) 75 { 76 return dev->bus == &scsi_bus_type; 77 } 78 79 int scsi_register_acpi_bus_type(struct acpi_bus_type *bus) 80 { 81 bus->match = acpi_scsi_bus_match; 82 return register_acpi_bus_type(bus); 83 } 84 EXPORT_SYMBOL_GPL(scsi_register_acpi_bus_type); 85 86 void scsi_unregister_acpi_bus_type(struct acpi_bus_type *bus) 87 { 88 unregister_acpi_bus_type(bus); 89 } 90 EXPORT_SYMBOL_GPL(scsi_unregister_acpi_bus_type); 91 #endif 92 93 /* 94 * When to reinvoke queueing after a resource shortage. It's 3 msecs to 95 * not change behaviour from the previous unplug mechanism, experimentation 96 * may prove this needs changing. 97 */ 98 #define SCSI_QUEUE_DELAY 3 99 100 /* 101 * Function: scsi_unprep_request() 102 * 103 * Purpose: Remove all preparation done for a request, including its 104 * associated scsi_cmnd, so that it can be requeued. 105 * 106 * Arguments: req - request to unprepare 107 * 108 * Lock status: Assumed that no locks are held upon entry. 109 * 110 * Returns: Nothing. 111 */ 112 static void scsi_unprep_request(struct request *req) 113 { 114 struct scsi_cmnd *cmd = req->special; 115 116 blk_unprep_request(req); 117 req->special = NULL; 118 119 scsi_put_command(cmd); 120 } 121 122 /** 123 * __scsi_queue_insert - private queue insertion 124 * @cmd: The SCSI command being requeued 125 * @reason: The reason for the requeue 126 * @unbusy: Whether the queue should be unbusied 127 * 128 * This is a private queue insertion. The public interface 129 * scsi_queue_insert() always assumes the queue should be unbusied 130 * because it's always called before the completion. This function is 131 * for a requeue after completion, which should only occur in this 132 * file. 133 */ 134 static void __scsi_queue_insert(struct scsi_cmnd *cmd, int reason, int unbusy) 135 { 136 struct Scsi_Host *host = cmd->device->host; 137 struct scsi_device *device = cmd->device; 138 struct scsi_target *starget = scsi_target(device); 139 struct request_queue *q = device->request_queue; 140 unsigned long flags; 141 142 SCSI_LOG_MLQUEUE(1, 143 printk("Inserting command %p into mlqueue\n", cmd)); 144 145 /* 146 * Set the appropriate busy bit for the device/host. 147 * 148 * If the host/device isn't busy, assume that something actually 149 * completed, and that we should be able to queue a command now. 150 * 151 * Note that the prior mid-layer assumption that any host could 152 * always queue at least one command is now broken. The mid-layer 153 * will implement a user specifiable stall (see 154 * scsi_host.max_host_blocked and scsi_device.max_device_blocked) 155 * if a command is requeued with no other commands outstanding 156 * either for the device or for the host. 157 */ 158 switch (reason) { 159 case SCSI_MLQUEUE_HOST_BUSY: 160 host->host_blocked = host->max_host_blocked; 161 break; 162 case SCSI_MLQUEUE_DEVICE_BUSY: 163 case SCSI_MLQUEUE_EH_RETRY: 164 device->device_blocked = device->max_device_blocked; 165 break; 166 case SCSI_MLQUEUE_TARGET_BUSY: 167 starget->target_blocked = starget->max_target_blocked; 168 break; 169 } 170 171 /* 172 * Decrement the counters, since these commands are no longer 173 * active on the host/device. 174 */ 175 if (unbusy) 176 scsi_device_unbusy(device); 177 178 /* 179 * Requeue this command. It will go before all other commands 180 * that are already in the queue. Schedule requeue work under 181 * lock such that the kblockd_schedule_work() call happens 182 * before blk_cleanup_queue() finishes. 183 */ 184 spin_lock_irqsave(q->queue_lock, flags); 185 blk_requeue_request(q, cmd->request); 186 kblockd_schedule_work(q, &device->requeue_work); 187 spin_unlock_irqrestore(q->queue_lock, flags); 188 } 189 190 /* 191 * Function: scsi_queue_insert() 192 * 193 * Purpose: Insert a command in the midlevel queue. 194 * 195 * Arguments: cmd - command that we are adding to queue. 196 * reason - why we are inserting command to queue. 197 * 198 * Lock status: Assumed that lock is not held upon entry. 199 * 200 * Returns: Nothing. 201 * 202 * Notes: We do this for one of two cases. Either the host is busy 203 * and it cannot accept any more commands for the time being, 204 * or the device returned QUEUE_FULL and can accept no more 205 * commands. 206 * Notes: This could be called either from an interrupt context or a 207 * normal process context. 208 */ 209 void scsi_queue_insert(struct scsi_cmnd *cmd, int reason) 210 { 211 __scsi_queue_insert(cmd, reason, 1); 212 } 213 /** 214 * scsi_execute - insert request and wait for the result 215 * @sdev: scsi device 216 * @cmd: scsi command 217 * @data_direction: data direction 218 * @buffer: data buffer 219 * @bufflen: len of buffer 220 * @sense: optional sense buffer 221 * @timeout: request timeout in seconds 222 * @retries: number of times to retry request 223 * @flags: or into request flags; 224 * @resid: optional residual length 225 * 226 * returns the req->errors value which is the scsi_cmnd result 227 * field. 228 */ 229 int scsi_execute(struct scsi_device *sdev, const unsigned char *cmd, 230 int data_direction, void *buffer, unsigned bufflen, 231 unsigned char *sense, int timeout, int retries, int flags, 232 int *resid) 233 { 234 struct request *req; 235 int write = (data_direction == DMA_TO_DEVICE); 236 int ret = DRIVER_ERROR << 24; 237 238 req = blk_get_request(sdev->request_queue, write, __GFP_WAIT); 239 if (!req) 240 return ret; 241 242 if (bufflen && blk_rq_map_kern(sdev->request_queue, req, 243 buffer, bufflen, __GFP_WAIT)) 244 goto out; 245 246 req->cmd_len = COMMAND_SIZE(cmd[0]); 247 memcpy(req->cmd, cmd, req->cmd_len); 248 req->sense = sense; 249 req->sense_len = 0; 250 req->retries = retries; 251 req->timeout = timeout; 252 req->cmd_type = REQ_TYPE_BLOCK_PC; 253 req->cmd_flags |= flags | REQ_QUIET | REQ_PREEMPT; 254 255 /* 256 * head injection *required* here otherwise quiesce won't work 257 */ 258 blk_execute_rq(req->q, NULL, req, 1); 259 260 /* 261 * Some devices (USB mass-storage in particular) may transfer 262 * garbage data together with a residue indicating that the data 263 * is invalid. Prevent the garbage from being misinterpreted 264 * and prevent security leaks by zeroing out the excess data. 265 */ 266 if (unlikely(req->resid_len > 0 && req->resid_len <= bufflen)) 267 memset(buffer + (bufflen - req->resid_len), 0, req->resid_len); 268 269 if (resid) 270 *resid = req->resid_len; 271 ret = req->errors; 272 out: 273 blk_put_request(req); 274 275 return ret; 276 } 277 EXPORT_SYMBOL(scsi_execute); 278 279 280 int scsi_execute_req(struct scsi_device *sdev, const unsigned char *cmd, 281 int data_direction, void *buffer, unsigned bufflen, 282 struct scsi_sense_hdr *sshdr, int timeout, int retries, 283 int *resid) 284 { 285 char *sense = NULL; 286 int result; 287 288 if (sshdr) { 289 sense = kzalloc(SCSI_SENSE_BUFFERSIZE, GFP_NOIO); 290 if (!sense) 291 return DRIVER_ERROR << 24; 292 } 293 result = scsi_execute(sdev, cmd, data_direction, buffer, bufflen, 294 sense, timeout, retries, 0, resid); 295 if (sshdr) 296 scsi_normalize_sense(sense, SCSI_SENSE_BUFFERSIZE, sshdr); 297 298 kfree(sense); 299 return result; 300 } 301 EXPORT_SYMBOL(scsi_execute_req); 302 303 /* 304 * Function: scsi_init_cmd_errh() 305 * 306 * Purpose: Initialize cmd fields related to error handling. 307 * 308 * Arguments: cmd - command that is ready to be queued. 309 * 310 * Notes: This function has the job of initializing a number of 311 * fields related to error handling. Typically this will 312 * be called once for each command, as required. 313 */ 314 static void scsi_init_cmd_errh(struct scsi_cmnd *cmd) 315 { 316 cmd->serial_number = 0; 317 scsi_set_resid(cmd, 0); 318 memset(cmd->sense_buffer, 0, SCSI_SENSE_BUFFERSIZE); 319 if (cmd->cmd_len == 0) 320 cmd->cmd_len = scsi_command_size(cmd->cmnd); 321 } 322 323 void scsi_device_unbusy(struct scsi_device *sdev) 324 { 325 struct Scsi_Host *shost = sdev->host; 326 struct scsi_target *starget = scsi_target(sdev); 327 unsigned long flags; 328 329 spin_lock_irqsave(shost->host_lock, flags); 330 shost->host_busy--; 331 starget->target_busy--; 332 if (unlikely(scsi_host_in_recovery(shost) && 333 (shost->host_failed || shost->host_eh_scheduled))) 334 scsi_eh_wakeup(shost); 335 spin_unlock(shost->host_lock); 336 spin_lock(sdev->request_queue->queue_lock); 337 sdev->device_busy--; 338 spin_unlock_irqrestore(sdev->request_queue->queue_lock, flags); 339 } 340 341 /* 342 * Called for single_lun devices on IO completion. Clear starget_sdev_user, 343 * and call blk_run_queue for all the scsi_devices on the target - 344 * including current_sdev first. 345 * 346 * Called with *no* scsi locks held. 347 */ 348 static void scsi_single_lun_run(struct scsi_device *current_sdev) 349 { 350 struct Scsi_Host *shost = current_sdev->host; 351 struct scsi_device *sdev, *tmp; 352 struct scsi_target *starget = scsi_target(current_sdev); 353 unsigned long flags; 354 355 spin_lock_irqsave(shost->host_lock, flags); 356 starget->starget_sdev_user = NULL; 357 spin_unlock_irqrestore(shost->host_lock, flags); 358 359 /* 360 * Call blk_run_queue for all LUNs on the target, starting with 361 * current_sdev. We race with others (to set starget_sdev_user), 362 * but in most cases, we will be first. Ideally, each LU on the 363 * target would get some limited time or requests on the target. 364 */ 365 blk_run_queue(current_sdev->request_queue); 366 367 spin_lock_irqsave(shost->host_lock, flags); 368 if (starget->starget_sdev_user) 369 goto out; 370 list_for_each_entry_safe(sdev, tmp, &starget->devices, 371 same_target_siblings) { 372 if (sdev == current_sdev) 373 continue; 374 if (scsi_device_get(sdev)) 375 continue; 376 377 spin_unlock_irqrestore(shost->host_lock, flags); 378 blk_run_queue(sdev->request_queue); 379 spin_lock_irqsave(shost->host_lock, flags); 380 381 scsi_device_put(sdev); 382 } 383 out: 384 spin_unlock_irqrestore(shost->host_lock, flags); 385 } 386 387 static inline int scsi_device_is_busy(struct scsi_device *sdev) 388 { 389 if (sdev->device_busy >= sdev->queue_depth || sdev->device_blocked) 390 return 1; 391 392 return 0; 393 } 394 395 static inline int scsi_target_is_busy(struct scsi_target *starget) 396 { 397 return ((starget->can_queue > 0 && 398 starget->target_busy >= starget->can_queue) || 399 starget->target_blocked); 400 } 401 402 static inline int scsi_host_is_busy(struct Scsi_Host *shost) 403 { 404 if ((shost->can_queue > 0 && shost->host_busy >= shost->can_queue) || 405 shost->host_blocked || shost->host_self_blocked) 406 return 1; 407 408 return 0; 409 } 410 411 /* 412 * Function: scsi_run_queue() 413 * 414 * Purpose: Select a proper request queue to serve next 415 * 416 * Arguments: q - last request's queue 417 * 418 * Returns: Nothing 419 * 420 * Notes: The previous command was completely finished, start 421 * a new one if possible. 422 */ 423 static void scsi_run_queue(struct request_queue *q) 424 { 425 struct scsi_device *sdev = q->queuedata; 426 struct Scsi_Host *shost; 427 LIST_HEAD(starved_list); 428 unsigned long flags; 429 430 shost = sdev->host; 431 if (scsi_target(sdev)->single_lun) 432 scsi_single_lun_run(sdev); 433 434 spin_lock_irqsave(shost->host_lock, flags); 435 list_splice_init(&shost->starved_list, &starved_list); 436 437 while (!list_empty(&starved_list)) { 438 /* 439 * As long as shost is accepting commands and we have 440 * starved queues, call blk_run_queue. scsi_request_fn 441 * drops the queue_lock and can add us back to the 442 * starved_list. 443 * 444 * host_lock protects the starved_list and starved_entry. 445 * scsi_request_fn must get the host_lock before checking 446 * or modifying starved_list or starved_entry. 447 */ 448 if (scsi_host_is_busy(shost)) 449 break; 450 451 sdev = list_entry(starved_list.next, 452 struct scsi_device, starved_entry); 453 list_del_init(&sdev->starved_entry); 454 if (scsi_target_is_busy(scsi_target(sdev))) { 455 list_move_tail(&sdev->starved_entry, 456 &shost->starved_list); 457 continue; 458 } 459 460 spin_unlock(shost->host_lock); 461 spin_lock(sdev->request_queue->queue_lock); 462 __blk_run_queue(sdev->request_queue); 463 spin_unlock(sdev->request_queue->queue_lock); 464 spin_lock(shost->host_lock); 465 } 466 /* put any unprocessed entries back */ 467 list_splice(&starved_list, &shost->starved_list); 468 spin_unlock_irqrestore(shost->host_lock, flags); 469 470 blk_run_queue(q); 471 } 472 473 void scsi_requeue_run_queue(struct work_struct *work) 474 { 475 struct scsi_device *sdev; 476 struct request_queue *q; 477 478 sdev = container_of(work, struct scsi_device, requeue_work); 479 q = sdev->request_queue; 480 scsi_run_queue(q); 481 } 482 483 /* 484 * Function: scsi_requeue_command() 485 * 486 * Purpose: Handle post-processing of completed commands. 487 * 488 * Arguments: q - queue to operate on 489 * cmd - command that may need to be requeued. 490 * 491 * Returns: Nothing 492 * 493 * Notes: After command completion, there may be blocks left 494 * over which weren't finished by the previous command 495 * this can be for a number of reasons - the main one is 496 * I/O errors in the middle of the request, in which case 497 * we need to request the blocks that come after the bad 498 * sector. 499 * Notes: Upon return, cmd is a stale pointer. 500 */ 501 static void scsi_requeue_command(struct request_queue *q, struct scsi_cmnd *cmd) 502 { 503 struct scsi_device *sdev = cmd->device; 504 struct request *req = cmd->request; 505 unsigned long flags; 506 507 /* 508 * We need to hold a reference on the device to avoid the queue being 509 * killed after the unlock and before scsi_run_queue is invoked which 510 * may happen because scsi_unprep_request() puts the command which 511 * releases its reference on the device. 512 */ 513 get_device(&sdev->sdev_gendev); 514 515 spin_lock_irqsave(q->queue_lock, flags); 516 scsi_unprep_request(req); 517 blk_requeue_request(q, req); 518 spin_unlock_irqrestore(q->queue_lock, flags); 519 520 scsi_run_queue(q); 521 522 put_device(&sdev->sdev_gendev); 523 } 524 525 void scsi_next_command(struct scsi_cmnd *cmd) 526 { 527 struct scsi_device *sdev = cmd->device; 528 struct request_queue *q = sdev->request_queue; 529 530 /* need to hold a reference on the device before we let go of the cmd */ 531 get_device(&sdev->sdev_gendev); 532 533 scsi_put_command(cmd); 534 scsi_run_queue(q); 535 536 /* ok to remove device now */ 537 put_device(&sdev->sdev_gendev); 538 } 539 540 void scsi_run_host_queues(struct Scsi_Host *shost) 541 { 542 struct scsi_device *sdev; 543 544 shost_for_each_device(sdev, shost) 545 scsi_run_queue(sdev->request_queue); 546 } 547 548 static void __scsi_release_buffers(struct scsi_cmnd *, int); 549 550 /* 551 * Function: scsi_end_request() 552 * 553 * Purpose: Post-processing of completed commands (usually invoked at end 554 * of upper level post-processing and scsi_io_completion). 555 * 556 * Arguments: cmd - command that is complete. 557 * error - 0 if I/O indicates success, < 0 for I/O error. 558 * bytes - number of bytes of completed I/O 559 * requeue - indicates whether we should requeue leftovers. 560 * 561 * Lock status: Assumed that lock is not held upon entry. 562 * 563 * Returns: cmd if requeue required, NULL otherwise. 564 * 565 * Notes: This is called for block device requests in order to 566 * mark some number of sectors as complete. 567 * 568 * We are guaranteeing that the request queue will be goosed 569 * at some point during this call. 570 * Notes: If cmd was requeued, upon return it will be a stale pointer. 571 */ 572 static struct scsi_cmnd *scsi_end_request(struct scsi_cmnd *cmd, int error, 573 int bytes, int requeue) 574 { 575 struct request_queue *q = cmd->device->request_queue; 576 struct request *req = cmd->request; 577 578 /* 579 * If there are blocks left over at the end, set up the command 580 * to queue the remainder of them. 581 */ 582 if (blk_end_request(req, error, bytes)) { 583 /* kill remainder if no retrys */ 584 if (error && scsi_noretry_cmd(cmd)) 585 blk_end_request_all(req, error); 586 else { 587 if (requeue) { 588 /* 589 * Bleah. Leftovers again. Stick the 590 * leftovers in the front of the 591 * queue, and goose the queue again. 592 */ 593 scsi_release_buffers(cmd); 594 scsi_requeue_command(q, cmd); 595 cmd = NULL; 596 } 597 return cmd; 598 } 599 } 600 601 /* 602 * This will goose the queue request function at the end, so we don't 603 * need to worry about launching another command. 604 */ 605 __scsi_release_buffers(cmd, 0); 606 scsi_next_command(cmd); 607 return NULL; 608 } 609 610 static inline unsigned int scsi_sgtable_index(unsigned short nents) 611 { 612 unsigned int index; 613 614 BUG_ON(nents > SCSI_MAX_SG_SEGMENTS); 615 616 if (nents <= 8) 617 index = 0; 618 else 619 index = get_count_order(nents) - 3; 620 621 return index; 622 } 623 624 static void scsi_sg_free(struct scatterlist *sgl, unsigned int nents) 625 { 626 struct scsi_host_sg_pool *sgp; 627 628 sgp = scsi_sg_pools + scsi_sgtable_index(nents); 629 mempool_free(sgl, sgp->pool); 630 } 631 632 static struct scatterlist *scsi_sg_alloc(unsigned int nents, gfp_t gfp_mask) 633 { 634 struct scsi_host_sg_pool *sgp; 635 636 sgp = scsi_sg_pools + scsi_sgtable_index(nents); 637 return mempool_alloc(sgp->pool, gfp_mask); 638 } 639 640 static int scsi_alloc_sgtable(struct scsi_data_buffer *sdb, int nents, 641 gfp_t gfp_mask) 642 { 643 int ret; 644 645 BUG_ON(!nents); 646 647 ret = __sg_alloc_table(&sdb->table, nents, SCSI_MAX_SG_SEGMENTS, 648 gfp_mask, scsi_sg_alloc); 649 if (unlikely(ret)) 650 __sg_free_table(&sdb->table, SCSI_MAX_SG_SEGMENTS, 651 scsi_sg_free); 652 653 return ret; 654 } 655 656 static void scsi_free_sgtable(struct scsi_data_buffer *sdb) 657 { 658 __sg_free_table(&sdb->table, SCSI_MAX_SG_SEGMENTS, scsi_sg_free); 659 } 660 661 static void __scsi_release_buffers(struct scsi_cmnd *cmd, int do_bidi_check) 662 { 663 664 if (cmd->sdb.table.nents) 665 scsi_free_sgtable(&cmd->sdb); 666 667 memset(&cmd->sdb, 0, sizeof(cmd->sdb)); 668 669 if (do_bidi_check && scsi_bidi_cmnd(cmd)) { 670 struct scsi_data_buffer *bidi_sdb = 671 cmd->request->next_rq->special; 672 scsi_free_sgtable(bidi_sdb); 673 kmem_cache_free(scsi_sdb_cache, bidi_sdb); 674 cmd->request->next_rq->special = NULL; 675 } 676 677 if (scsi_prot_sg_count(cmd)) 678 scsi_free_sgtable(cmd->prot_sdb); 679 } 680 681 /* 682 * Function: scsi_release_buffers() 683 * 684 * Purpose: Completion processing for block device I/O requests. 685 * 686 * Arguments: cmd - command that we are bailing. 687 * 688 * Lock status: Assumed that no lock is held upon entry. 689 * 690 * Returns: Nothing 691 * 692 * Notes: In the event that an upper level driver rejects a 693 * command, we must release resources allocated during 694 * the __init_io() function. Primarily this would involve 695 * the scatter-gather table, and potentially any bounce 696 * buffers. 697 */ 698 void scsi_release_buffers(struct scsi_cmnd *cmd) 699 { 700 __scsi_release_buffers(cmd, 1); 701 } 702 EXPORT_SYMBOL(scsi_release_buffers); 703 704 static int __scsi_error_from_host_byte(struct scsi_cmnd *cmd, int result) 705 { 706 int error = 0; 707 708 switch(host_byte(result)) { 709 case DID_TRANSPORT_FAILFAST: 710 error = -ENOLINK; 711 break; 712 case DID_TARGET_FAILURE: 713 set_host_byte(cmd, DID_OK); 714 error = -EREMOTEIO; 715 break; 716 case DID_NEXUS_FAILURE: 717 set_host_byte(cmd, DID_OK); 718 error = -EBADE; 719 break; 720 default: 721 error = -EIO; 722 break; 723 } 724 725 return error; 726 } 727 728 /* 729 * Function: scsi_io_completion() 730 * 731 * Purpose: Completion processing for block device I/O requests. 732 * 733 * Arguments: cmd - command that is finished. 734 * 735 * Lock status: Assumed that no lock is held upon entry. 736 * 737 * Returns: Nothing 738 * 739 * Notes: This function is matched in terms of capabilities to 740 * the function that created the scatter-gather list. 741 * In other words, if there are no bounce buffers 742 * (the normal case for most drivers), we don't need 743 * the logic to deal with cleaning up afterwards. 744 * 745 * We must call scsi_end_request(). This will finish off 746 * the specified number of sectors. If we are done, the 747 * command block will be released and the queue function 748 * will be goosed. If we are not done then we have to 749 * figure out what to do next: 750 * 751 * a) We can call scsi_requeue_command(). The request 752 * will be unprepared and put back on the queue. Then 753 * a new command will be created for it. This should 754 * be used if we made forward progress, or if we want 755 * to switch from READ(10) to READ(6) for example. 756 * 757 * b) We can call scsi_queue_insert(). The request will 758 * be put back on the queue and retried using the same 759 * command as before, possibly after a delay. 760 * 761 * c) We can call blk_end_request() with -EIO to fail 762 * the remainder of the request. 763 */ 764 void scsi_io_completion(struct scsi_cmnd *cmd, unsigned int good_bytes) 765 { 766 int result = cmd->result; 767 struct request_queue *q = cmd->device->request_queue; 768 struct request *req = cmd->request; 769 int error = 0; 770 struct scsi_sense_hdr sshdr; 771 int sense_valid = 0; 772 int sense_deferred = 0; 773 enum {ACTION_FAIL, ACTION_REPREP, ACTION_RETRY, 774 ACTION_DELAYED_RETRY} action; 775 char *description = NULL; 776 777 if (result) { 778 sense_valid = scsi_command_normalize_sense(cmd, &sshdr); 779 if (sense_valid) 780 sense_deferred = scsi_sense_is_deferred(&sshdr); 781 } 782 783 if (req->cmd_type == REQ_TYPE_BLOCK_PC) { /* SG_IO ioctl from block level */ 784 if (result) { 785 if (sense_valid && req->sense) { 786 /* 787 * SG_IO wants current and deferred errors 788 */ 789 int len = 8 + cmd->sense_buffer[7]; 790 791 if (len > SCSI_SENSE_BUFFERSIZE) 792 len = SCSI_SENSE_BUFFERSIZE; 793 memcpy(req->sense, cmd->sense_buffer, len); 794 req->sense_len = len; 795 } 796 if (!sense_deferred) 797 error = __scsi_error_from_host_byte(cmd, result); 798 } 799 /* 800 * __scsi_error_from_host_byte may have reset the host_byte 801 */ 802 req->errors = cmd->result; 803 804 req->resid_len = scsi_get_resid(cmd); 805 806 if (scsi_bidi_cmnd(cmd)) { 807 /* 808 * Bidi commands Must be complete as a whole, 809 * both sides at once. 810 */ 811 req->next_rq->resid_len = scsi_in(cmd)->resid; 812 813 scsi_release_buffers(cmd); 814 blk_end_request_all(req, 0); 815 816 scsi_next_command(cmd); 817 return; 818 } 819 } 820 821 /* no bidi support for !REQ_TYPE_BLOCK_PC yet */ 822 BUG_ON(blk_bidi_rq(req)); 823 824 /* 825 * Next deal with any sectors which we were able to correctly 826 * handle. 827 */ 828 SCSI_LOG_HLCOMPLETE(1, printk("%u sectors total, " 829 "%d bytes done.\n", 830 blk_rq_sectors(req), good_bytes)); 831 832 /* 833 * Recovered errors need reporting, but they're always treated 834 * as success, so fiddle the result code here. For BLOCK_PC 835 * we already took a copy of the original into rq->errors which 836 * is what gets returned to the user 837 */ 838 if (sense_valid && (sshdr.sense_key == RECOVERED_ERROR)) { 839 /* if ATA PASS-THROUGH INFORMATION AVAILABLE skip 840 * print since caller wants ATA registers. Only occurs on 841 * SCSI ATA PASS_THROUGH commands when CK_COND=1 842 */ 843 if ((sshdr.asc == 0x0) && (sshdr.ascq == 0x1d)) 844 ; 845 else if (!(req->cmd_flags & REQ_QUIET)) 846 scsi_print_sense("", cmd); 847 result = 0; 848 /* BLOCK_PC may have set error */ 849 error = 0; 850 } 851 852 /* 853 * A number of bytes were successfully read. If there 854 * are leftovers and there is some kind of error 855 * (result != 0), retry the rest. 856 */ 857 if (scsi_end_request(cmd, error, good_bytes, result == 0) == NULL) 858 return; 859 860 error = __scsi_error_from_host_byte(cmd, result); 861 862 if (host_byte(result) == DID_RESET) { 863 /* Third party bus reset or reset for error recovery 864 * reasons. Just retry the command and see what 865 * happens. 866 */ 867 action = ACTION_RETRY; 868 } else if (sense_valid && !sense_deferred) { 869 switch (sshdr.sense_key) { 870 case UNIT_ATTENTION: 871 if (cmd->device->removable) { 872 /* Detected disc change. Set a bit 873 * and quietly refuse further access. 874 */ 875 cmd->device->changed = 1; 876 description = "Media Changed"; 877 action = ACTION_FAIL; 878 } else { 879 /* Must have been a power glitch, or a 880 * bus reset. Could not have been a 881 * media change, so we just retry the 882 * command and see what happens. 883 */ 884 action = ACTION_RETRY; 885 } 886 break; 887 case ILLEGAL_REQUEST: 888 /* If we had an ILLEGAL REQUEST returned, then 889 * we may have performed an unsupported 890 * command. The only thing this should be 891 * would be a ten byte read where only a six 892 * byte read was supported. Also, on a system 893 * where READ CAPACITY failed, we may have 894 * read past the end of the disk. 895 */ 896 if ((cmd->device->use_10_for_rw && 897 sshdr.asc == 0x20 && sshdr.ascq == 0x00) && 898 (cmd->cmnd[0] == READ_10 || 899 cmd->cmnd[0] == WRITE_10)) { 900 /* This will issue a new 6-byte command. */ 901 cmd->device->use_10_for_rw = 0; 902 action = ACTION_REPREP; 903 } else if (sshdr.asc == 0x10) /* DIX */ { 904 description = "Host Data Integrity Failure"; 905 action = ACTION_FAIL; 906 error = -EILSEQ; 907 /* INVALID COMMAND OPCODE or INVALID FIELD IN CDB */ 908 } else if (sshdr.asc == 0x20 || sshdr.asc == 0x24) { 909 switch (cmd->cmnd[0]) { 910 case UNMAP: 911 description = "Discard failure"; 912 break; 913 case WRITE_SAME: 914 case WRITE_SAME_16: 915 if (cmd->cmnd[1] & 0x8) 916 description = "Discard failure"; 917 else 918 description = 919 "Write same failure"; 920 break; 921 default: 922 description = "Invalid command failure"; 923 break; 924 } 925 action = ACTION_FAIL; 926 error = -EREMOTEIO; 927 } else 928 action = ACTION_FAIL; 929 break; 930 case ABORTED_COMMAND: 931 action = ACTION_FAIL; 932 if (sshdr.asc == 0x10) { /* DIF */ 933 description = "Target Data Integrity Failure"; 934 error = -EILSEQ; 935 } 936 break; 937 case NOT_READY: 938 /* If the device is in the process of becoming 939 * ready, or has a temporary blockage, retry. 940 */ 941 if (sshdr.asc == 0x04) { 942 switch (sshdr.ascq) { 943 case 0x01: /* becoming ready */ 944 case 0x04: /* format in progress */ 945 case 0x05: /* rebuild in progress */ 946 case 0x06: /* recalculation in progress */ 947 case 0x07: /* operation in progress */ 948 case 0x08: /* Long write in progress */ 949 case 0x09: /* self test in progress */ 950 case 0x14: /* space allocation in progress */ 951 action = ACTION_DELAYED_RETRY; 952 break; 953 default: 954 description = "Device not ready"; 955 action = ACTION_FAIL; 956 break; 957 } 958 } else { 959 description = "Device not ready"; 960 action = ACTION_FAIL; 961 } 962 break; 963 case VOLUME_OVERFLOW: 964 /* See SSC3rXX or current. */ 965 action = ACTION_FAIL; 966 break; 967 default: 968 description = "Unhandled sense code"; 969 action = ACTION_FAIL; 970 break; 971 } 972 } else { 973 description = "Unhandled error code"; 974 action = ACTION_FAIL; 975 } 976 977 switch (action) { 978 case ACTION_FAIL: 979 /* Give up and fail the remainder of the request */ 980 scsi_release_buffers(cmd); 981 if (!(req->cmd_flags & REQ_QUIET)) { 982 if (description) 983 scmd_printk(KERN_INFO, cmd, "%s\n", 984 description); 985 scsi_print_result(cmd); 986 if (driver_byte(result) & DRIVER_SENSE) 987 scsi_print_sense("", cmd); 988 scsi_print_command(cmd); 989 } 990 if (blk_end_request_err(req, error)) 991 scsi_requeue_command(q, cmd); 992 else 993 scsi_next_command(cmd); 994 break; 995 case ACTION_REPREP: 996 /* Unprep the request and put it back at the head of the queue. 997 * A new command will be prepared and issued. 998 */ 999 scsi_release_buffers(cmd); 1000 scsi_requeue_command(q, cmd); 1001 break; 1002 case ACTION_RETRY: 1003 /* Retry the same command immediately */ 1004 __scsi_queue_insert(cmd, SCSI_MLQUEUE_EH_RETRY, 0); 1005 break; 1006 case ACTION_DELAYED_RETRY: 1007 /* Retry the same command after a delay */ 1008 __scsi_queue_insert(cmd, SCSI_MLQUEUE_DEVICE_BUSY, 0); 1009 break; 1010 } 1011 } 1012 1013 static int scsi_init_sgtable(struct request *req, struct scsi_data_buffer *sdb, 1014 gfp_t gfp_mask) 1015 { 1016 int count; 1017 1018 /* 1019 * If sg table allocation fails, requeue request later. 1020 */ 1021 if (unlikely(scsi_alloc_sgtable(sdb, req->nr_phys_segments, 1022 gfp_mask))) { 1023 return BLKPREP_DEFER; 1024 } 1025 1026 req->buffer = NULL; 1027 1028 /* 1029 * Next, walk the list, and fill in the addresses and sizes of 1030 * each segment. 1031 */ 1032 count = blk_rq_map_sg(req->q, req, sdb->table.sgl); 1033 BUG_ON(count > sdb->table.nents); 1034 sdb->table.nents = count; 1035 sdb->length = blk_rq_bytes(req); 1036 return BLKPREP_OK; 1037 } 1038 1039 /* 1040 * Function: scsi_init_io() 1041 * 1042 * Purpose: SCSI I/O initialize function. 1043 * 1044 * Arguments: cmd - Command descriptor we wish to initialize 1045 * 1046 * Returns: 0 on success 1047 * BLKPREP_DEFER if the failure is retryable 1048 * BLKPREP_KILL if the failure is fatal 1049 */ 1050 int scsi_init_io(struct scsi_cmnd *cmd, gfp_t gfp_mask) 1051 { 1052 struct request *rq = cmd->request; 1053 1054 int error = scsi_init_sgtable(rq, &cmd->sdb, gfp_mask); 1055 if (error) 1056 goto err_exit; 1057 1058 if (blk_bidi_rq(rq)) { 1059 struct scsi_data_buffer *bidi_sdb = kmem_cache_zalloc( 1060 scsi_sdb_cache, GFP_ATOMIC); 1061 if (!bidi_sdb) { 1062 error = BLKPREP_DEFER; 1063 goto err_exit; 1064 } 1065 1066 rq->next_rq->special = bidi_sdb; 1067 error = scsi_init_sgtable(rq->next_rq, bidi_sdb, GFP_ATOMIC); 1068 if (error) 1069 goto err_exit; 1070 } 1071 1072 if (blk_integrity_rq(rq)) { 1073 struct scsi_data_buffer *prot_sdb = cmd->prot_sdb; 1074 int ivecs, count; 1075 1076 BUG_ON(prot_sdb == NULL); 1077 ivecs = blk_rq_count_integrity_sg(rq->q, rq->bio); 1078 1079 if (scsi_alloc_sgtable(prot_sdb, ivecs, gfp_mask)) { 1080 error = BLKPREP_DEFER; 1081 goto err_exit; 1082 } 1083 1084 count = blk_rq_map_integrity_sg(rq->q, rq->bio, 1085 prot_sdb->table.sgl); 1086 BUG_ON(unlikely(count > ivecs)); 1087 BUG_ON(unlikely(count > queue_max_integrity_segments(rq->q))); 1088 1089 cmd->prot_sdb = prot_sdb; 1090 cmd->prot_sdb->table.nents = count; 1091 } 1092 1093 return BLKPREP_OK ; 1094 1095 err_exit: 1096 scsi_release_buffers(cmd); 1097 cmd->request->special = NULL; 1098 scsi_put_command(cmd); 1099 return error; 1100 } 1101 EXPORT_SYMBOL(scsi_init_io); 1102 1103 static struct scsi_cmnd *scsi_get_cmd_from_req(struct scsi_device *sdev, 1104 struct request *req) 1105 { 1106 struct scsi_cmnd *cmd; 1107 1108 if (!req->special) { 1109 cmd = scsi_get_command(sdev, GFP_ATOMIC); 1110 if (unlikely(!cmd)) 1111 return NULL; 1112 req->special = cmd; 1113 } else { 1114 cmd = req->special; 1115 } 1116 1117 /* pull a tag out of the request if we have one */ 1118 cmd->tag = req->tag; 1119 cmd->request = req; 1120 1121 cmd->cmnd = req->cmd; 1122 cmd->prot_op = SCSI_PROT_NORMAL; 1123 1124 return cmd; 1125 } 1126 1127 int scsi_setup_blk_pc_cmnd(struct scsi_device *sdev, struct request *req) 1128 { 1129 struct scsi_cmnd *cmd; 1130 int ret = scsi_prep_state_check(sdev, req); 1131 1132 if (ret != BLKPREP_OK) 1133 return ret; 1134 1135 cmd = scsi_get_cmd_from_req(sdev, req); 1136 if (unlikely(!cmd)) 1137 return BLKPREP_DEFER; 1138 1139 /* 1140 * BLOCK_PC requests may transfer data, in which case they must 1141 * a bio attached to them. Or they might contain a SCSI command 1142 * that does not transfer data, in which case they may optionally 1143 * submit a request without an attached bio. 1144 */ 1145 if (req->bio) { 1146 int ret; 1147 1148 BUG_ON(!req->nr_phys_segments); 1149 1150 ret = scsi_init_io(cmd, GFP_ATOMIC); 1151 if (unlikely(ret)) 1152 return ret; 1153 } else { 1154 BUG_ON(blk_rq_bytes(req)); 1155 1156 memset(&cmd->sdb, 0, sizeof(cmd->sdb)); 1157 req->buffer = NULL; 1158 } 1159 1160 cmd->cmd_len = req->cmd_len; 1161 if (!blk_rq_bytes(req)) 1162 cmd->sc_data_direction = DMA_NONE; 1163 else if (rq_data_dir(req) == WRITE) 1164 cmd->sc_data_direction = DMA_TO_DEVICE; 1165 else 1166 cmd->sc_data_direction = DMA_FROM_DEVICE; 1167 1168 cmd->transfersize = blk_rq_bytes(req); 1169 cmd->allowed = req->retries; 1170 return BLKPREP_OK; 1171 } 1172 EXPORT_SYMBOL(scsi_setup_blk_pc_cmnd); 1173 1174 /* 1175 * Setup a REQ_TYPE_FS command. These are simple read/write request 1176 * from filesystems that still need to be translated to SCSI CDBs from 1177 * the ULD. 1178 */ 1179 int scsi_setup_fs_cmnd(struct scsi_device *sdev, struct request *req) 1180 { 1181 struct scsi_cmnd *cmd; 1182 int ret = scsi_prep_state_check(sdev, req); 1183 1184 if (ret != BLKPREP_OK) 1185 return ret; 1186 1187 if (unlikely(sdev->scsi_dh_data && sdev->scsi_dh_data->scsi_dh 1188 && sdev->scsi_dh_data->scsi_dh->prep_fn)) { 1189 ret = sdev->scsi_dh_data->scsi_dh->prep_fn(sdev, req); 1190 if (ret != BLKPREP_OK) 1191 return ret; 1192 } 1193 1194 /* 1195 * Filesystem requests must transfer data. 1196 */ 1197 BUG_ON(!req->nr_phys_segments); 1198 1199 cmd = scsi_get_cmd_from_req(sdev, req); 1200 if (unlikely(!cmd)) 1201 return BLKPREP_DEFER; 1202 1203 memset(cmd->cmnd, 0, BLK_MAX_CDB); 1204 return scsi_init_io(cmd, GFP_ATOMIC); 1205 } 1206 EXPORT_SYMBOL(scsi_setup_fs_cmnd); 1207 1208 int scsi_prep_state_check(struct scsi_device *sdev, struct request *req) 1209 { 1210 int ret = BLKPREP_OK; 1211 1212 /* 1213 * If the device is not in running state we will reject some 1214 * or all commands. 1215 */ 1216 if (unlikely(sdev->sdev_state != SDEV_RUNNING)) { 1217 switch (sdev->sdev_state) { 1218 case SDEV_OFFLINE: 1219 case SDEV_TRANSPORT_OFFLINE: 1220 /* 1221 * If the device is offline we refuse to process any 1222 * commands. The device must be brought online 1223 * before trying any recovery commands. 1224 */ 1225 sdev_printk(KERN_ERR, sdev, 1226 "rejecting I/O to offline device\n"); 1227 ret = BLKPREP_KILL; 1228 break; 1229 case SDEV_DEL: 1230 /* 1231 * If the device is fully deleted, we refuse to 1232 * process any commands as well. 1233 */ 1234 sdev_printk(KERN_ERR, sdev, 1235 "rejecting I/O to dead device\n"); 1236 ret = BLKPREP_KILL; 1237 break; 1238 case SDEV_QUIESCE: 1239 case SDEV_BLOCK: 1240 case SDEV_CREATED_BLOCK: 1241 /* 1242 * If the devices is blocked we defer normal commands. 1243 */ 1244 if (!(req->cmd_flags & REQ_PREEMPT)) 1245 ret = BLKPREP_DEFER; 1246 break; 1247 default: 1248 /* 1249 * For any other not fully online state we only allow 1250 * special commands. In particular any user initiated 1251 * command is not allowed. 1252 */ 1253 if (!(req->cmd_flags & REQ_PREEMPT)) 1254 ret = BLKPREP_KILL; 1255 break; 1256 } 1257 } 1258 return ret; 1259 } 1260 EXPORT_SYMBOL(scsi_prep_state_check); 1261 1262 int scsi_prep_return(struct request_queue *q, struct request *req, int ret) 1263 { 1264 struct scsi_device *sdev = q->queuedata; 1265 1266 switch (ret) { 1267 case BLKPREP_KILL: 1268 req->errors = DID_NO_CONNECT << 16; 1269 /* release the command and kill it */ 1270 if (req->special) { 1271 struct scsi_cmnd *cmd = req->special; 1272 scsi_release_buffers(cmd); 1273 scsi_put_command(cmd); 1274 req->special = NULL; 1275 } 1276 break; 1277 case BLKPREP_DEFER: 1278 /* 1279 * If we defer, the blk_peek_request() returns NULL, but the 1280 * queue must be restarted, so we schedule a callback to happen 1281 * shortly. 1282 */ 1283 if (sdev->device_busy == 0) 1284 blk_delay_queue(q, SCSI_QUEUE_DELAY); 1285 break; 1286 default: 1287 req->cmd_flags |= REQ_DONTPREP; 1288 } 1289 1290 return ret; 1291 } 1292 EXPORT_SYMBOL(scsi_prep_return); 1293 1294 int scsi_prep_fn(struct request_queue *q, struct request *req) 1295 { 1296 struct scsi_device *sdev = q->queuedata; 1297 int ret = BLKPREP_KILL; 1298 1299 if (req->cmd_type == REQ_TYPE_BLOCK_PC) 1300 ret = scsi_setup_blk_pc_cmnd(sdev, req); 1301 return scsi_prep_return(q, req, ret); 1302 } 1303 EXPORT_SYMBOL(scsi_prep_fn); 1304 1305 /* 1306 * scsi_dev_queue_ready: if we can send requests to sdev, return 1 else 1307 * return 0. 1308 * 1309 * Called with the queue_lock held. 1310 */ 1311 static inline int scsi_dev_queue_ready(struct request_queue *q, 1312 struct scsi_device *sdev) 1313 { 1314 if (sdev->device_busy == 0 && sdev->device_blocked) { 1315 /* 1316 * unblock after device_blocked iterates to zero 1317 */ 1318 if (--sdev->device_blocked == 0) { 1319 SCSI_LOG_MLQUEUE(3, 1320 sdev_printk(KERN_INFO, sdev, 1321 "unblocking device at zero depth\n")); 1322 } else { 1323 blk_delay_queue(q, SCSI_QUEUE_DELAY); 1324 return 0; 1325 } 1326 } 1327 if (scsi_device_is_busy(sdev)) 1328 return 0; 1329 1330 return 1; 1331 } 1332 1333 1334 /* 1335 * scsi_target_queue_ready: checks if there we can send commands to target 1336 * @sdev: scsi device on starget to check. 1337 * 1338 * Called with the host lock held. 1339 */ 1340 static inline int scsi_target_queue_ready(struct Scsi_Host *shost, 1341 struct scsi_device *sdev) 1342 { 1343 struct scsi_target *starget = scsi_target(sdev); 1344 1345 if (starget->single_lun) { 1346 if (starget->starget_sdev_user && 1347 starget->starget_sdev_user != sdev) 1348 return 0; 1349 starget->starget_sdev_user = sdev; 1350 } 1351 1352 if (starget->target_busy == 0 && starget->target_blocked) { 1353 /* 1354 * unblock after target_blocked iterates to zero 1355 */ 1356 if (--starget->target_blocked == 0) { 1357 SCSI_LOG_MLQUEUE(3, starget_printk(KERN_INFO, starget, 1358 "unblocking target at zero depth\n")); 1359 } else 1360 return 0; 1361 } 1362 1363 if (scsi_target_is_busy(starget)) { 1364 list_move_tail(&sdev->starved_entry, &shost->starved_list); 1365 return 0; 1366 } 1367 1368 return 1; 1369 } 1370 1371 /* 1372 * scsi_host_queue_ready: if we can send requests to shost, return 1 else 1373 * return 0. We must end up running the queue again whenever 0 is 1374 * returned, else IO can hang. 1375 * 1376 * Called with host_lock held. 1377 */ 1378 static inline int scsi_host_queue_ready(struct request_queue *q, 1379 struct Scsi_Host *shost, 1380 struct scsi_device *sdev) 1381 { 1382 if (scsi_host_in_recovery(shost)) 1383 return 0; 1384 if (shost->host_busy == 0 && shost->host_blocked) { 1385 /* 1386 * unblock after host_blocked iterates to zero 1387 */ 1388 if (--shost->host_blocked == 0) { 1389 SCSI_LOG_MLQUEUE(3, 1390 printk("scsi%d unblocking host at zero depth\n", 1391 shost->host_no)); 1392 } else { 1393 return 0; 1394 } 1395 } 1396 if (scsi_host_is_busy(shost)) { 1397 if (list_empty(&sdev->starved_entry)) 1398 list_add_tail(&sdev->starved_entry, &shost->starved_list); 1399 return 0; 1400 } 1401 1402 /* We're OK to process the command, so we can't be starved */ 1403 if (!list_empty(&sdev->starved_entry)) 1404 list_del_init(&sdev->starved_entry); 1405 1406 return 1; 1407 } 1408 1409 /* 1410 * Busy state exporting function for request stacking drivers. 1411 * 1412 * For efficiency, no lock is taken to check the busy state of 1413 * shost/starget/sdev, since the returned value is not guaranteed and 1414 * may be changed after request stacking drivers call the function, 1415 * regardless of taking lock or not. 1416 * 1417 * When scsi can't dispatch I/Os anymore and needs to kill I/Os scsi 1418 * needs to return 'not busy'. Otherwise, request stacking drivers 1419 * may hold requests forever. 1420 */ 1421 static int scsi_lld_busy(struct request_queue *q) 1422 { 1423 struct scsi_device *sdev = q->queuedata; 1424 struct Scsi_Host *shost; 1425 1426 if (blk_queue_dying(q)) 1427 return 0; 1428 1429 shost = sdev->host; 1430 1431 /* 1432 * Ignore host/starget busy state. 1433 * Since block layer does not have a concept of fairness across 1434 * multiple queues, congestion of host/starget needs to be handled 1435 * in SCSI layer. 1436 */ 1437 if (scsi_host_in_recovery(shost) || scsi_device_is_busy(sdev)) 1438 return 1; 1439 1440 return 0; 1441 } 1442 1443 /* 1444 * Kill a request for a dead device 1445 */ 1446 static void scsi_kill_request(struct request *req, struct request_queue *q) 1447 { 1448 struct scsi_cmnd *cmd = req->special; 1449 struct scsi_device *sdev; 1450 struct scsi_target *starget; 1451 struct Scsi_Host *shost; 1452 1453 blk_start_request(req); 1454 1455 scmd_printk(KERN_INFO, cmd, "killing request\n"); 1456 1457 sdev = cmd->device; 1458 starget = scsi_target(sdev); 1459 shost = sdev->host; 1460 scsi_init_cmd_errh(cmd); 1461 cmd->result = DID_NO_CONNECT << 16; 1462 atomic_inc(&cmd->device->iorequest_cnt); 1463 1464 /* 1465 * SCSI request completion path will do scsi_device_unbusy(), 1466 * bump busy counts. To bump the counters, we need to dance 1467 * with the locks as normal issue path does. 1468 */ 1469 sdev->device_busy++; 1470 spin_unlock(sdev->request_queue->queue_lock); 1471 spin_lock(shost->host_lock); 1472 shost->host_busy++; 1473 starget->target_busy++; 1474 spin_unlock(shost->host_lock); 1475 spin_lock(sdev->request_queue->queue_lock); 1476 1477 blk_complete_request(req); 1478 } 1479 1480 static void scsi_softirq_done(struct request *rq) 1481 { 1482 struct scsi_cmnd *cmd = rq->special; 1483 unsigned long wait_for = (cmd->allowed + 1) * rq->timeout; 1484 int disposition; 1485 1486 INIT_LIST_HEAD(&cmd->eh_entry); 1487 1488 atomic_inc(&cmd->device->iodone_cnt); 1489 if (cmd->result) 1490 atomic_inc(&cmd->device->ioerr_cnt); 1491 1492 disposition = scsi_decide_disposition(cmd); 1493 if (disposition != SUCCESS && 1494 time_before(cmd->jiffies_at_alloc + wait_for, jiffies)) { 1495 sdev_printk(KERN_ERR, cmd->device, 1496 "timing out command, waited %lus\n", 1497 wait_for/HZ); 1498 disposition = SUCCESS; 1499 } 1500 1501 scsi_log_completion(cmd, disposition); 1502 1503 switch (disposition) { 1504 case SUCCESS: 1505 scsi_finish_command(cmd); 1506 break; 1507 case NEEDS_RETRY: 1508 scsi_queue_insert(cmd, SCSI_MLQUEUE_EH_RETRY); 1509 break; 1510 case ADD_TO_MLQUEUE: 1511 scsi_queue_insert(cmd, SCSI_MLQUEUE_DEVICE_BUSY); 1512 break; 1513 default: 1514 if (!scsi_eh_scmd_add(cmd, 0)) 1515 scsi_finish_command(cmd); 1516 } 1517 } 1518 1519 /* 1520 * Function: scsi_request_fn() 1521 * 1522 * Purpose: Main strategy routine for SCSI. 1523 * 1524 * Arguments: q - Pointer to actual queue. 1525 * 1526 * Returns: Nothing 1527 * 1528 * Lock status: IO request lock assumed to be held when called. 1529 */ 1530 static void scsi_request_fn(struct request_queue *q) 1531 { 1532 struct scsi_device *sdev = q->queuedata; 1533 struct Scsi_Host *shost; 1534 struct scsi_cmnd *cmd; 1535 struct request *req; 1536 1537 if(!get_device(&sdev->sdev_gendev)) 1538 /* We must be tearing the block queue down already */ 1539 return; 1540 1541 /* 1542 * To start with, we keep looping until the queue is empty, or until 1543 * the host is no longer able to accept any more requests. 1544 */ 1545 shost = sdev->host; 1546 for (;;) { 1547 int rtn; 1548 /* 1549 * get next queueable request. We do this early to make sure 1550 * that the request is fully prepared even if we cannot 1551 * accept it. 1552 */ 1553 req = blk_peek_request(q); 1554 if (!req || !scsi_dev_queue_ready(q, sdev)) 1555 break; 1556 1557 if (unlikely(!scsi_device_online(sdev))) { 1558 sdev_printk(KERN_ERR, sdev, 1559 "rejecting I/O to offline device\n"); 1560 scsi_kill_request(req, q); 1561 continue; 1562 } 1563 1564 1565 /* 1566 * Remove the request from the request list. 1567 */ 1568 if (!(blk_queue_tagged(q) && !blk_queue_start_tag(q, req))) 1569 blk_start_request(req); 1570 sdev->device_busy++; 1571 1572 spin_unlock(q->queue_lock); 1573 cmd = req->special; 1574 if (unlikely(cmd == NULL)) { 1575 printk(KERN_CRIT "impossible request in %s.\n" 1576 "please mail a stack trace to " 1577 "linux-scsi@vger.kernel.org\n", 1578 __func__); 1579 blk_dump_rq_flags(req, "foo"); 1580 BUG(); 1581 } 1582 spin_lock(shost->host_lock); 1583 1584 /* 1585 * We hit this when the driver is using a host wide 1586 * tag map. For device level tag maps the queue_depth check 1587 * in the device ready fn would prevent us from trying 1588 * to allocate a tag. Since the map is a shared host resource 1589 * we add the dev to the starved list so it eventually gets 1590 * a run when a tag is freed. 1591 */ 1592 if (blk_queue_tagged(q) && !blk_rq_tagged(req)) { 1593 if (list_empty(&sdev->starved_entry)) 1594 list_add_tail(&sdev->starved_entry, 1595 &shost->starved_list); 1596 goto not_ready; 1597 } 1598 1599 if (!scsi_target_queue_ready(shost, sdev)) 1600 goto not_ready; 1601 1602 if (!scsi_host_queue_ready(q, shost, sdev)) 1603 goto not_ready; 1604 1605 scsi_target(sdev)->target_busy++; 1606 shost->host_busy++; 1607 1608 /* 1609 * XXX(hch): This is rather suboptimal, scsi_dispatch_cmd will 1610 * take the lock again. 1611 */ 1612 spin_unlock_irq(shost->host_lock); 1613 1614 /* 1615 * Finally, initialize any error handling parameters, and set up 1616 * the timers for timeouts. 1617 */ 1618 scsi_init_cmd_errh(cmd); 1619 1620 /* 1621 * Dispatch the command to the low-level driver. 1622 */ 1623 rtn = scsi_dispatch_cmd(cmd); 1624 spin_lock_irq(q->queue_lock); 1625 if (rtn) 1626 goto out_delay; 1627 } 1628 1629 goto out; 1630 1631 not_ready: 1632 spin_unlock_irq(shost->host_lock); 1633 1634 /* 1635 * lock q, handle tag, requeue req, and decrement device_busy. We 1636 * must return with queue_lock held. 1637 * 1638 * Decrementing device_busy without checking it is OK, as all such 1639 * cases (host limits or settings) should run the queue at some 1640 * later time. 1641 */ 1642 spin_lock_irq(q->queue_lock); 1643 blk_requeue_request(q, req); 1644 sdev->device_busy--; 1645 out_delay: 1646 if (sdev->device_busy == 0) 1647 blk_delay_queue(q, SCSI_QUEUE_DELAY); 1648 out: 1649 /* must be careful here...if we trigger the ->remove() function 1650 * we cannot be holding the q lock */ 1651 spin_unlock_irq(q->queue_lock); 1652 put_device(&sdev->sdev_gendev); 1653 spin_lock_irq(q->queue_lock); 1654 } 1655 1656 u64 scsi_calculate_bounce_limit(struct Scsi_Host *shost) 1657 { 1658 struct device *host_dev; 1659 u64 bounce_limit = 0xffffffff; 1660 1661 if (shost->unchecked_isa_dma) 1662 return BLK_BOUNCE_ISA; 1663 /* 1664 * Platforms with virtual-DMA translation 1665 * hardware have no practical limit. 1666 */ 1667 if (!PCI_DMA_BUS_IS_PHYS) 1668 return BLK_BOUNCE_ANY; 1669 1670 host_dev = scsi_get_device(shost); 1671 if (host_dev && host_dev->dma_mask) 1672 bounce_limit = *host_dev->dma_mask; 1673 1674 return bounce_limit; 1675 } 1676 EXPORT_SYMBOL(scsi_calculate_bounce_limit); 1677 1678 struct request_queue *__scsi_alloc_queue(struct Scsi_Host *shost, 1679 request_fn_proc *request_fn) 1680 { 1681 struct request_queue *q; 1682 struct device *dev = shost->dma_dev; 1683 1684 q = blk_init_queue(request_fn, NULL); 1685 if (!q) 1686 return NULL; 1687 1688 /* 1689 * this limit is imposed by hardware restrictions 1690 */ 1691 blk_queue_max_segments(q, min_t(unsigned short, shost->sg_tablesize, 1692 SCSI_MAX_SG_CHAIN_SEGMENTS)); 1693 1694 if (scsi_host_prot_dma(shost)) { 1695 shost->sg_prot_tablesize = 1696 min_not_zero(shost->sg_prot_tablesize, 1697 (unsigned short)SCSI_MAX_PROT_SG_SEGMENTS); 1698 BUG_ON(shost->sg_prot_tablesize < shost->sg_tablesize); 1699 blk_queue_max_integrity_segments(q, shost->sg_prot_tablesize); 1700 } 1701 1702 blk_queue_max_hw_sectors(q, shost->max_sectors); 1703 blk_queue_bounce_limit(q, scsi_calculate_bounce_limit(shost)); 1704 blk_queue_segment_boundary(q, shost->dma_boundary); 1705 dma_set_seg_boundary(dev, shost->dma_boundary); 1706 1707 blk_queue_max_segment_size(q, dma_get_max_seg_size(dev)); 1708 1709 if (!shost->use_clustering) 1710 q->limits.cluster = 0; 1711 1712 /* 1713 * set a reasonable default alignment on word boundaries: the 1714 * host and device may alter it using 1715 * blk_queue_update_dma_alignment() later. 1716 */ 1717 blk_queue_dma_alignment(q, 0x03); 1718 1719 return q; 1720 } 1721 EXPORT_SYMBOL(__scsi_alloc_queue); 1722 1723 struct request_queue *scsi_alloc_queue(struct scsi_device *sdev) 1724 { 1725 struct request_queue *q; 1726 1727 q = __scsi_alloc_queue(sdev->host, scsi_request_fn); 1728 if (!q) 1729 return NULL; 1730 1731 blk_queue_prep_rq(q, scsi_prep_fn); 1732 blk_queue_softirq_done(q, scsi_softirq_done); 1733 blk_queue_rq_timed_out(q, scsi_times_out); 1734 blk_queue_lld_busy(q, scsi_lld_busy); 1735 return q; 1736 } 1737 1738 /* 1739 * Function: scsi_block_requests() 1740 * 1741 * Purpose: Utility function used by low-level drivers to prevent further 1742 * commands from being queued to the device. 1743 * 1744 * Arguments: shost - Host in question 1745 * 1746 * Returns: Nothing 1747 * 1748 * Lock status: No locks are assumed held. 1749 * 1750 * Notes: There is no timer nor any other means by which the requests 1751 * get unblocked other than the low-level driver calling 1752 * scsi_unblock_requests(). 1753 */ 1754 void scsi_block_requests(struct Scsi_Host *shost) 1755 { 1756 shost->host_self_blocked = 1; 1757 } 1758 EXPORT_SYMBOL(scsi_block_requests); 1759 1760 /* 1761 * Function: scsi_unblock_requests() 1762 * 1763 * Purpose: Utility function used by low-level drivers to allow further 1764 * commands from being queued to the device. 1765 * 1766 * Arguments: shost - Host in question 1767 * 1768 * Returns: Nothing 1769 * 1770 * Lock status: No locks are assumed held. 1771 * 1772 * Notes: There is no timer nor any other means by which the requests 1773 * get unblocked other than the low-level driver calling 1774 * scsi_unblock_requests(). 1775 * 1776 * This is done as an API function so that changes to the 1777 * internals of the scsi mid-layer won't require wholesale 1778 * changes to drivers that use this feature. 1779 */ 1780 void scsi_unblock_requests(struct Scsi_Host *shost) 1781 { 1782 shost->host_self_blocked = 0; 1783 scsi_run_host_queues(shost); 1784 } 1785 EXPORT_SYMBOL(scsi_unblock_requests); 1786 1787 int __init scsi_init_queue(void) 1788 { 1789 int i; 1790 1791 scsi_sdb_cache = kmem_cache_create("scsi_data_buffer", 1792 sizeof(struct scsi_data_buffer), 1793 0, 0, NULL); 1794 if (!scsi_sdb_cache) { 1795 printk(KERN_ERR "SCSI: can't init scsi sdb cache\n"); 1796 return -ENOMEM; 1797 } 1798 1799 for (i = 0; i < SG_MEMPOOL_NR; i++) { 1800 struct scsi_host_sg_pool *sgp = scsi_sg_pools + i; 1801 int size = sgp->size * sizeof(struct scatterlist); 1802 1803 sgp->slab = kmem_cache_create(sgp->name, size, 0, 1804 SLAB_HWCACHE_ALIGN, NULL); 1805 if (!sgp->slab) { 1806 printk(KERN_ERR "SCSI: can't init sg slab %s\n", 1807 sgp->name); 1808 goto cleanup_sdb; 1809 } 1810 1811 sgp->pool = mempool_create_slab_pool(SG_MEMPOOL_SIZE, 1812 sgp->slab); 1813 if (!sgp->pool) { 1814 printk(KERN_ERR "SCSI: can't init sg mempool %s\n", 1815 sgp->name); 1816 goto cleanup_sdb; 1817 } 1818 } 1819 1820 return 0; 1821 1822 cleanup_sdb: 1823 for (i = 0; i < SG_MEMPOOL_NR; i++) { 1824 struct scsi_host_sg_pool *sgp = scsi_sg_pools + i; 1825 if (sgp->pool) 1826 mempool_destroy(sgp->pool); 1827 if (sgp->slab) 1828 kmem_cache_destroy(sgp->slab); 1829 } 1830 kmem_cache_destroy(scsi_sdb_cache); 1831 1832 return -ENOMEM; 1833 } 1834 1835 void scsi_exit_queue(void) 1836 { 1837 int i; 1838 1839 kmem_cache_destroy(scsi_sdb_cache); 1840 1841 for (i = 0; i < SG_MEMPOOL_NR; i++) { 1842 struct scsi_host_sg_pool *sgp = scsi_sg_pools + i; 1843 mempool_destroy(sgp->pool); 1844 kmem_cache_destroy(sgp->slab); 1845 } 1846 } 1847 1848 /** 1849 * scsi_mode_select - issue a mode select 1850 * @sdev: SCSI device to be queried 1851 * @pf: Page format bit (1 == standard, 0 == vendor specific) 1852 * @sp: Save page bit (0 == don't save, 1 == save) 1853 * @modepage: mode page being requested 1854 * @buffer: request buffer (may not be smaller than eight bytes) 1855 * @len: length of request buffer. 1856 * @timeout: command timeout 1857 * @retries: number of retries before failing 1858 * @data: returns a structure abstracting the mode header data 1859 * @sshdr: place to put sense data (or NULL if no sense to be collected). 1860 * must be SCSI_SENSE_BUFFERSIZE big. 1861 * 1862 * Returns zero if successful; negative error number or scsi 1863 * status on error 1864 * 1865 */ 1866 int 1867 scsi_mode_select(struct scsi_device *sdev, int pf, int sp, int modepage, 1868 unsigned char *buffer, int len, int timeout, int retries, 1869 struct scsi_mode_data *data, struct scsi_sense_hdr *sshdr) 1870 { 1871 unsigned char cmd[10]; 1872 unsigned char *real_buffer; 1873 int ret; 1874 1875 memset(cmd, 0, sizeof(cmd)); 1876 cmd[1] = (pf ? 0x10 : 0) | (sp ? 0x01 : 0); 1877 1878 if (sdev->use_10_for_ms) { 1879 if (len > 65535) 1880 return -EINVAL; 1881 real_buffer = kmalloc(8 + len, GFP_KERNEL); 1882 if (!real_buffer) 1883 return -ENOMEM; 1884 memcpy(real_buffer + 8, buffer, len); 1885 len += 8; 1886 real_buffer[0] = 0; 1887 real_buffer[1] = 0; 1888 real_buffer[2] = data->medium_type; 1889 real_buffer[3] = data->device_specific; 1890 real_buffer[4] = data->longlba ? 0x01 : 0; 1891 real_buffer[5] = 0; 1892 real_buffer[6] = data->block_descriptor_length >> 8; 1893 real_buffer[7] = data->block_descriptor_length; 1894 1895 cmd[0] = MODE_SELECT_10; 1896 cmd[7] = len >> 8; 1897 cmd[8] = len; 1898 } else { 1899 if (len > 255 || data->block_descriptor_length > 255 || 1900 data->longlba) 1901 return -EINVAL; 1902 1903 real_buffer = kmalloc(4 + len, GFP_KERNEL); 1904 if (!real_buffer) 1905 return -ENOMEM; 1906 memcpy(real_buffer + 4, buffer, len); 1907 len += 4; 1908 real_buffer[0] = 0; 1909 real_buffer[1] = data->medium_type; 1910 real_buffer[2] = data->device_specific; 1911 real_buffer[3] = data->block_descriptor_length; 1912 1913 1914 cmd[0] = MODE_SELECT; 1915 cmd[4] = len; 1916 } 1917 1918 ret = scsi_execute_req(sdev, cmd, DMA_TO_DEVICE, real_buffer, len, 1919 sshdr, timeout, retries, NULL); 1920 kfree(real_buffer); 1921 return ret; 1922 } 1923 EXPORT_SYMBOL_GPL(scsi_mode_select); 1924 1925 /** 1926 * scsi_mode_sense - issue a mode sense, falling back from 10 to six bytes if necessary. 1927 * @sdev: SCSI device to be queried 1928 * @dbd: set if mode sense will allow block descriptors to be returned 1929 * @modepage: mode page being requested 1930 * @buffer: request buffer (may not be smaller than eight bytes) 1931 * @len: length of request buffer. 1932 * @timeout: command timeout 1933 * @retries: number of retries before failing 1934 * @data: returns a structure abstracting the mode header data 1935 * @sshdr: place to put sense data (or NULL if no sense to be collected). 1936 * must be SCSI_SENSE_BUFFERSIZE big. 1937 * 1938 * Returns zero if unsuccessful, or the header offset (either 4 1939 * or 8 depending on whether a six or ten byte command was 1940 * issued) if successful. 1941 */ 1942 int 1943 scsi_mode_sense(struct scsi_device *sdev, int dbd, int modepage, 1944 unsigned char *buffer, int len, int timeout, int retries, 1945 struct scsi_mode_data *data, struct scsi_sense_hdr *sshdr) 1946 { 1947 unsigned char cmd[12]; 1948 int use_10_for_ms; 1949 int header_length; 1950 int result; 1951 struct scsi_sense_hdr my_sshdr; 1952 1953 memset(data, 0, sizeof(*data)); 1954 memset(&cmd[0], 0, 12); 1955 cmd[1] = dbd & 0x18; /* allows DBD and LLBA bits */ 1956 cmd[2] = modepage; 1957 1958 /* caller might not be interested in sense, but we need it */ 1959 if (!sshdr) 1960 sshdr = &my_sshdr; 1961 1962 retry: 1963 use_10_for_ms = sdev->use_10_for_ms; 1964 1965 if (use_10_for_ms) { 1966 if (len < 8) 1967 len = 8; 1968 1969 cmd[0] = MODE_SENSE_10; 1970 cmd[8] = len; 1971 header_length = 8; 1972 } else { 1973 if (len < 4) 1974 len = 4; 1975 1976 cmd[0] = MODE_SENSE; 1977 cmd[4] = len; 1978 header_length = 4; 1979 } 1980 1981 memset(buffer, 0, len); 1982 1983 result = scsi_execute_req(sdev, cmd, DMA_FROM_DEVICE, buffer, len, 1984 sshdr, timeout, retries, NULL); 1985 1986 /* This code looks awful: what it's doing is making sure an 1987 * ILLEGAL REQUEST sense return identifies the actual command 1988 * byte as the problem. MODE_SENSE commands can return 1989 * ILLEGAL REQUEST if the code page isn't supported */ 1990 1991 if (use_10_for_ms && !scsi_status_is_good(result) && 1992 (driver_byte(result) & DRIVER_SENSE)) { 1993 if (scsi_sense_valid(sshdr)) { 1994 if ((sshdr->sense_key == ILLEGAL_REQUEST) && 1995 (sshdr->asc == 0x20) && (sshdr->ascq == 0)) { 1996 /* 1997 * Invalid command operation code 1998 */ 1999 sdev->use_10_for_ms = 0; 2000 goto retry; 2001 } 2002 } 2003 } 2004 2005 if(scsi_status_is_good(result)) { 2006 if (unlikely(buffer[0] == 0x86 && buffer[1] == 0x0b && 2007 (modepage == 6 || modepage == 8))) { 2008 /* Initio breakage? */ 2009 header_length = 0; 2010 data->length = 13; 2011 data->medium_type = 0; 2012 data->device_specific = 0; 2013 data->longlba = 0; 2014 data->block_descriptor_length = 0; 2015 } else if(use_10_for_ms) { 2016 data->length = buffer[0]*256 + buffer[1] + 2; 2017 data->medium_type = buffer[2]; 2018 data->device_specific = buffer[3]; 2019 data->longlba = buffer[4] & 0x01; 2020 data->block_descriptor_length = buffer[6]*256 2021 + buffer[7]; 2022 } else { 2023 data->length = buffer[0] + 1; 2024 data->medium_type = buffer[1]; 2025 data->device_specific = buffer[2]; 2026 data->block_descriptor_length = buffer[3]; 2027 } 2028 data->header_length = header_length; 2029 } 2030 2031 return result; 2032 } 2033 EXPORT_SYMBOL(scsi_mode_sense); 2034 2035 /** 2036 * scsi_test_unit_ready - test if unit is ready 2037 * @sdev: scsi device to change the state of. 2038 * @timeout: command timeout 2039 * @retries: number of retries before failing 2040 * @sshdr_external: Optional pointer to struct scsi_sense_hdr for 2041 * returning sense. Make sure that this is cleared before passing 2042 * in. 2043 * 2044 * Returns zero if unsuccessful or an error if TUR failed. For 2045 * removable media, UNIT_ATTENTION sets ->changed flag. 2046 **/ 2047 int 2048 scsi_test_unit_ready(struct scsi_device *sdev, int timeout, int retries, 2049 struct scsi_sense_hdr *sshdr_external) 2050 { 2051 char cmd[] = { 2052 TEST_UNIT_READY, 0, 0, 0, 0, 0, 2053 }; 2054 struct scsi_sense_hdr *sshdr; 2055 int result; 2056 2057 if (!sshdr_external) 2058 sshdr = kzalloc(sizeof(*sshdr), GFP_KERNEL); 2059 else 2060 sshdr = sshdr_external; 2061 2062 /* try to eat the UNIT_ATTENTION if there are enough retries */ 2063 do { 2064 result = scsi_execute_req(sdev, cmd, DMA_NONE, NULL, 0, sshdr, 2065 timeout, retries, NULL); 2066 if (sdev->removable && scsi_sense_valid(sshdr) && 2067 sshdr->sense_key == UNIT_ATTENTION) 2068 sdev->changed = 1; 2069 } while (scsi_sense_valid(sshdr) && 2070 sshdr->sense_key == UNIT_ATTENTION && --retries); 2071 2072 if (!sshdr_external) 2073 kfree(sshdr); 2074 return result; 2075 } 2076 EXPORT_SYMBOL(scsi_test_unit_ready); 2077 2078 /** 2079 * scsi_device_set_state - Take the given device through the device state model. 2080 * @sdev: scsi device to change the state of. 2081 * @state: state to change to. 2082 * 2083 * Returns zero if unsuccessful or an error if the requested 2084 * transition is illegal. 2085 */ 2086 int 2087 scsi_device_set_state(struct scsi_device *sdev, enum scsi_device_state state) 2088 { 2089 enum scsi_device_state oldstate = sdev->sdev_state; 2090 2091 if (state == oldstate) 2092 return 0; 2093 2094 switch (state) { 2095 case SDEV_CREATED: 2096 switch (oldstate) { 2097 case SDEV_CREATED_BLOCK: 2098 break; 2099 default: 2100 goto illegal; 2101 } 2102 break; 2103 2104 case SDEV_RUNNING: 2105 switch (oldstate) { 2106 case SDEV_CREATED: 2107 case SDEV_OFFLINE: 2108 case SDEV_TRANSPORT_OFFLINE: 2109 case SDEV_QUIESCE: 2110 case SDEV_BLOCK: 2111 break; 2112 default: 2113 goto illegal; 2114 } 2115 break; 2116 2117 case SDEV_QUIESCE: 2118 switch (oldstate) { 2119 case SDEV_RUNNING: 2120 case SDEV_OFFLINE: 2121 case SDEV_TRANSPORT_OFFLINE: 2122 break; 2123 default: 2124 goto illegal; 2125 } 2126 break; 2127 2128 case SDEV_OFFLINE: 2129 case SDEV_TRANSPORT_OFFLINE: 2130 switch (oldstate) { 2131 case SDEV_CREATED: 2132 case SDEV_RUNNING: 2133 case SDEV_QUIESCE: 2134 case SDEV_BLOCK: 2135 break; 2136 default: 2137 goto illegal; 2138 } 2139 break; 2140 2141 case SDEV_BLOCK: 2142 switch (oldstate) { 2143 case SDEV_RUNNING: 2144 case SDEV_CREATED_BLOCK: 2145 break; 2146 default: 2147 goto illegal; 2148 } 2149 break; 2150 2151 case SDEV_CREATED_BLOCK: 2152 switch (oldstate) { 2153 case SDEV_CREATED: 2154 break; 2155 default: 2156 goto illegal; 2157 } 2158 break; 2159 2160 case SDEV_CANCEL: 2161 switch (oldstate) { 2162 case SDEV_CREATED: 2163 case SDEV_RUNNING: 2164 case SDEV_QUIESCE: 2165 case SDEV_OFFLINE: 2166 case SDEV_TRANSPORT_OFFLINE: 2167 case SDEV_BLOCK: 2168 break; 2169 default: 2170 goto illegal; 2171 } 2172 break; 2173 2174 case SDEV_DEL: 2175 switch (oldstate) { 2176 case SDEV_CREATED: 2177 case SDEV_RUNNING: 2178 case SDEV_OFFLINE: 2179 case SDEV_TRANSPORT_OFFLINE: 2180 case SDEV_CANCEL: 2181 break; 2182 default: 2183 goto illegal; 2184 } 2185 break; 2186 2187 } 2188 sdev->sdev_state = state; 2189 return 0; 2190 2191 illegal: 2192 SCSI_LOG_ERROR_RECOVERY(1, 2193 sdev_printk(KERN_ERR, sdev, 2194 "Illegal state transition %s->%s\n", 2195 scsi_device_state_name(oldstate), 2196 scsi_device_state_name(state)) 2197 ); 2198 return -EINVAL; 2199 } 2200 EXPORT_SYMBOL(scsi_device_set_state); 2201 2202 /** 2203 * sdev_evt_emit - emit a single SCSI device uevent 2204 * @sdev: associated SCSI device 2205 * @evt: event to emit 2206 * 2207 * Send a single uevent (scsi_event) to the associated scsi_device. 2208 */ 2209 static void scsi_evt_emit(struct scsi_device *sdev, struct scsi_event *evt) 2210 { 2211 int idx = 0; 2212 char *envp[3]; 2213 2214 switch (evt->evt_type) { 2215 case SDEV_EVT_MEDIA_CHANGE: 2216 envp[idx++] = "SDEV_MEDIA_CHANGE=1"; 2217 break; 2218 2219 default: 2220 /* do nothing */ 2221 break; 2222 } 2223 2224 envp[idx++] = NULL; 2225 2226 kobject_uevent_env(&sdev->sdev_gendev.kobj, KOBJ_CHANGE, envp); 2227 } 2228 2229 /** 2230 * sdev_evt_thread - send a uevent for each scsi event 2231 * @work: work struct for scsi_device 2232 * 2233 * Dispatch queued events to their associated scsi_device kobjects 2234 * as uevents. 2235 */ 2236 void scsi_evt_thread(struct work_struct *work) 2237 { 2238 struct scsi_device *sdev; 2239 LIST_HEAD(event_list); 2240 2241 sdev = container_of(work, struct scsi_device, event_work); 2242 2243 while (1) { 2244 struct scsi_event *evt; 2245 struct list_head *this, *tmp; 2246 unsigned long flags; 2247 2248 spin_lock_irqsave(&sdev->list_lock, flags); 2249 list_splice_init(&sdev->event_list, &event_list); 2250 spin_unlock_irqrestore(&sdev->list_lock, flags); 2251 2252 if (list_empty(&event_list)) 2253 break; 2254 2255 list_for_each_safe(this, tmp, &event_list) { 2256 evt = list_entry(this, struct scsi_event, node); 2257 list_del(&evt->node); 2258 scsi_evt_emit(sdev, evt); 2259 kfree(evt); 2260 } 2261 } 2262 } 2263 2264 /** 2265 * sdev_evt_send - send asserted event to uevent thread 2266 * @sdev: scsi_device event occurred on 2267 * @evt: event to send 2268 * 2269 * Assert scsi device event asynchronously. 2270 */ 2271 void sdev_evt_send(struct scsi_device *sdev, struct scsi_event *evt) 2272 { 2273 unsigned long flags; 2274 2275 #if 0 2276 /* FIXME: currently this check eliminates all media change events 2277 * for polled devices. Need to update to discriminate between AN 2278 * and polled events */ 2279 if (!test_bit(evt->evt_type, sdev->supported_events)) { 2280 kfree(evt); 2281 return; 2282 } 2283 #endif 2284 2285 spin_lock_irqsave(&sdev->list_lock, flags); 2286 list_add_tail(&evt->node, &sdev->event_list); 2287 schedule_work(&sdev->event_work); 2288 spin_unlock_irqrestore(&sdev->list_lock, flags); 2289 } 2290 EXPORT_SYMBOL_GPL(sdev_evt_send); 2291 2292 /** 2293 * sdev_evt_alloc - allocate a new scsi event 2294 * @evt_type: type of event to allocate 2295 * @gfpflags: GFP flags for allocation 2296 * 2297 * Allocates and returns a new scsi_event. 2298 */ 2299 struct scsi_event *sdev_evt_alloc(enum scsi_device_event evt_type, 2300 gfp_t gfpflags) 2301 { 2302 struct scsi_event *evt = kzalloc(sizeof(struct scsi_event), gfpflags); 2303 if (!evt) 2304 return NULL; 2305 2306 evt->evt_type = evt_type; 2307 INIT_LIST_HEAD(&evt->node); 2308 2309 /* evt_type-specific initialization, if any */ 2310 switch (evt_type) { 2311 case SDEV_EVT_MEDIA_CHANGE: 2312 default: 2313 /* do nothing */ 2314 break; 2315 } 2316 2317 return evt; 2318 } 2319 EXPORT_SYMBOL_GPL(sdev_evt_alloc); 2320 2321 /** 2322 * sdev_evt_send_simple - send asserted event to uevent thread 2323 * @sdev: scsi_device event occurred on 2324 * @evt_type: type of event to send 2325 * @gfpflags: GFP flags for allocation 2326 * 2327 * Assert scsi device event asynchronously, given an event type. 2328 */ 2329 void sdev_evt_send_simple(struct scsi_device *sdev, 2330 enum scsi_device_event evt_type, gfp_t gfpflags) 2331 { 2332 struct scsi_event *evt = sdev_evt_alloc(evt_type, gfpflags); 2333 if (!evt) { 2334 sdev_printk(KERN_ERR, sdev, "event %d eaten due to OOM\n", 2335 evt_type); 2336 return; 2337 } 2338 2339 sdev_evt_send(sdev, evt); 2340 } 2341 EXPORT_SYMBOL_GPL(sdev_evt_send_simple); 2342 2343 /** 2344 * scsi_device_quiesce - Block user issued commands. 2345 * @sdev: scsi device to quiesce. 2346 * 2347 * This works by trying to transition to the SDEV_QUIESCE state 2348 * (which must be a legal transition). When the device is in this 2349 * state, only special requests will be accepted, all others will 2350 * be deferred. Since special requests may also be requeued requests, 2351 * a successful return doesn't guarantee the device will be 2352 * totally quiescent. 2353 * 2354 * Must be called with user context, may sleep. 2355 * 2356 * Returns zero if unsuccessful or an error if not. 2357 */ 2358 int 2359 scsi_device_quiesce(struct scsi_device *sdev) 2360 { 2361 int err = scsi_device_set_state(sdev, SDEV_QUIESCE); 2362 if (err) 2363 return err; 2364 2365 scsi_run_queue(sdev->request_queue); 2366 while (sdev->device_busy) { 2367 msleep_interruptible(200); 2368 scsi_run_queue(sdev->request_queue); 2369 } 2370 return 0; 2371 } 2372 EXPORT_SYMBOL(scsi_device_quiesce); 2373 2374 /** 2375 * scsi_device_resume - Restart user issued commands to a quiesced device. 2376 * @sdev: scsi device to resume. 2377 * 2378 * Moves the device from quiesced back to running and restarts the 2379 * queues. 2380 * 2381 * Must be called with user context, may sleep. 2382 */ 2383 void scsi_device_resume(struct scsi_device *sdev) 2384 { 2385 /* check if the device state was mutated prior to resume, and if 2386 * so assume the state is being managed elsewhere (for example 2387 * device deleted during suspend) 2388 */ 2389 if (sdev->sdev_state != SDEV_QUIESCE || 2390 scsi_device_set_state(sdev, SDEV_RUNNING)) 2391 return; 2392 scsi_run_queue(sdev->request_queue); 2393 } 2394 EXPORT_SYMBOL(scsi_device_resume); 2395 2396 static void 2397 device_quiesce_fn(struct scsi_device *sdev, void *data) 2398 { 2399 scsi_device_quiesce(sdev); 2400 } 2401 2402 void 2403 scsi_target_quiesce(struct scsi_target *starget) 2404 { 2405 starget_for_each_device(starget, NULL, device_quiesce_fn); 2406 } 2407 EXPORT_SYMBOL(scsi_target_quiesce); 2408 2409 static void 2410 device_resume_fn(struct scsi_device *sdev, void *data) 2411 { 2412 scsi_device_resume(sdev); 2413 } 2414 2415 void 2416 scsi_target_resume(struct scsi_target *starget) 2417 { 2418 starget_for_each_device(starget, NULL, device_resume_fn); 2419 } 2420 EXPORT_SYMBOL(scsi_target_resume); 2421 2422 /** 2423 * scsi_internal_device_block - internal function to put a device temporarily into the SDEV_BLOCK state 2424 * @sdev: device to block 2425 * 2426 * Block request made by scsi lld's to temporarily stop all 2427 * scsi commands on the specified device. Called from interrupt 2428 * or normal process context. 2429 * 2430 * Returns zero if successful or error if not 2431 * 2432 * Notes: 2433 * This routine transitions the device to the SDEV_BLOCK state 2434 * (which must be a legal transition). When the device is in this 2435 * state, all commands are deferred until the scsi lld reenables 2436 * the device with scsi_device_unblock or device_block_tmo fires. 2437 */ 2438 int 2439 scsi_internal_device_block(struct scsi_device *sdev) 2440 { 2441 struct request_queue *q = sdev->request_queue; 2442 unsigned long flags; 2443 int err = 0; 2444 2445 err = scsi_device_set_state(sdev, SDEV_BLOCK); 2446 if (err) { 2447 err = scsi_device_set_state(sdev, SDEV_CREATED_BLOCK); 2448 2449 if (err) 2450 return err; 2451 } 2452 2453 /* 2454 * The device has transitioned to SDEV_BLOCK. Stop the 2455 * block layer from calling the midlayer with this device's 2456 * request queue. 2457 */ 2458 spin_lock_irqsave(q->queue_lock, flags); 2459 blk_stop_queue(q); 2460 spin_unlock_irqrestore(q->queue_lock, flags); 2461 2462 return 0; 2463 } 2464 EXPORT_SYMBOL_GPL(scsi_internal_device_block); 2465 2466 /** 2467 * scsi_internal_device_unblock - resume a device after a block request 2468 * @sdev: device to resume 2469 * @new_state: state to set devices to after unblocking 2470 * 2471 * Called by scsi lld's or the midlayer to restart the device queue 2472 * for the previously suspended scsi device. Called from interrupt or 2473 * normal process context. 2474 * 2475 * Returns zero if successful or error if not. 2476 * 2477 * Notes: 2478 * This routine transitions the device to the SDEV_RUNNING state 2479 * or to one of the offline states (which must be a legal transition) 2480 * allowing the midlayer to goose the queue for this device. 2481 */ 2482 int 2483 scsi_internal_device_unblock(struct scsi_device *sdev, 2484 enum scsi_device_state new_state) 2485 { 2486 struct request_queue *q = sdev->request_queue; 2487 unsigned long flags; 2488 2489 /* 2490 * Try to transition the scsi device to SDEV_RUNNING or one of the 2491 * offlined states and goose the device queue if successful. 2492 */ 2493 if ((sdev->sdev_state == SDEV_BLOCK) || 2494 (sdev->sdev_state == SDEV_TRANSPORT_OFFLINE)) 2495 sdev->sdev_state = new_state; 2496 else if (sdev->sdev_state == SDEV_CREATED_BLOCK) { 2497 if (new_state == SDEV_TRANSPORT_OFFLINE || 2498 new_state == SDEV_OFFLINE) 2499 sdev->sdev_state = new_state; 2500 else 2501 sdev->sdev_state = SDEV_CREATED; 2502 } else if (sdev->sdev_state != SDEV_CANCEL && 2503 sdev->sdev_state != SDEV_OFFLINE) 2504 return -EINVAL; 2505 2506 spin_lock_irqsave(q->queue_lock, flags); 2507 blk_start_queue(q); 2508 spin_unlock_irqrestore(q->queue_lock, flags); 2509 2510 return 0; 2511 } 2512 EXPORT_SYMBOL_GPL(scsi_internal_device_unblock); 2513 2514 static void 2515 device_block(struct scsi_device *sdev, void *data) 2516 { 2517 scsi_internal_device_block(sdev); 2518 } 2519 2520 static int 2521 target_block(struct device *dev, void *data) 2522 { 2523 if (scsi_is_target_device(dev)) 2524 starget_for_each_device(to_scsi_target(dev), NULL, 2525 device_block); 2526 return 0; 2527 } 2528 2529 void 2530 scsi_target_block(struct device *dev) 2531 { 2532 if (scsi_is_target_device(dev)) 2533 starget_for_each_device(to_scsi_target(dev), NULL, 2534 device_block); 2535 else 2536 device_for_each_child(dev, NULL, target_block); 2537 } 2538 EXPORT_SYMBOL_GPL(scsi_target_block); 2539 2540 static void 2541 device_unblock(struct scsi_device *sdev, void *data) 2542 { 2543 scsi_internal_device_unblock(sdev, *(enum scsi_device_state *)data); 2544 } 2545 2546 static int 2547 target_unblock(struct device *dev, void *data) 2548 { 2549 if (scsi_is_target_device(dev)) 2550 starget_for_each_device(to_scsi_target(dev), data, 2551 device_unblock); 2552 return 0; 2553 } 2554 2555 void 2556 scsi_target_unblock(struct device *dev, enum scsi_device_state new_state) 2557 { 2558 if (scsi_is_target_device(dev)) 2559 starget_for_each_device(to_scsi_target(dev), &new_state, 2560 device_unblock); 2561 else 2562 device_for_each_child(dev, &new_state, target_unblock); 2563 } 2564 EXPORT_SYMBOL_GPL(scsi_target_unblock); 2565 2566 /** 2567 * scsi_kmap_atomic_sg - find and atomically map an sg-elemnt 2568 * @sgl: scatter-gather list 2569 * @sg_count: number of segments in sg 2570 * @offset: offset in bytes into sg, on return offset into the mapped area 2571 * @len: bytes to map, on return number of bytes mapped 2572 * 2573 * Returns virtual address of the start of the mapped page 2574 */ 2575 void *scsi_kmap_atomic_sg(struct scatterlist *sgl, int sg_count, 2576 size_t *offset, size_t *len) 2577 { 2578 int i; 2579 size_t sg_len = 0, len_complete = 0; 2580 struct scatterlist *sg; 2581 struct page *page; 2582 2583 WARN_ON(!irqs_disabled()); 2584 2585 for_each_sg(sgl, sg, sg_count, i) { 2586 len_complete = sg_len; /* Complete sg-entries */ 2587 sg_len += sg->length; 2588 if (sg_len > *offset) 2589 break; 2590 } 2591 2592 if (unlikely(i == sg_count)) { 2593 printk(KERN_ERR "%s: Bytes in sg: %zu, requested offset %zu, " 2594 "elements %d\n", 2595 __func__, sg_len, *offset, sg_count); 2596 WARN_ON(1); 2597 return NULL; 2598 } 2599 2600 /* Offset starting from the beginning of first page in this sg-entry */ 2601 *offset = *offset - len_complete + sg->offset; 2602 2603 /* Assumption: contiguous pages can be accessed as "page + i" */ 2604 page = nth_page(sg_page(sg), (*offset >> PAGE_SHIFT)); 2605 *offset &= ~PAGE_MASK; 2606 2607 /* Bytes in this sg-entry from *offset to the end of the page */ 2608 sg_len = PAGE_SIZE - *offset; 2609 if (*len > sg_len) 2610 *len = sg_len; 2611 2612 return kmap_atomic(page); 2613 } 2614 EXPORT_SYMBOL(scsi_kmap_atomic_sg); 2615 2616 /** 2617 * scsi_kunmap_atomic_sg - atomically unmap a virtual address, previously mapped with scsi_kmap_atomic_sg 2618 * @virt: virtual address to be unmapped 2619 */ 2620 void scsi_kunmap_atomic_sg(void *virt) 2621 { 2622 kunmap_atomic(virt); 2623 } 2624 EXPORT_SYMBOL(scsi_kunmap_atomic_sg); 2625 2626 void sdev_disable_disk_events(struct scsi_device *sdev) 2627 { 2628 atomic_inc(&sdev->disk_events_disable_depth); 2629 } 2630 EXPORT_SYMBOL(sdev_disable_disk_events); 2631 2632 void sdev_enable_disk_events(struct scsi_device *sdev) 2633 { 2634 if (WARN_ON_ONCE(atomic_read(&sdev->disk_events_disable_depth) <= 0)) 2635 return; 2636 atomic_dec(&sdev->disk_events_disable_depth); 2637 } 2638 EXPORT_SYMBOL(sdev_enable_disk_events); 2639