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/blkdev.h> 12 #include <linux/completion.h> 13 #include <linux/kernel.h> 14 #include <linux/mempool.h> 15 #include <linux/slab.h> 16 #include <linux/init.h> 17 #include <linux/pci.h> 18 #include <linux/delay.h> 19 20 #include <scsi/scsi.h> 21 #include <scsi/scsi_dbg.h> 22 #include <scsi/scsi_device.h> 23 #include <scsi/scsi_driver.h> 24 #include <scsi/scsi_eh.h> 25 #include <scsi/scsi_host.h> 26 #include <scsi/scsi_request.h> 27 28 #include "scsi_priv.h" 29 #include "scsi_logging.h" 30 31 32 #define SG_MEMPOOL_NR (sizeof(scsi_sg_pools)/sizeof(struct scsi_host_sg_pool)) 33 #define SG_MEMPOOL_SIZE 32 34 35 struct scsi_host_sg_pool { 36 size_t size; 37 char *name; 38 kmem_cache_t *slab; 39 mempool_t *pool; 40 }; 41 42 #if (SCSI_MAX_PHYS_SEGMENTS < 32) 43 #error SCSI_MAX_PHYS_SEGMENTS is too small 44 #endif 45 46 #define SP(x) { x, "sgpool-" #x } 47 static struct scsi_host_sg_pool scsi_sg_pools[] = { 48 SP(8), 49 SP(16), 50 SP(32), 51 #if (SCSI_MAX_PHYS_SEGMENTS > 32) 52 SP(64), 53 #if (SCSI_MAX_PHYS_SEGMENTS > 64) 54 SP(128), 55 #if (SCSI_MAX_PHYS_SEGMENTS > 128) 56 SP(256), 57 #if (SCSI_MAX_PHYS_SEGMENTS > 256) 58 #error SCSI_MAX_PHYS_SEGMENTS is too large 59 #endif 60 #endif 61 #endif 62 #endif 63 }; 64 #undef SP 65 66 67 /* 68 * Function: scsi_insert_special_req() 69 * 70 * Purpose: Insert pre-formed request into request queue. 71 * 72 * Arguments: sreq - request that is ready to be queued. 73 * at_head - boolean. True if we should insert at head 74 * of queue, false if we should insert at tail. 75 * 76 * Lock status: Assumed that lock is not held upon entry. 77 * 78 * Returns: Nothing 79 * 80 * Notes: This function is called from character device and from 81 * ioctl types of functions where the caller knows exactly 82 * what SCSI command needs to be issued. The idea is that 83 * we merely inject the command into the queue (at the head 84 * for now), and then call the queue request function to actually 85 * process it. 86 */ 87 int scsi_insert_special_req(struct scsi_request *sreq, int at_head) 88 { 89 /* 90 * Because users of this function are apt to reuse requests with no 91 * modification, we have to sanitise the request flags here 92 */ 93 sreq->sr_request->flags &= ~REQ_DONTPREP; 94 blk_insert_request(sreq->sr_device->request_queue, sreq->sr_request, 95 at_head, sreq); 96 return 0; 97 } 98 99 static void scsi_run_queue(struct request_queue *q); 100 101 /* 102 * Function: scsi_queue_insert() 103 * 104 * Purpose: Insert a command in the midlevel queue. 105 * 106 * Arguments: cmd - command that we are adding to queue. 107 * reason - why we are inserting command to queue. 108 * 109 * Lock status: Assumed that lock is not held upon entry. 110 * 111 * Returns: Nothing. 112 * 113 * Notes: We do this for one of two cases. Either the host is busy 114 * and it cannot accept any more commands for the time being, 115 * or the device returned QUEUE_FULL and can accept no more 116 * commands. 117 * Notes: This could be called either from an interrupt context or a 118 * normal process context. 119 */ 120 int scsi_queue_insert(struct scsi_cmnd *cmd, int reason) 121 { 122 struct Scsi_Host *host = cmd->device->host; 123 struct scsi_device *device = cmd->device; 124 struct request_queue *q = device->request_queue; 125 unsigned long flags; 126 127 SCSI_LOG_MLQUEUE(1, 128 printk("Inserting command %p into mlqueue\n", cmd)); 129 130 /* 131 * Set the appropriate busy bit for the device/host. 132 * 133 * If the host/device isn't busy, assume that something actually 134 * completed, and that we should be able to queue a command now. 135 * 136 * Note that the prior mid-layer assumption that any host could 137 * always queue at least one command is now broken. The mid-layer 138 * will implement a user specifiable stall (see 139 * scsi_host.max_host_blocked and scsi_device.max_device_blocked) 140 * if a command is requeued with no other commands outstanding 141 * either for the device or for the host. 142 */ 143 if (reason == SCSI_MLQUEUE_HOST_BUSY) 144 host->host_blocked = host->max_host_blocked; 145 else if (reason == SCSI_MLQUEUE_DEVICE_BUSY) 146 device->device_blocked = device->max_device_blocked; 147 148 /* 149 * Decrement the counters, since these commands are no longer 150 * active on the host/device. 151 */ 152 scsi_device_unbusy(device); 153 154 /* 155 * Requeue this command. It will go before all other commands 156 * that are already in the queue. 157 * 158 * NOTE: there is magic here about the way the queue is plugged if 159 * we have no outstanding commands. 160 * 161 * Although we *don't* plug the queue, we call the request 162 * function. The SCSI request function detects the blocked condition 163 * and plugs the queue appropriately. 164 */ 165 spin_lock_irqsave(q->queue_lock, flags); 166 blk_requeue_request(q, cmd->request); 167 spin_unlock_irqrestore(q->queue_lock, flags); 168 169 scsi_run_queue(q); 170 171 return 0; 172 } 173 174 /* 175 * Function: scsi_do_req 176 * 177 * Purpose: Queue a SCSI request 178 * 179 * Arguments: sreq - command descriptor. 180 * cmnd - actual SCSI command to be performed. 181 * buffer - data buffer. 182 * bufflen - size of data buffer. 183 * done - completion function to be run. 184 * timeout - how long to let it run before timeout. 185 * retries - number of retries we allow. 186 * 187 * Lock status: No locks held upon entry. 188 * 189 * Returns: Nothing. 190 * 191 * Notes: This function is only used for queueing requests for things 192 * like ioctls and character device requests - this is because 193 * we essentially just inject a request into the queue for the 194 * device. 195 * 196 * In order to support the scsi_device_quiesce function, we 197 * now inject requests on the *head* of the device queue 198 * rather than the tail. 199 */ 200 void scsi_do_req(struct scsi_request *sreq, const void *cmnd, 201 void *buffer, unsigned bufflen, 202 void (*done)(struct scsi_cmnd *), 203 int timeout, int retries) 204 { 205 /* 206 * If the upper level driver is reusing these things, then 207 * we should release the low-level block now. Another one will 208 * be allocated later when this request is getting queued. 209 */ 210 __scsi_release_request(sreq); 211 212 /* 213 * Our own function scsi_done (which marks the host as not busy, 214 * disables the timeout counter, etc) will be called by us or by the 215 * scsi_hosts[host].queuecommand() function needs to also call 216 * the completion function for the high level driver. 217 */ 218 memcpy(sreq->sr_cmnd, cmnd, sizeof(sreq->sr_cmnd)); 219 sreq->sr_bufflen = bufflen; 220 sreq->sr_buffer = buffer; 221 sreq->sr_allowed = retries; 222 sreq->sr_done = done; 223 sreq->sr_timeout_per_command = timeout; 224 225 if (sreq->sr_cmd_len == 0) 226 sreq->sr_cmd_len = COMMAND_SIZE(sreq->sr_cmnd[0]); 227 228 /* 229 * head injection *required* here otherwise quiesce won't work 230 */ 231 scsi_insert_special_req(sreq, 1); 232 } 233 EXPORT_SYMBOL(scsi_do_req); 234 235 static void scsi_wait_done(struct scsi_cmnd *cmd) 236 { 237 struct request *req = cmd->request; 238 struct request_queue *q = cmd->device->request_queue; 239 unsigned long flags; 240 241 req->rq_status = RQ_SCSI_DONE; /* Busy, but indicate request done */ 242 243 spin_lock_irqsave(q->queue_lock, flags); 244 if (blk_rq_tagged(req)) 245 blk_queue_end_tag(q, req); 246 spin_unlock_irqrestore(q->queue_lock, flags); 247 248 if (req->waiting) 249 complete(req->waiting); 250 } 251 252 /* This is the end routine we get to if a command was never attached 253 * to the request. Simply complete the request without changing 254 * rq_status; this will cause a DRIVER_ERROR. */ 255 static void scsi_wait_req_end_io(struct request *req) 256 { 257 BUG_ON(!req->waiting); 258 259 complete(req->waiting); 260 } 261 262 void scsi_wait_req(struct scsi_request *sreq, const void *cmnd, void *buffer, 263 unsigned bufflen, int timeout, int retries) 264 { 265 DECLARE_COMPLETION(wait); 266 267 sreq->sr_request->waiting = &wait; 268 sreq->sr_request->rq_status = RQ_SCSI_BUSY; 269 sreq->sr_request->end_io = scsi_wait_req_end_io; 270 scsi_do_req(sreq, cmnd, buffer, bufflen, scsi_wait_done, 271 timeout, retries); 272 wait_for_completion(&wait); 273 sreq->sr_request->waiting = NULL; 274 if (sreq->sr_request->rq_status != RQ_SCSI_DONE) 275 sreq->sr_result |= (DRIVER_ERROR << 24); 276 277 __scsi_release_request(sreq); 278 } 279 EXPORT_SYMBOL(scsi_wait_req); 280 281 /* 282 * Function: scsi_init_cmd_errh() 283 * 284 * Purpose: Initialize cmd fields related to error handling. 285 * 286 * Arguments: cmd - command that is ready to be queued. 287 * 288 * Returns: Nothing 289 * 290 * Notes: This function has the job of initializing a number of 291 * fields related to error handling. Typically this will 292 * be called once for each command, as required. 293 */ 294 static int scsi_init_cmd_errh(struct scsi_cmnd *cmd) 295 { 296 cmd->serial_number = 0; 297 298 memset(cmd->sense_buffer, 0, sizeof cmd->sense_buffer); 299 300 if (cmd->cmd_len == 0) 301 cmd->cmd_len = COMMAND_SIZE(cmd->cmnd[0]); 302 303 /* 304 * We need saved copies of a number of fields - this is because 305 * error handling may need to overwrite these with different values 306 * to run different commands, and once error handling is complete, 307 * we will need to restore these values prior to running the actual 308 * command. 309 */ 310 cmd->old_use_sg = cmd->use_sg; 311 cmd->old_cmd_len = cmd->cmd_len; 312 cmd->sc_old_data_direction = cmd->sc_data_direction; 313 cmd->old_underflow = cmd->underflow; 314 memcpy(cmd->data_cmnd, cmd->cmnd, sizeof(cmd->cmnd)); 315 cmd->buffer = cmd->request_buffer; 316 cmd->bufflen = cmd->request_bufflen; 317 318 return 1; 319 } 320 321 /* 322 * Function: scsi_setup_cmd_retry() 323 * 324 * Purpose: Restore the command state for a retry 325 * 326 * Arguments: cmd - command to be restored 327 * 328 * Returns: Nothing 329 * 330 * Notes: Immediately prior to retrying a command, we need 331 * to restore certain fields that we saved above. 332 */ 333 void scsi_setup_cmd_retry(struct scsi_cmnd *cmd) 334 { 335 memcpy(cmd->cmnd, cmd->data_cmnd, sizeof(cmd->data_cmnd)); 336 cmd->request_buffer = cmd->buffer; 337 cmd->request_bufflen = cmd->bufflen; 338 cmd->use_sg = cmd->old_use_sg; 339 cmd->cmd_len = cmd->old_cmd_len; 340 cmd->sc_data_direction = cmd->sc_old_data_direction; 341 cmd->underflow = cmd->old_underflow; 342 } 343 344 void scsi_device_unbusy(struct scsi_device *sdev) 345 { 346 struct Scsi_Host *shost = sdev->host; 347 unsigned long flags; 348 349 spin_lock_irqsave(shost->host_lock, flags); 350 shost->host_busy--; 351 if (unlikely(test_bit(SHOST_RECOVERY, &shost->shost_state) && 352 shost->host_failed)) 353 scsi_eh_wakeup(shost); 354 spin_unlock(shost->host_lock); 355 spin_lock(sdev->request_queue->queue_lock); 356 sdev->device_busy--; 357 spin_unlock_irqrestore(sdev->request_queue->queue_lock, flags); 358 } 359 360 /* 361 * Called for single_lun devices on IO completion. Clear starget_sdev_user, 362 * and call blk_run_queue for all the scsi_devices on the target - 363 * including current_sdev first. 364 * 365 * Called with *no* scsi locks held. 366 */ 367 static void scsi_single_lun_run(struct scsi_device *current_sdev) 368 { 369 struct Scsi_Host *shost = current_sdev->host; 370 struct scsi_device *sdev, *tmp; 371 struct scsi_target *starget = scsi_target(current_sdev); 372 unsigned long flags; 373 374 spin_lock_irqsave(shost->host_lock, flags); 375 starget->starget_sdev_user = NULL; 376 spin_unlock_irqrestore(shost->host_lock, flags); 377 378 /* 379 * Call blk_run_queue for all LUNs on the target, starting with 380 * current_sdev. We race with others (to set starget_sdev_user), 381 * but in most cases, we will be first. Ideally, each LU on the 382 * target would get some limited time or requests on the target. 383 */ 384 blk_run_queue(current_sdev->request_queue); 385 386 spin_lock_irqsave(shost->host_lock, flags); 387 if (starget->starget_sdev_user) 388 goto out; 389 list_for_each_entry_safe(sdev, tmp, &starget->devices, 390 same_target_siblings) { 391 if (sdev == current_sdev) 392 continue; 393 if (scsi_device_get(sdev)) 394 continue; 395 396 spin_unlock_irqrestore(shost->host_lock, flags); 397 blk_run_queue(sdev->request_queue); 398 spin_lock_irqsave(shost->host_lock, flags); 399 400 scsi_device_put(sdev); 401 } 402 out: 403 spin_unlock_irqrestore(shost->host_lock, flags); 404 } 405 406 /* 407 * Function: scsi_run_queue() 408 * 409 * Purpose: Select a proper request queue to serve next 410 * 411 * Arguments: q - last request's queue 412 * 413 * Returns: Nothing 414 * 415 * Notes: The previous command was completely finished, start 416 * a new one if possible. 417 */ 418 static void scsi_run_queue(struct request_queue *q) 419 { 420 struct scsi_device *sdev = q->queuedata; 421 struct Scsi_Host *shost = sdev->host; 422 unsigned long flags; 423 424 if (sdev->single_lun) 425 scsi_single_lun_run(sdev); 426 427 spin_lock_irqsave(shost->host_lock, flags); 428 while (!list_empty(&shost->starved_list) && 429 !shost->host_blocked && !shost->host_self_blocked && 430 !((shost->can_queue > 0) && 431 (shost->host_busy >= shost->can_queue))) { 432 /* 433 * As long as shost is accepting commands and we have 434 * starved queues, call blk_run_queue. scsi_request_fn 435 * drops the queue_lock and can add us back to the 436 * starved_list. 437 * 438 * host_lock protects the starved_list and starved_entry. 439 * scsi_request_fn must get the host_lock before checking 440 * or modifying starved_list or starved_entry. 441 */ 442 sdev = list_entry(shost->starved_list.next, 443 struct scsi_device, starved_entry); 444 list_del_init(&sdev->starved_entry); 445 spin_unlock_irqrestore(shost->host_lock, flags); 446 447 blk_run_queue(sdev->request_queue); 448 449 spin_lock_irqsave(shost->host_lock, flags); 450 if (unlikely(!list_empty(&sdev->starved_entry))) 451 /* 452 * sdev lost a race, and was put back on the 453 * starved list. This is unlikely but without this 454 * in theory we could loop forever. 455 */ 456 break; 457 } 458 spin_unlock_irqrestore(shost->host_lock, flags); 459 460 blk_run_queue(q); 461 } 462 463 /* 464 * Function: scsi_requeue_command() 465 * 466 * Purpose: Handle post-processing of completed commands. 467 * 468 * Arguments: q - queue to operate on 469 * cmd - command that may need to be requeued. 470 * 471 * Returns: Nothing 472 * 473 * Notes: After command completion, there may be blocks left 474 * over which weren't finished by the previous command 475 * this can be for a number of reasons - the main one is 476 * I/O errors in the middle of the request, in which case 477 * we need to request the blocks that come after the bad 478 * sector. 479 */ 480 static void scsi_requeue_command(struct request_queue *q, struct scsi_cmnd *cmd) 481 { 482 unsigned long flags; 483 484 cmd->request->flags &= ~REQ_DONTPREP; 485 486 spin_lock_irqsave(q->queue_lock, flags); 487 blk_requeue_request(q, cmd->request); 488 spin_unlock_irqrestore(q->queue_lock, flags); 489 490 scsi_run_queue(q); 491 } 492 493 void scsi_next_command(struct scsi_cmnd *cmd) 494 { 495 struct request_queue *q = cmd->device->request_queue; 496 497 scsi_put_command(cmd); 498 scsi_run_queue(q); 499 } 500 501 void scsi_run_host_queues(struct Scsi_Host *shost) 502 { 503 struct scsi_device *sdev; 504 505 shost_for_each_device(sdev, shost) 506 scsi_run_queue(sdev->request_queue); 507 } 508 509 /* 510 * Function: scsi_end_request() 511 * 512 * Purpose: Post-processing of completed commands (usually invoked at end 513 * of upper level post-processing and scsi_io_completion). 514 * 515 * Arguments: cmd - command that is complete. 516 * uptodate - 1 if I/O indicates success, <= 0 for I/O error. 517 * bytes - number of bytes of completed I/O 518 * requeue - indicates whether we should requeue leftovers. 519 * 520 * Lock status: Assumed that lock is not held upon entry. 521 * 522 * Returns: cmd if requeue done or required, NULL otherwise 523 * 524 * Notes: This is called for block device requests in order to 525 * mark some number of sectors as complete. 526 * 527 * We are guaranteeing that the request queue will be goosed 528 * at some point during this call. 529 */ 530 static struct scsi_cmnd *scsi_end_request(struct scsi_cmnd *cmd, int uptodate, 531 int bytes, int requeue) 532 { 533 request_queue_t *q = cmd->device->request_queue; 534 struct request *req = cmd->request; 535 unsigned long flags; 536 537 /* 538 * If there are blocks left over at the end, set up the command 539 * to queue the remainder of them. 540 */ 541 if (end_that_request_chunk(req, uptodate, bytes)) { 542 int leftover = (req->hard_nr_sectors << 9); 543 544 if (blk_pc_request(req)) 545 leftover = req->data_len; 546 547 /* kill remainder if no retrys */ 548 if (!uptodate && blk_noretry_request(req)) 549 end_that_request_chunk(req, 0, leftover); 550 else { 551 if (requeue) 552 /* 553 * Bleah. Leftovers again. Stick the 554 * leftovers in the front of the 555 * queue, and goose the queue again. 556 */ 557 scsi_requeue_command(q, cmd); 558 559 return cmd; 560 } 561 } 562 563 add_disk_randomness(req->rq_disk); 564 565 spin_lock_irqsave(q->queue_lock, flags); 566 if (blk_rq_tagged(req)) 567 blk_queue_end_tag(q, req); 568 end_that_request_last(req); 569 spin_unlock_irqrestore(q->queue_lock, flags); 570 571 /* 572 * This will goose the queue request function at the end, so we don't 573 * need to worry about launching another command. 574 */ 575 scsi_next_command(cmd); 576 return NULL; 577 } 578 579 static struct scatterlist *scsi_alloc_sgtable(struct scsi_cmnd *cmd, int gfp_mask) 580 { 581 struct scsi_host_sg_pool *sgp; 582 struct scatterlist *sgl; 583 584 BUG_ON(!cmd->use_sg); 585 586 switch (cmd->use_sg) { 587 case 1 ... 8: 588 cmd->sglist_len = 0; 589 break; 590 case 9 ... 16: 591 cmd->sglist_len = 1; 592 break; 593 case 17 ... 32: 594 cmd->sglist_len = 2; 595 break; 596 #if (SCSI_MAX_PHYS_SEGMENTS > 32) 597 case 33 ... 64: 598 cmd->sglist_len = 3; 599 break; 600 #if (SCSI_MAX_PHYS_SEGMENTS > 64) 601 case 65 ... 128: 602 cmd->sglist_len = 4; 603 break; 604 #if (SCSI_MAX_PHYS_SEGMENTS > 128) 605 case 129 ... 256: 606 cmd->sglist_len = 5; 607 break; 608 #endif 609 #endif 610 #endif 611 default: 612 return NULL; 613 } 614 615 sgp = scsi_sg_pools + cmd->sglist_len; 616 sgl = mempool_alloc(sgp->pool, gfp_mask); 617 return sgl; 618 } 619 620 static void scsi_free_sgtable(struct scatterlist *sgl, int index) 621 { 622 struct scsi_host_sg_pool *sgp; 623 624 BUG_ON(index >= SG_MEMPOOL_NR); 625 626 sgp = scsi_sg_pools + index; 627 mempool_free(sgl, sgp->pool); 628 } 629 630 /* 631 * Function: scsi_release_buffers() 632 * 633 * Purpose: Completion processing for block device I/O requests. 634 * 635 * Arguments: cmd - command that we are bailing. 636 * 637 * Lock status: Assumed that no lock is held upon entry. 638 * 639 * Returns: Nothing 640 * 641 * Notes: In the event that an upper level driver rejects a 642 * command, we must release resources allocated during 643 * the __init_io() function. Primarily this would involve 644 * the scatter-gather table, and potentially any bounce 645 * buffers. 646 */ 647 static void scsi_release_buffers(struct scsi_cmnd *cmd) 648 { 649 struct request *req = cmd->request; 650 651 /* 652 * Free up any indirection buffers we allocated for DMA purposes. 653 */ 654 if (cmd->use_sg) 655 scsi_free_sgtable(cmd->request_buffer, cmd->sglist_len); 656 else if (cmd->request_buffer != req->buffer) 657 kfree(cmd->request_buffer); 658 659 /* 660 * Zero these out. They now point to freed memory, and it is 661 * dangerous to hang onto the pointers. 662 */ 663 cmd->buffer = NULL; 664 cmd->bufflen = 0; 665 cmd->request_buffer = NULL; 666 cmd->request_bufflen = 0; 667 } 668 669 /* 670 * Function: scsi_io_completion() 671 * 672 * Purpose: Completion processing for block device I/O requests. 673 * 674 * Arguments: cmd - command that is finished. 675 * 676 * Lock status: Assumed that no lock is held upon entry. 677 * 678 * Returns: Nothing 679 * 680 * Notes: This function is matched in terms of capabilities to 681 * the function that created the scatter-gather list. 682 * In other words, if there are no bounce buffers 683 * (the normal case for most drivers), we don't need 684 * the logic to deal with cleaning up afterwards. 685 * 686 * We must do one of several things here: 687 * 688 * a) Call scsi_end_request. This will finish off the 689 * specified number of sectors. If we are done, the 690 * command block will be released, and the queue 691 * function will be goosed. If we are not done, then 692 * scsi_end_request will directly goose the queue. 693 * 694 * b) We can just use scsi_requeue_command() here. This would 695 * be used if we just wanted to retry, for example. 696 */ 697 void scsi_io_completion(struct scsi_cmnd *cmd, unsigned int good_bytes, 698 unsigned int block_bytes) 699 { 700 int result = cmd->result; 701 int this_count = cmd->bufflen; 702 request_queue_t *q = cmd->device->request_queue; 703 struct request *req = cmd->request; 704 int clear_errors = 1; 705 struct scsi_sense_hdr sshdr; 706 int sense_valid = 0; 707 int sense_deferred = 0; 708 709 if (blk_complete_barrier_rq(q, req, good_bytes >> 9)) 710 return; 711 712 /* 713 * Free up any indirection buffers we allocated for DMA purposes. 714 * For the case of a READ, we need to copy the data out of the 715 * bounce buffer and into the real buffer. 716 */ 717 if (cmd->use_sg) 718 scsi_free_sgtable(cmd->buffer, cmd->sglist_len); 719 else if (cmd->buffer != req->buffer) { 720 if (rq_data_dir(req) == READ) { 721 unsigned long flags; 722 char *to = bio_kmap_irq(req->bio, &flags); 723 memcpy(to, cmd->buffer, cmd->bufflen); 724 bio_kunmap_irq(to, &flags); 725 } 726 kfree(cmd->buffer); 727 } 728 729 if (result) { 730 sense_valid = scsi_command_normalize_sense(cmd, &sshdr); 731 if (sense_valid) 732 sense_deferred = scsi_sense_is_deferred(&sshdr); 733 } 734 if (blk_pc_request(req)) { /* SG_IO ioctl from block level */ 735 req->errors = result; 736 if (result) { 737 clear_errors = 0; 738 if (sense_valid && req->sense) { 739 /* 740 * SG_IO wants current and deferred errors 741 */ 742 int len = 8 + cmd->sense_buffer[7]; 743 744 if (len > SCSI_SENSE_BUFFERSIZE) 745 len = SCSI_SENSE_BUFFERSIZE; 746 memcpy(req->sense, cmd->sense_buffer, len); 747 req->sense_len = len; 748 } 749 } else 750 req->data_len = cmd->resid; 751 } 752 753 /* 754 * Zero these out. They now point to freed memory, and it is 755 * dangerous to hang onto the pointers. 756 */ 757 cmd->buffer = NULL; 758 cmd->bufflen = 0; 759 cmd->request_buffer = NULL; 760 cmd->request_bufflen = 0; 761 762 /* 763 * Next deal with any sectors which we were able to correctly 764 * handle. 765 */ 766 if (good_bytes >= 0) { 767 SCSI_LOG_HLCOMPLETE(1, printk("%ld sectors total, %d bytes done.\n", 768 req->nr_sectors, good_bytes)); 769 SCSI_LOG_HLCOMPLETE(1, printk("use_sg is %d\n", cmd->use_sg)); 770 771 if (clear_errors) 772 req->errors = 0; 773 /* 774 * If multiple sectors are requested in one buffer, then 775 * they will have been finished off by the first command. 776 * If not, then we have a multi-buffer command. 777 * 778 * If block_bytes != 0, it means we had a medium error 779 * of some sort, and that we want to mark some number of 780 * sectors as not uptodate. Thus we want to inhibit 781 * requeueing right here - we will requeue down below 782 * when we handle the bad sectors. 783 */ 784 cmd = scsi_end_request(cmd, 1, good_bytes, result == 0); 785 786 /* 787 * If the command completed without error, then either finish off the 788 * rest of the command, or start a new one. 789 */ 790 if (result == 0 || cmd == NULL ) { 791 return; 792 } 793 } 794 /* 795 * Now, if we were good little boys and girls, Santa left us a request 796 * sense buffer. We can extract information from this, so we 797 * can choose a block to remap, etc. 798 */ 799 if (sense_valid && !sense_deferred) { 800 switch (sshdr.sense_key) { 801 case UNIT_ATTENTION: 802 if (cmd->device->removable) { 803 /* detected disc change. set a bit 804 * and quietly refuse further access. 805 */ 806 cmd->device->changed = 1; 807 cmd = scsi_end_request(cmd, 0, 808 this_count, 1); 809 return; 810 } else { 811 /* 812 * Must have been a power glitch, or a 813 * bus reset. Could not have been a 814 * media change, so we just retry the 815 * request and see what happens. 816 */ 817 scsi_requeue_command(q, cmd); 818 return; 819 } 820 break; 821 case ILLEGAL_REQUEST: 822 /* 823 * If we had an ILLEGAL REQUEST returned, then we may 824 * have performed an unsupported command. The only 825 * thing this should be would be a ten byte read where 826 * only a six byte read was supported. Also, on a 827 * system where READ CAPACITY failed, we may have read 828 * past the end of the disk. 829 */ 830 if (cmd->device->use_10_for_rw && 831 (cmd->cmnd[0] == READ_10 || 832 cmd->cmnd[0] == WRITE_10)) { 833 cmd->device->use_10_for_rw = 0; 834 /* 835 * This will cause a retry with a 6-byte 836 * command. 837 */ 838 scsi_requeue_command(q, cmd); 839 result = 0; 840 } else { 841 cmd = scsi_end_request(cmd, 0, this_count, 1); 842 return; 843 } 844 break; 845 case NOT_READY: 846 /* 847 * If the device is in the process of becoming ready, 848 * retry. 849 */ 850 if (sshdr.asc == 0x04 && sshdr.ascq == 0x01) { 851 scsi_requeue_command(q, cmd); 852 return; 853 } 854 printk(KERN_INFO "Device %s not ready.\n", 855 req->rq_disk ? req->rq_disk->disk_name : ""); 856 cmd = scsi_end_request(cmd, 0, this_count, 1); 857 return; 858 case VOLUME_OVERFLOW: 859 printk(KERN_INFO "Volume overflow <%d %d %d %d> CDB: ", 860 cmd->device->host->host_no, 861 (int)cmd->device->channel, 862 (int)cmd->device->id, (int)cmd->device->lun); 863 __scsi_print_command(cmd->data_cmnd); 864 scsi_print_sense("", cmd); 865 cmd = scsi_end_request(cmd, 0, block_bytes, 1); 866 return; 867 default: 868 break; 869 } 870 } /* driver byte != 0 */ 871 if (host_byte(result) == DID_RESET) { 872 /* 873 * Third party bus reset or reset for error 874 * recovery reasons. Just retry the request 875 * and see what happens. 876 */ 877 scsi_requeue_command(q, cmd); 878 return; 879 } 880 if (result) { 881 printk(KERN_INFO "SCSI error : <%d %d %d %d> return code " 882 "= 0x%x\n", cmd->device->host->host_no, 883 cmd->device->channel, 884 cmd->device->id, 885 cmd->device->lun, result); 886 887 if (driver_byte(result) & DRIVER_SENSE) 888 scsi_print_sense("", cmd); 889 /* 890 * Mark a single buffer as not uptodate. Queue the remainder. 891 * We sometimes get this cruft in the event that a medium error 892 * isn't properly reported. 893 */ 894 block_bytes = req->hard_cur_sectors << 9; 895 if (!block_bytes) 896 block_bytes = req->data_len; 897 cmd = scsi_end_request(cmd, 0, block_bytes, 1); 898 } 899 } 900 EXPORT_SYMBOL(scsi_io_completion); 901 902 /* 903 * Function: scsi_init_io() 904 * 905 * Purpose: SCSI I/O initialize function. 906 * 907 * Arguments: cmd - Command descriptor we wish to initialize 908 * 909 * Returns: 0 on success 910 * BLKPREP_DEFER if the failure is retryable 911 * BLKPREP_KILL if the failure is fatal 912 */ 913 static int scsi_init_io(struct scsi_cmnd *cmd) 914 { 915 struct request *req = cmd->request; 916 struct scatterlist *sgpnt; 917 int count; 918 919 /* 920 * if this is a rq->data based REQ_BLOCK_PC, setup for a non-sg xfer 921 */ 922 if ((req->flags & REQ_BLOCK_PC) && !req->bio) { 923 cmd->request_bufflen = req->data_len; 924 cmd->request_buffer = req->data; 925 req->buffer = req->data; 926 cmd->use_sg = 0; 927 return 0; 928 } 929 930 /* 931 * we used to not use scatter-gather for single segment request, 932 * but now we do (it makes highmem I/O easier to support without 933 * kmapping pages) 934 */ 935 cmd->use_sg = req->nr_phys_segments; 936 937 /* 938 * if sg table allocation fails, requeue request later. 939 */ 940 sgpnt = scsi_alloc_sgtable(cmd, GFP_ATOMIC); 941 if (unlikely(!sgpnt)) 942 return BLKPREP_DEFER; 943 944 cmd->request_buffer = (char *) sgpnt; 945 cmd->request_bufflen = req->nr_sectors << 9; 946 if (blk_pc_request(req)) 947 cmd->request_bufflen = req->data_len; 948 req->buffer = NULL; 949 950 /* 951 * Next, walk the list, and fill in the addresses and sizes of 952 * each segment. 953 */ 954 count = blk_rq_map_sg(req->q, req, cmd->request_buffer); 955 956 /* 957 * mapped well, send it off 958 */ 959 if (likely(count <= cmd->use_sg)) { 960 cmd->use_sg = count; 961 return 0; 962 } 963 964 printk(KERN_ERR "Incorrect number of segments after building list\n"); 965 printk(KERN_ERR "counted %d, received %d\n", count, cmd->use_sg); 966 printk(KERN_ERR "req nr_sec %lu, cur_nr_sec %u\n", req->nr_sectors, 967 req->current_nr_sectors); 968 969 /* release the command and kill it */ 970 scsi_release_buffers(cmd); 971 scsi_put_command(cmd); 972 return BLKPREP_KILL; 973 } 974 975 static int scsi_prepare_flush_fn(request_queue_t *q, struct request *rq) 976 { 977 struct scsi_device *sdev = q->queuedata; 978 struct scsi_driver *drv; 979 980 if (sdev->sdev_state == SDEV_RUNNING) { 981 drv = *(struct scsi_driver **) rq->rq_disk->private_data; 982 983 if (drv->prepare_flush) 984 return drv->prepare_flush(q, rq); 985 } 986 987 return 0; 988 } 989 990 static void scsi_end_flush_fn(request_queue_t *q, struct request *rq) 991 { 992 struct scsi_device *sdev = q->queuedata; 993 struct request *flush_rq = rq->end_io_data; 994 struct scsi_driver *drv; 995 996 if (flush_rq->errors) { 997 printk("scsi: barrier error, disabling flush support\n"); 998 blk_queue_ordered(q, QUEUE_ORDERED_NONE); 999 } 1000 1001 if (sdev->sdev_state == SDEV_RUNNING) { 1002 drv = *(struct scsi_driver **) rq->rq_disk->private_data; 1003 drv->end_flush(q, rq); 1004 } 1005 } 1006 1007 static int scsi_issue_flush_fn(request_queue_t *q, struct gendisk *disk, 1008 sector_t *error_sector) 1009 { 1010 struct scsi_device *sdev = q->queuedata; 1011 struct scsi_driver *drv; 1012 1013 if (sdev->sdev_state != SDEV_RUNNING) 1014 return -ENXIO; 1015 1016 drv = *(struct scsi_driver **) disk->private_data; 1017 if (drv->issue_flush) 1018 return drv->issue_flush(&sdev->sdev_gendev, error_sector); 1019 1020 return -EOPNOTSUPP; 1021 } 1022 1023 static int scsi_prep_fn(struct request_queue *q, struct request *req) 1024 { 1025 struct scsi_device *sdev = q->queuedata; 1026 struct scsi_cmnd *cmd; 1027 int specials_only = 0; 1028 1029 /* 1030 * Just check to see if the device is online. If it isn't, we 1031 * refuse to process any commands. The device must be brought 1032 * online before trying any recovery commands 1033 */ 1034 if (unlikely(!scsi_device_online(sdev))) { 1035 printk(KERN_ERR "scsi%d (%d:%d): rejecting I/O to offline device\n", 1036 sdev->host->host_no, sdev->id, sdev->lun); 1037 return BLKPREP_KILL; 1038 } 1039 if (unlikely(sdev->sdev_state != SDEV_RUNNING)) { 1040 /* OK, we're not in a running state don't prep 1041 * user commands */ 1042 if (sdev->sdev_state == SDEV_DEL) { 1043 /* Device is fully deleted, no commands 1044 * at all allowed down */ 1045 printk(KERN_ERR "scsi%d (%d:%d): rejecting I/O to dead device\n", 1046 sdev->host->host_no, sdev->id, sdev->lun); 1047 return BLKPREP_KILL; 1048 } 1049 /* OK, we only allow special commands (i.e. not 1050 * user initiated ones */ 1051 specials_only = sdev->sdev_state; 1052 } 1053 1054 /* 1055 * Find the actual device driver associated with this command. 1056 * The SPECIAL requests are things like character device or 1057 * ioctls, which did not originate from ll_rw_blk. Note that 1058 * the special field is also used to indicate the cmd for 1059 * the remainder of a partially fulfilled request that can 1060 * come up when there is a medium error. We have to treat 1061 * these two cases differently. We differentiate by looking 1062 * at request->cmd, as this tells us the real story. 1063 */ 1064 if (req->flags & REQ_SPECIAL) { 1065 struct scsi_request *sreq = req->special; 1066 1067 if (sreq->sr_magic == SCSI_REQ_MAGIC) { 1068 cmd = scsi_get_command(sreq->sr_device, GFP_ATOMIC); 1069 if (unlikely(!cmd)) 1070 goto defer; 1071 scsi_init_cmd_from_req(cmd, sreq); 1072 } else 1073 cmd = req->special; 1074 } else if (req->flags & (REQ_CMD | REQ_BLOCK_PC)) { 1075 1076 if(unlikely(specials_only)) { 1077 if(specials_only == SDEV_QUIESCE || 1078 specials_only == SDEV_BLOCK) 1079 return BLKPREP_DEFER; 1080 1081 printk(KERN_ERR "scsi%d (%d:%d): rejecting I/O to device being removed\n", 1082 sdev->host->host_no, sdev->id, sdev->lun); 1083 return BLKPREP_KILL; 1084 } 1085 1086 1087 /* 1088 * Now try and find a command block that we can use. 1089 */ 1090 if (!req->special) { 1091 cmd = scsi_get_command(sdev, GFP_ATOMIC); 1092 if (unlikely(!cmd)) 1093 goto defer; 1094 } else 1095 cmd = req->special; 1096 1097 /* pull a tag out of the request if we have one */ 1098 cmd->tag = req->tag; 1099 } else { 1100 blk_dump_rq_flags(req, "SCSI bad req"); 1101 return BLKPREP_KILL; 1102 } 1103 1104 /* note the overloading of req->special. When the tag 1105 * is active it always means cmd. If the tag goes 1106 * back for re-queueing, it may be reset */ 1107 req->special = cmd; 1108 cmd->request = req; 1109 1110 /* 1111 * FIXME: drop the lock here because the functions below 1112 * expect to be called without the queue lock held. Also, 1113 * previously, we dequeued the request before dropping the 1114 * lock. We hope REQ_STARTED prevents anything untoward from 1115 * happening now. 1116 */ 1117 if (req->flags & (REQ_CMD | REQ_BLOCK_PC)) { 1118 struct scsi_driver *drv; 1119 int ret; 1120 1121 /* 1122 * This will do a couple of things: 1123 * 1) Fill in the actual SCSI command. 1124 * 2) Fill in any other upper-level specific fields 1125 * (timeout). 1126 * 1127 * If this returns 0, it means that the request failed 1128 * (reading past end of disk, reading offline device, 1129 * etc). This won't actually talk to the device, but 1130 * some kinds of consistency checking may cause the 1131 * request to be rejected immediately. 1132 */ 1133 1134 /* 1135 * This sets up the scatter-gather table (allocating if 1136 * required). 1137 */ 1138 ret = scsi_init_io(cmd); 1139 if (ret) /* BLKPREP_KILL return also releases the command */ 1140 return ret; 1141 1142 /* 1143 * Initialize the actual SCSI command for this request. 1144 */ 1145 drv = *(struct scsi_driver **)req->rq_disk->private_data; 1146 if (unlikely(!drv->init_command(cmd))) { 1147 scsi_release_buffers(cmd); 1148 scsi_put_command(cmd); 1149 return BLKPREP_KILL; 1150 } 1151 } 1152 1153 /* 1154 * The request is now prepped, no need to come back here 1155 */ 1156 req->flags |= REQ_DONTPREP; 1157 return BLKPREP_OK; 1158 1159 defer: 1160 /* If we defer, the elv_next_request() returns NULL, but the 1161 * queue must be restarted, so we plug here if no returning 1162 * command will automatically do that. */ 1163 if (sdev->device_busy == 0) 1164 blk_plug_device(q); 1165 return BLKPREP_DEFER; 1166 } 1167 1168 /* 1169 * scsi_dev_queue_ready: if we can send requests to sdev, return 1 else 1170 * return 0. 1171 * 1172 * Called with the queue_lock held. 1173 */ 1174 static inline int scsi_dev_queue_ready(struct request_queue *q, 1175 struct scsi_device *sdev) 1176 { 1177 if (sdev->device_busy >= sdev->queue_depth) 1178 return 0; 1179 if (sdev->device_busy == 0 && sdev->device_blocked) { 1180 /* 1181 * unblock after device_blocked iterates to zero 1182 */ 1183 if (--sdev->device_blocked == 0) { 1184 SCSI_LOG_MLQUEUE(3, 1185 printk("scsi%d (%d:%d) unblocking device at" 1186 " zero depth\n", sdev->host->host_no, 1187 sdev->id, sdev->lun)); 1188 } else { 1189 blk_plug_device(q); 1190 return 0; 1191 } 1192 } 1193 if (sdev->device_blocked) 1194 return 0; 1195 1196 return 1; 1197 } 1198 1199 /* 1200 * scsi_host_queue_ready: if we can send requests to shost, return 1 else 1201 * return 0. We must end up running the queue again whenever 0 is 1202 * returned, else IO can hang. 1203 * 1204 * Called with host_lock held. 1205 */ 1206 static inline int scsi_host_queue_ready(struct request_queue *q, 1207 struct Scsi_Host *shost, 1208 struct scsi_device *sdev) 1209 { 1210 if (test_bit(SHOST_RECOVERY, &shost->shost_state)) 1211 return 0; 1212 if (shost->host_busy == 0 && shost->host_blocked) { 1213 /* 1214 * unblock after host_blocked iterates to zero 1215 */ 1216 if (--shost->host_blocked == 0) { 1217 SCSI_LOG_MLQUEUE(3, 1218 printk("scsi%d unblocking host at zero depth\n", 1219 shost->host_no)); 1220 } else { 1221 blk_plug_device(q); 1222 return 0; 1223 } 1224 } 1225 if ((shost->can_queue > 0 && shost->host_busy >= shost->can_queue) || 1226 shost->host_blocked || shost->host_self_blocked) { 1227 if (list_empty(&sdev->starved_entry)) 1228 list_add_tail(&sdev->starved_entry, &shost->starved_list); 1229 return 0; 1230 } 1231 1232 /* We're OK to process the command, so we can't be starved */ 1233 if (!list_empty(&sdev->starved_entry)) 1234 list_del_init(&sdev->starved_entry); 1235 1236 return 1; 1237 } 1238 1239 /* 1240 * Kill requests for a dead device 1241 */ 1242 static void scsi_kill_requests(request_queue_t *q) 1243 { 1244 struct request *req; 1245 1246 while ((req = elv_next_request(q)) != NULL) { 1247 blkdev_dequeue_request(req); 1248 req->flags |= REQ_QUIET; 1249 while (end_that_request_first(req, 0, req->nr_sectors)) 1250 ; 1251 end_that_request_last(req); 1252 } 1253 } 1254 1255 /* 1256 * Function: scsi_request_fn() 1257 * 1258 * Purpose: Main strategy routine for SCSI. 1259 * 1260 * Arguments: q - Pointer to actual queue. 1261 * 1262 * Returns: Nothing 1263 * 1264 * Lock status: IO request lock assumed to be held when called. 1265 */ 1266 static void scsi_request_fn(struct request_queue *q) 1267 { 1268 struct scsi_device *sdev = q->queuedata; 1269 struct Scsi_Host *shost; 1270 struct scsi_cmnd *cmd; 1271 struct request *req; 1272 1273 if (!sdev) { 1274 printk("scsi: killing requests for dead queue\n"); 1275 scsi_kill_requests(q); 1276 return; 1277 } 1278 1279 if(!get_device(&sdev->sdev_gendev)) 1280 /* We must be tearing the block queue down already */ 1281 return; 1282 1283 /* 1284 * To start with, we keep looping until the queue is empty, or until 1285 * the host is no longer able to accept any more requests. 1286 */ 1287 shost = sdev->host; 1288 while (!blk_queue_plugged(q)) { 1289 int rtn; 1290 /* 1291 * get next queueable request. We do this early to make sure 1292 * that the request is fully prepared even if we cannot 1293 * accept it. 1294 */ 1295 req = elv_next_request(q); 1296 if (!req || !scsi_dev_queue_ready(q, sdev)) 1297 break; 1298 1299 if (unlikely(!scsi_device_online(sdev))) { 1300 printk(KERN_ERR "scsi%d (%d:%d): rejecting I/O to offline device\n", 1301 sdev->host->host_no, sdev->id, sdev->lun); 1302 blkdev_dequeue_request(req); 1303 req->flags |= REQ_QUIET; 1304 while (end_that_request_first(req, 0, req->nr_sectors)) 1305 ; 1306 end_that_request_last(req); 1307 continue; 1308 } 1309 1310 1311 /* 1312 * Remove the request from the request list. 1313 */ 1314 if (!(blk_queue_tagged(q) && !blk_queue_start_tag(q, req))) 1315 blkdev_dequeue_request(req); 1316 sdev->device_busy++; 1317 1318 spin_unlock(q->queue_lock); 1319 spin_lock(shost->host_lock); 1320 1321 if (!scsi_host_queue_ready(q, shost, sdev)) 1322 goto not_ready; 1323 if (sdev->single_lun) { 1324 if (scsi_target(sdev)->starget_sdev_user && 1325 scsi_target(sdev)->starget_sdev_user != sdev) 1326 goto not_ready; 1327 scsi_target(sdev)->starget_sdev_user = sdev; 1328 } 1329 shost->host_busy++; 1330 1331 /* 1332 * XXX(hch): This is rather suboptimal, scsi_dispatch_cmd will 1333 * take the lock again. 1334 */ 1335 spin_unlock_irq(shost->host_lock); 1336 1337 cmd = req->special; 1338 if (unlikely(cmd == NULL)) { 1339 printk(KERN_CRIT "impossible request in %s.\n" 1340 "please mail a stack trace to " 1341 "linux-scsi@vger.kernel.org", 1342 __FUNCTION__); 1343 BUG(); 1344 } 1345 1346 /* 1347 * Finally, initialize any error handling parameters, and set up 1348 * the timers for timeouts. 1349 */ 1350 scsi_init_cmd_errh(cmd); 1351 1352 /* 1353 * Dispatch the command to the low-level driver. 1354 */ 1355 rtn = scsi_dispatch_cmd(cmd); 1356 spin_lock_irq(q->queue_lock); 1357 if(rtn) { 1358 /* we're refusing the command; because of 1359 * the way locks get dropped, we need to 1360 * check here if plugging is required */ 1361 if(sdev->device_busy == 0) 1362 blk_plug_device(q); 1363 1364 break; 1365 } 1366 } 1367 1368 goto out; 1369 1370 not_ready: 1371 spin_unlock_irq(shost->host_lock); 1372 1373 /* 1374 * lock q, handle tag, requeue req, and decrement device_busy. We 1375 * must return with queue_lock held. 1376 * 1377 * Decrementing device_busy without checking it is OK, as all such 1378 * cases (host limits or settings) should run the queue at some 1379 * later time. 1380 */ 1381 spin_lock_irq(q->queue_lock); 1382 blk_requeue_request(q, req); 1383 sdev->device_busy--; 1384 if(sdev->device_busy == 0) 1385 blk_plug_device(q); 1386 out: 1387 /* must be careful here...if we trigger the ->remove() function 1388 * we cannot be holding the q lock */ 1389 spin_unlock_irq(q->queue_lock); 1390 put_device(&sdev->sdev_gendev); 1391 spin_lock_irq(q->queue_lock); 1392 } 1393 1394 u64 scsi_calculate_bounce_limit(struct Scsi_Host *shost) 1395 { 1396 struct device *host_dev; 1397 u64 bounce_limit = 0xffffffff; 1398 1399 if (shost->unchecked_isa_dma) 1400 return BLK_BOUNCE_ISA; 1401 /* 1402 * Platforms with virtual-DMA translation 1403 * hardware have no practical limit. 1404 */ 1405 if (!PCI_DMA_BUS_IS_PHYS) 1406 return BLK_BOUNCE_ANY; 1407 1408 host_dev = scsi_get_device(shost); 1409 if (host_dev && host_dev->dma_mask) 1410 bounce_limit = *host_dev->dma_mask; 1411 1412 return bounce_limit; 1413 } 1414 EXPORT_SYMBOL(scsi_calculate_bounce_limit); 1415 1416 struct request_queue *scsi_alloc_queue(struct scsi_device *sdev) 1417 { 1418 struct Scsi_Host *shost = sdev->host; 1419 struct request_queue *q; 1420 1421 q = blk_init_queue(scsi_request_fn, NULL); 1422 if (!q) 1423 return NULL; 1424 1425 blk_queue_prep_rq(q, scsi_prep_fn); 1426 1427 blk_queue_max_hw_segments(q, shost->sg_tablesize); 1428 blk_queue_max_phys_segments(q, SCSI_MAX_PHYS_SEGMENTS); 1429 blk_queue_max_sectors(q, shost->max_sectors); 1430 blk_queue_bounce_limit(q, scsi_calculate_bounce_limit(shost)); 1431 blk_queue_segment_boundary(q, shost->dma_boundary); 1432 blk_queue_issue_flush_fn(q, scsi_issue_flush_fn); 1433 1434 /* 1435 * ordered tags are superior to flush ordering 1436 */ 1437 if (shost->ordered_tag) 1438 blk_queue_ordered(q, QUEUE_ORDERED_TAG); 1439 else if (shost->ordered_flush) { 1440 blk_queue_ordered(q, QUEUE_ORDERED_FLUSH); 1441 q->prepare_flush_fn = scsi_prepare_flush_fn; 1442 q->end_flush_fn = scsi_end_flush_fn; 1443 } 1444 1445 if (!shost->use_clustering) 1446 clear_bit(QUEUE_FLAG_CLUSTER, &q->queue_flags); 1447 return q; 1448 } 1449 1450 void scsi_free_queue(struct request_queue *q) 1451 { 1452 blk_cleanup_queue(q); 1453 } 1454 1455 /* 1456 * Function: scsi_block_requests() 1457 * 1458 * Purpose: Utility function used by low-level drivers to prevent further 1459 * commands from being queued to the device. 1460 * 1461 * Arguments: shost - Host in question 1462 * 1463 * Returns: Nothing 1464 * 1465 * Lock status: No locks are assumed held. 1466 * 1467 * Notes: There is no timer nor any other means by which the requests 1468 * get unblocked other than the low-level driver calling 1469 * scsi_unblock_requests(). 1470 */ 1471 void scsi_block_requests(struct Scsi_Host *shost) 1472 { 1473 shost->host_self_blocked = 1; 1474 } 1475 EXPORT_SYMBOL(scsi_block_requests); 1476 1477 /* 1478 * Function: scsi_unblock_requests() 1479 * 1480 * Purpose: Utility function used by low-level drivers to allow further 1481 * commands from being queued to the device. 1482 * 1483 * Arguments: shost - Host in question 1484 * 1485 * Returns: Nothing 1486 * 1487 * Lock status: No locks are assumed held. 1488 * 1489 * Notes: There is no timer nor any other means by which the requests 1490 * get unblocked other than the low-level driver calling 1491 * scsi_unblock_requests(). 1492 * 1493 * This is done as an API function so that changes to the 1494 * internals of the scsi mid-layer won't require wholesale 1495 * changes to drivers that use this feature. 1496 */ 1497 void scsi_unblock_requests(struct Scsi_Host *shost) 1498 { 1499 shost->host_self_blocked = 0; 1500 scsi_run_host_queues(shost); 1501 } 1502 EXPORT_SYMBOL(scsi_unblock_requests); 1503 1504 int __init scsi_init_queue(void) 1505 { 1506 int i; 1507 1508 for (i = 0; i < SG_MEMPOOL_NR; i++) { 1509 struct scsi_host_sg_pool *sgp = scsi_sg_pools + i; 1510 int size = sgp->size * sizeof(struct scatterlist); 1511 1512 sgp->slab = kmem_cache_create(sgp->name, size, 0, 1513 SLAB_HWCACHE_ALIGN, NULL, NULL); 1514 if (!sgp->slab) { 1515 printk(KERN_ERR "SCSI: can't init sg slab %s\n", 1516 sgp->name); 1517 } 1518 1519 sgp->pool = mempool_create(SG_MEMPOOL_SIZE, 1520 mempool_alloc_slab, mempool_free_slab, 1521 sgp->slab); 1522 if (!sgp->pool) { 1523 printk(KERN_ERR "SCSI: can't init sg mempool %s\n", 1524 sgp->name); 1525 } 1526 } 1527 1528 return 0; 1529 } 1530 1531 void scsi_exit_queue(void) 1532 { 1533 int i; 1534 1535 for (i = 0; i < SG_MEMPOOL_NR; i++) { 1536 struct scsi_host_sg_pool *sgp = scsi_sg_pools + i; 1537 mempool_destroy(sgp->pool); 1538 kmem_cache_destroy(sgp->slab); 1539 } 1540 } 1541 /** 1542 * __scsi_mode_sense - issue a mode sense, falling back from 10 to 1543 * six bytes if necessary. 1544 * @sreq: SCSI request to fill in with the MODE_SENSE 1545 * @dbd: set if mode sense will allow block descriptors to be returned 1546 * @modepage: mode page being requested 1547 * @buffer: request buffer (may not be smaller than eight bytes) 1548 * @len: length of request buffer. 1549 * @timeout: command timeout 1550 * @retries: number of retries before failing 1551 * @data: returns a structure abstracting the mode header data 1552 * 1553 * Returns zero if unsuccessful, or the header offset (either 4 1554 * or 8 depending on whether a six or ten byte command was 1555 * issued) if successful. 1556 **/ 1557 int 1558 __scsi_mode_sense(struct scsi_request *sreq, int dbd, int modepage, 1559 unsigned char *buffer, int len, int timeout, int retries, 1560 struct scsi_mode_data *data) { 1561 unsigned char cmd[12]; 1562 int use_10_for_ms; 1563 int header_length; 1564 1565 memset(data, 0, sizeof(*data)); 1566 memset(&cmd[0], 0, 12); 1567 cmd[1] = dbd & 0x18; /* allows DBD and LLBA bits */ 1568 cmd[2] = modepage; 1569 1570 retry: 1571 use_10_for_ms = sreq->sr_device->use_10_for_ms; 1572 1573 if (use_10_for_ms) { 1574 if (len < 8) 1575 len = 8; 1576 1577 cmd[0] = MODE_SENSE_10; 1578 cmd[8] = len; 1579 header_length = 8; 1580 } else { 1581 if (len < 4) 1582 len = 4; 1583 1584 cmd[0] = MODE_SENSE; 1585 cmd[4] = len; 1586 header_length = 4; 1587 } 1588 1589 sreq->sr_cmd_len = 0; 1590 memset(sreq->sr_sense_buffer, 0, sizeof(sreq->sr_sense_buffer)); 1591 sreq->sr_data_direction = DMA_FROM_DEVICE; 1592 1593 memset(buffer, 0, len); 1594 1595 scsi_wait_req(sreq, cmd, buffer, len, timeout, retries); 1596 1597 /* This code looks awful: what it's doing is making sure an 1598 * ILLEGAL REQUEST sense return identifies the actual command 1599 * byte as the problem. MODE_SENSE commands can return 1600 * ILLEGAL REQUEST if the code page isn't supported */ 1601 1602 if (use_10_for_ms && !scsi_status_is_good(sreq->sr_result) && 1603 (driver_byte(sreq->sr_result) & DRIVER_SENSE)) { 1604 struct scsi_sense_hdr sshdr; 1605 1606 if (scsi_request_normalize_sense(sreq, &sshdr)) { 1607 if ((sshdr.sense_key == ILLEGAL_REQUEST) && 1608 (sshdr.asc == 0x20) && (sshdr.ascq == 0)) { 1609 /* 1610 * Invalid command operation code 1611 */ 1612 sreq->sr_device->use_10_for_ms = 0; 1613 goto retry; 1614 } 1615 } 1616 } 1617 1618 if(scsi_status_is_good(sreq->sr_result)) { 1619 data->header_length = header_length; 1620 if(use_10_for_ms) { 1621 data->length = buffer[0]*256 + buffer[1] + 2; 1622 data->medium_type = buffer[2]; 1623 data->device_specific = buffer[3]; 1624 data->longlba = buffer[4] & 0x01; 1625 data->block_descriptor_length = buffer[6]*256 1626 + buffer[7]; 1627 } else { 1628 data->length = buffer[0] + 1; 1629 data->medium_type = buffer[1]; 1630 data->device_specific = buffer[2]; 1631 data->block_descriptor_length = buffer[3]; 1632 } 1633 } 1634 1635 return sreq->sr_result; 1636 } 1637 EXPORT_SYMBOL(__scsi_mode_sense); 1638 1639 /** 1640 * scsi_mode_sense - issue a mode sense, falling back from 10 to 1641 * six bytes if necessary. 1642 * @sdev: scsi device to send command to. 1643 * @dbd: set if mode sense will disable block descriptors in the return 1644 * @modepage: mode page being requested 1645 * @buffer: request buffer (may not be smaller than eight bytes) 1646 * @len: length of request buffer. 1647 * @timeout: command timeout 1648 * @retries: number of retries before failing 1649 * 1650 * Returns zero if unsuccessful, or the header offset (either 4 1651 * or 8 depending on whether a six or ten byte command was 1652 * issued) if successful. 1653 **/ 1654 int 1655 scsi_mode_sense(struct scsi_device *sdev, int dbd, int modepage, 1656 unsigned char *buffer, int len, int timeout, int retries, 1657 struct scsi_mode_data *data) 1658 { 1659 struct scsi_request *sreq = scsi_allocate_request(sdev, GFP_KERNEL); 1660 int ret; 1661 1662 if (!sreq) 1663 return -1; 1664 1665 ret = __scsi_mode_sense(sreq, dbd, modepage, buffer, len, 1666 timeout, retries, data); 1667 1668 scsi_release_request(sreq); 1669 1670 return ret; 1671 } 1672 EXPORT_SYMBOL(scsi_mode_sense); 1673 1674 int 1675 scsi_test_unit_ready(struct scsi_device *sdev, int timeout, int retries) 1676 { 1677 struct scsi_request *sreq; 1678 char cmd[] = { 1679 TEST_UNIT_READY, 0, 0, 0, 0, 0, 1680 }; 1681 int result; 1682 1683 sreq = scsi_allocate_request(sdev, GFP_KERNEL); 1684 if (!sreq) 1685 return -ENOMEM; 1686 1687 sreq->sr_data_direction = DMA_NONE; 1688 scsi_wait_req(sreq, cmd, NULL, 0, timeout, retries); 1689 1690 if ((driver_byte(sreq->sr_result) & DRIVER_SENSE) && sdev->removable) { 1691 struct scsi_sense_hdr sshdr; 1692 1693 if ((scsi_request_normalize_sense(sreq, &sshdr)) && 1694 ((sshdr.sense_key == UNIT_ATTENTION) || 1695 (sshdr.sense_key == NOT_READY))) { 1696 sdev->changed = 1; 1697 sreq->sr_result = 0; 1698 } 1699 } 1700 result = sreq->sr_result; 1701 scsi_release_request(sreq); 1702 return result; 1703 } 1704 EXPORT_SYMBOL(scsi_test_unit_ready); 1705 1706 /** 1707 * scsi_device_set_state - Take the given device through the device 1708 * state model. 1709 * @sdev: scsi device to change the state of. 1710 * @state: state to change to. 1711 * 1712 * Returns zero if unsuccessful or an error if the requested 1713 * transition is illegal. 1714 **/ 1715 int 1716 scsi_device_set_state(struct scsi_device *sdev, enum scsi_device_state state) 1717 { 1718 enum scsi_device_state oldstate = sdev->sdev_state; 1719 1720 if (state == oldstate) 1721 return 0; 1722 1723 switch (state) { 1724 case SDEV_CREATED: 1725 /* There are no legal states that come back to 1726 * created. This is the manually initialised start 1727 * state */ 1728 goto illegal; 1729 1730 case SDEV_RUNNING: 1731 switch (oldstate) { 1732 case SDEV_CREATED: 1733 case SDEV_OFFLINE: 1734 case SDEV_QUIESCE: 1735 case SDEV_BLOCK: 1736 break; 1737 default: 1738 goto illegal; 1739 } 1740 break; 1741 1742 case SDEV_QUIESCE: 1743 switch (oldstate) { 1744 case SDEV_RUNNING: 1745 case SDEV_OFFLINE: 1746 break; 1747 default: 1748 goto illegal; 1749 } 1750 break; 1751 1752 case SDEV_OFFLINE: 1753 switch (oldstate) { 1754 case SDEV_CREATED: 1755 case SDEV_RUNNING: 1756 case SDEV_QUIESCE: 1757 case SDEV_BLOCK: 1758 break; 1759 default: 1760 goto illegal; 1761 } 1762 break; 1763 1764 case SDEV_BLOCK: 1765 switch (oldstate) { 1766 case SDEV_CREATED: 1767 case SDEV_RUNNING: 1768 break; 1769 default: 1770 goto illegal; 1771 } 1772 break; 1773 1774 case SDEV_CANCEL: 1775 switch (oldstate) { 1776 case SDEV_CREATED: 1777 case SDEV_RUNNING: 1778 case SDEV_OFFLINE: 1779 case SDEV_BLOCK: 1780 break; 1781 default: 1782 goto illegal; 1783 } 1784 break; 1785 1786 case SDEV_DEL: 1787 switch (oldstate) { 1788 case SDEV_CANCEL: 1789 break; 1790 default: 1791 goto illegal; 1792 } 1793 break; 1794 1795 } 1796 sdev->sdev_state = state; 1797 return 0; 1798 1799 illegal: 1800 SCSI_LOG_ERROR_RECOVERY(1, 1801 dev_printk(KERN_ERR, &sdev->sdev_gendev, 1802 "Illegal state transition %s->%s\n", 1803 scsi_device_state_name(oldstate), 1804 scsi_device_state_name(state)) 1805 ); 1806 return -EINVAL; 1807 } 1808 EXPORT_SYMBOL(scsi_device_set_state); 1809 1810 /** 1811 * scsi_device_quiesce - Block user issued commands. 1812 * @sdev: scsi device to quiesce. 1813 * 1814 * This works by trying to transition to the SDEV_QUIESCE state 1815 * (which must be a legal transition). When the device is in this 1816 * state, only special requests will be accepted, all others will 1817 * be deferred. Since special requests may also be requeued requests, 1818 * a successful return doesn't guarantee the device will be 1819 * totally quiescent. 1820 * 1821 * Must be called with user context, may sleep. 1822 * 1823 * Returns zero if unsuccessful or an error if not. 1824 **/ 1825 int 1826 scsi_device_quiesce(struct scsi_device *sdev) 1827 { 1828 int err = scsi_device_set_state(sdev, SDEV_QUIESCE); 1829 if (err) 1830 return err; 1831 1832 scsi_run_queue(sdev->request_queue); 1833 while (sdev->device_busy) { 1834 msleep_interruptible(200); 1835 scsi_run_queue(sdev->request_queue); 1836 } 1837 return 0; 1838 } 1839 EXPORT_SYMBOL(scsi_device_quiesce); 1840 1841 /** 1842 * scsi_device_resume - Restart user issued commands to a quiesced device. 1843 * @sdev: scsi device to resume. 1844 * 1845 * Moves the device from quiesced back to running and restarts the 1846 * queues. 1847 * 1848 * Must be called with user context, may sleep. 1849 **/ 1850 void 1851 scsi_device_resume(struct scsi_device *sdev) 1852 { 1853 if(scsi_device_set_state(sdev, SDEV_RUNNING)) 1854 return; 1855 scsi_run_queue(sdev->request_queue); 1856 } 1857 EXPORT_SYMBOL(scsi_device_resume); 1858 1859 static void 1860 device_quiesce_fn(struct scsi_device *sdev, void *data) 1861 { 1862 scsi_device_quiesce(sdev); 1863 } 1864 1865 void 1866 scsi_target_quiesce(struct scsi_target *starget) 1867 { 1868 starget_for_each_device(starget, NULL, device_quiesce_fn); 1869 } 1870 EXPORT_SYMBOL(scsi_target_quiesce); 1871 1872 static void 1873 device_resume_fn(struct scsi_device *sdev, void *data) 1874 { 1875 scsi_device_resume(sdev); 1876 } 1877 1878 void 1879 scsi_target_resume(struct scsi_target *starget) 1880 { 1881 starget_for_each_device(starget, NULL, device_resume_fn); 1882 } 1883 EXPORT_SYMBOL(scsi_target_resume); 1884 1885 /** 1886 * scsi_internal_device_block - internal function to put a device 1887 * temporarily into the SDEV_BLOCK state 1888 * @sdev: device to block 1889 * 1890 * Block request made by scsi lld's to temporarily stop all 1891 * scsi commands on the specified device. Called from interrupt 1892 * or normal process context. 1893 * 1894 * Returns zero if successful or error if not 1895 * 1896 * Notes: 1897 * This routine transitions the device to the SDEV_BLOCK state 1898 * (which must be a legal transition). When the device is in this 1899 * state, all commands are deferred until the scsi lld reenables 1900 * the device with scsi_device_unblock or device_block_tmo fires. 1901 * This routine assumes the host_lock is held on entry. 1902 **/ 1903 int 1904 scsi_internal_device_block(struct scsi_device *sdev) 1905 { 1906 request_queue_t *q = sdev->request_queue; 1907 unsigned long flags; 1908 int err = 0; 1909 1910 err = scsi_device_set_state(sdev, SDEV_BLOCK); 1911 if (err) 1912 return err; 1913 1914 /* 1915 * The device has transitioned to SDEV_BLOCK. Stop the 1916 * block layer from calling the midlayer with this device's 1917 * request queue. 1918 */ 1919 spin_lock_irqsave(q->queue_lock, flags); 1920 blk_stop_queue(q); 1921 spin_unlock_irqrestore(q->queue_lock, flags); 1922 1923 return 0; 1924 } 1925 EXPORT_SYMBOL_GPL(scsi_internal_device_block); 1926 1927 /** 1928 * scsi_internal_device_unblock - resume a device after a block request 1929 * @sdev: device to resume 1930 * 1931 * Called by scsi lld's or the midlayer to restart the device queue 1932 * for the previously suspended scsi device. Called from interrupt or 1933 * normal process context. 1934 * 1935 * Returns zero if successful or error if not. 1936 * 1937 * Notes: 1938 * This routine transitions the device to the SDEV_RUNNING state 1939 * (which must be a legal transition) allowing the midlayer to 1940 * goose the queue for this device. This routine assumes the 1941 * host_lock is held upon entry. 1942 **/ 1943 int 1944 scsi_internal_device_unblock(struct scsi_device *sdev) 1945 { 1946 request_queue_t *q = sdev->request_queue; 1947 int err; 1948 unsigned long flags; 1949 1950 /* 1951 * Try to transition the scsi device to SDEV_RUNNING 1952 * and goose the device queue if successful. 1953 */ 1954 err = scsi_device_set_state(sdev, SDEV_RUNNING); 1955 if (err) 1956 return err; 1957 1958 spin_lock_irqsave(q->queue_lock, flags); 1959 blk_start_queue(q); 1960 spin_unlock_irqrestore(q->queue_lock, flags); 1961 1962 return 0; 1963 } 1964 EXPORT_SYMBOL_GPL(scsi_internal_device_unblock); 1965 1966 static void 1967 device_block(struct scsi_device *sdev, void *data) 1968 { 1969 scsi_internal_device_block(sdev); 1970 } 1971 1972 static int 1973 target_block(struct device *dev, void *data) 1974 { 1975 if (scsi_is_target_device(dev)) 1976 starget_for_each_device(to_scsi_target(dev), NULL, 1977 device_block); 1978 return 0; 1979 } 1980 1981 void 1982 scsi_target_block(struct device *dev) 1983 { 1984 if (scsi_is_target_device(dev)) 1985 starget_for_each_device(to_scsi_target(dev), NULL, 1986 device_block); 1987 else 1988 device_for_each_child(dev, NULL, target_block); 1989 } 1990 EXPORT_SYMBOL_GPL(scsi_target_block); 1991 1992 static void 1993 device_unblock(struct scsi_device *sdev, void *data) 1994 { 1995 scsi_internal_device_unblock(sdev); 1996 } 1997 1998 static int 1999 target_unblock(struct device *dev, void *data) 2000 { 2001 if (scsi_is_target_device(dev)) 2002 starget_for_each_device(to_scsi_target(dev), NULL, 2003 device_unblock); 2004 return 0; 2005 } 2006 2007 void 2008 scsi_target_unblock(struct device *dev) 2009 { 2010 if (scsi_is_target_device(dev)) 2011 starget_for_each_device(to_scsi_target(dev), NULL, 2012 device_unblock); 2013 else 2014 device_for_each_child(dev, NULL, target_unblock); 2015 } 2016 EXPORT_SYMBOL_GPL(scsi_target_unblock); 2017