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