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