diff options
| author | Linus Torvalds <torvalds@linux-foundation.org> | 2008-05-02 16:52:35 -0400 |
|---|---|---|
| committer | Linus Torvalds <torvalds@linux-foundation.org> | 2008-05-02 16:52:35 -0400 |
| commit | d626e3bf728c47746f2129aa00c775d4e8c2a73b (patch) | |
| tree | 551a8c362c7b9833e7848bc6167cf322f75563a1 | |
| parent | b66e1f11ebc429569a3784aaf64123633d9e3ed1 (diff) | |
| parent | 7ad4a485002c141f156a014e89542e01e7f8e36a (diff) | |
Merge git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi-misc-2.6
* git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi-misc-2.6:
[SCSI] aic94xx: fix section mismatch
[SCSI] u14-34f: Fix 32bit only problem
[SCSI] dpt_i2o: sysfs code
[SCSI] dpt_i2o: 64 bit support
[SCSI] dpt_i2o: move from virt_to_bus/bus_to_virt to dma_alloc_coherent
[SCSI] dpt_i2o: use standard __init / __exit code
[SCSI] megaraid_sas: fix suspend/resume sections
[SCSI] aacraid: Add Power Management support
[SCSI] aacraid: Fix jbod operations scan issues
[SCSI] aacraid: Fix warning about macro side-effects
[SCSI] add support for variable length extended commands
[SCSI] Let scsi_cmnd->cmnd use request->cmd buffer
[SCSI] bsg: add large command support
[SCSI] aacraid: Fix down_interruptible() to check the return value correctly
[SCSI] megaraid_sas; Update the Version and Changelog
[SCSI] ibmvscsi: Handle non SCSI error status
[SCSI] bug fix for free list handling
[SCSI] ipr: Rename ipr's state scsi host attribute to prevent collisions
[SCSI] megaraid_mbox: fix Dell CERC firmware problem
43 files changed, 884 insertions, 291 deletions
diff --git a/Documentation/scsi/ChangeLog.megaraid_sas b/Documentation/scsi/ChangeLog.megaraid_sas index 91c81db0ba7..716fcc1cafb 100644 --- a/Documentation/scsi/ChangeLog.megaraid_sas +++ b/Documentation/scsi/ChangeLog.megaraid_sas | |||
| @@ -1,3 +1,25 @@ | |||
| 1 | 1 Release Date : Mon. March 10 11:02:31 PDT 2008 - | ||
| 2 | (emaild-id:megaraidlinux@lsi.com) | ||
| 3 | Sumant Patro | ||
| 4 | Bo Yang | ||
| 5 | |||
| 6 | 2 Current Version : 00.00.03.20-RC1 | ||
| 7 | 3 Older Version : 00.00.03.16 | ||
| 8 | |||
| 9 | 1. Rollback the sense info implementation | ||
| 10 | Sense buffer ptr data type in the ioctl path is reverted back | ||
| 11 | to u32 * as in previous versions of driver. | ||
| 12 | |||
| 13 | 2. Fixed the driver frame count. | ||
| 14 | When Driver sent wrong frame count to firmware. As this | ||
| 15 | particular command is sent to drive, FW is seeing continuous | ||
| 16 | chip resets and so the command will timeout. | ||
| 17 | |||
| 18 | 3. Add the new controller(1078DE) support to the driver | ||
| 19 | and Increase the max_wait to 60 from 10 in the controller | ||
| 20 | operational status. With this max_wait increase, driver will | ||
| 21 | make sure the FW will finish the pending cmd for KDUMP case. | ||
| 22 | |||
| 1 | 1 Release Date : Thur. Nov. 07 16:30:43 PST 2007 - | 23 | 1 Release Date : Thur. Nov. 07 16:30:43 PST 2007 - |
| 2 | (emaild-id:megaraidlinux@lsi.com) | 24 | (emaild-id:megaraidlinux@lsi.com) |
| 3 | Sumant Patro | 25 | Sumant Patro |
diff --git a/block/bsg.c b/block/bsg.c index fa796b605f5..f0b7cd34321 100644 --- a/block/bsg.c +++ b/block/bsg.c | |||
| @@ -174,7 +174,11 @@ unlock: | |||
| 174 | static int blk_fill_sgv4_hdr_rq(struct request_queue *q, struct request *rq, | 174 | static int blk_fill_sgv4_hdr_rq(struct request_queue *q, struct request *rq, |
| 175 | struct sg_io_v4 *hdr, int has_write_perm) | 175 | struct sg_io_v4 *hdr, int has_write_perm) |
| 176 | { | 176 | { |
| 177 | memset(rq->cmd, 0, BLK_MAX_CDB); /* ATAPI hates garbage after CDB */ | 177 | if (hdr->request_len > BLK_MAX_CDB) { |
| 178 | rq->cmd = kzalloc(hdr->request_len, GFP_KERNEL); | ||
| 179 | if (!rq->cmd) | ||
| 180 | return -ENOMEM; | ||
| 181 | } | ||
| 178 | 182 | ||
| 179 | if (copy_from_user(rq->cmd, (void *)(unsigned long)hdr->request, | 183 | if (copy_from_user(rq->cmd, (void *)(unsigned long)hdr->request, |
| 180 | hdr->request_len)) | 184 | hdr->request_len)) |
| @@ -211,8 +215,6 @@ bsg_validate_sgv4_hdr(struct request_queue *q, struct sg_io_v4 *hdr, int *rw) | |||
| 211 | 215 | ||
| 212 | if (hdr->guard != 'Q') | 216 | if (hdr->guard != 'Q') |
| 213 | return -EINVAL; | 217 | return -EINVAL; |
| 214 | if (hdr->request_len > BLK_MAX_CDB) | ||
| 215 | return -EINVAL; | ||
| 216 | if (hdr->dout_xfer_len > (q->max_sectors << 9) || | 218 | if (hdr->dout_xfer_len > (q->max_sectors << 9) || |
| 217 | hdr->din_xfer_len > (q->max_sectors << 9)) | 219 | hdr->din_xfer_len > (q->max_sectors << 9)) |
| 218 | return -EIO; | 220 | return -EIO; |
| @@ -302,6 +304,8 @@ bsg_map_hdr(struct bsg_device *bd, struct sg_io_v4 *hdr) | |||
| 302 | } | 304 | } |
| 303 | return rq; | 305 | return rq; |
| 304 | out: | 306 | out: |
| 307 | if (rq->cmd != rq->__cmd) | ||
| 308 | kfree(rq->cmd); | ||
| 305 | blk_put_request(rq); | 309 | blk_put_request(rq); |
| 306 | if (next_rq) { | 310 | if (next_rq) { |
| 307 | blk_rq_unmap_user(next_rq->bio); | 311 | blk_rq_unmap_user(next_rq->bio); |
| @@ -455,6 +459,8 @@ static int blk_complete_sgv4_hdr_rq(struct request *rq, struct sg_io_v4 *hdr, | |||
| 455 | ret = rq->errors; | 459 | ret = rq->errors; |
| 456 | 460 | ||
| 457 | blk_rq_unmap_user(bio); | 461 | blk_rq_unmap_user(bio); |
| 462 | if (rq->cmd != rq->__cmd) | ||
| 463 | kfree(rq->cmd); | ||
| 458 | blk_put_request(rq); | 464 | blk_put_request(rq); |
| 459 | 465 | ||
| 460 | return ret; | 466 | return ret; |
diff --git a/block/scsi_ioctl.c b/block/scsi_ioctl.c index ffa3720e6ca..78199c08ec9 100644 --- a/block/scsi_ioctl.c +++ b/block/scsi_ioctl.c | |||
| @@ -33,13 +33,12 @@ | |||
| 33 | #include <scsi/scsi_cmnd.h> | 33 | #include <scsi/scsi_cmnd.h> |
| 34 | 34 | ||
| 35 | /* Command group 3 is reserved and should never be used. */ | 35 | /* Command group 3 is reserved and should never be used. */ |
| 36 | const unsigned char scsi_command_size[8] = | 36 | const unsigned char scsi_command_size_tbl[8] = |
| 37 | { | 37 | { |
| 38 | 6, 10, 10, 12, | 38 | 6, 10, 10, 12, |
| 39 | 16, 12, 10, 10 | 39 | 16, 12, 10, 10 |
| 40 | }; | 40 | }; |
| 41 | 41 | EXPORT_SYMBOL(scsi_command_size_tbl); | |
| 42 | EXPORT_SYMBOL(scsi_command_size); | ||
| 43 | 42 | ||
| 44 | #include <scsi/sg.h> | 43 | #include <scsi/sg.h> |
| 45 | 44 | ||
diff --git a/drivers/firewire/fw-sbp2.c b/drivers/firewire/fw-sbp2.c index 62e3c919098..b2458bb8e9c 100644 --- a/drivers/firewire/fw-sbp2.c +++ b/drivers/firewire/fw-sbp2.c | |||
| @@ -1487,7 +1487,7 @@ static int sbp2_scsi_queuecommand(struct scsi_cmnd *cmd, scsi_done_fn_t done) | |||
| 1487 | if (scsi_sg_count(cmd) && sbp2_map_scatterlist(orb, device, lu) < 0) | 1487 | if (scsi_sg_count(cmd) && sbp2_map_scatterlist(orb, device, lu) < 0) |
| 1488 | goto out; | 1488 | goto out; |
| 1489 | 1489 | ||
| 1490 | memcpy(orb->request.command_block, cmd->cmnd, COMMAND_SIZE(*cmd->cmnd)); | 1490 | memcpy(orb->request.command_block, cmd->cmnd, cmd->cmd_len); |
| 1491 | 1491 | ||
| 1492 | orb->base.callback = complete_command_orb; | 1492 | orb->base.callback = complete_command_orb; |
| 1493 | orb->base.request_bus = | 1493 | orb->base.request_bus = |
diff --git a/drivers/s390/scsi/zfcp_dbf.c b/drivers/s390/scsi/zfcp_dbf.c index 37b85c67b11..c8bad675dbd 100644 --- a/drivers/s390/scsi/zfcp_dbf.c +++ b/drivers/s390/scsi/zfcp_dbf.c | |||
| @@ -1055,7 +1055,7 @@ static void zfcp_scsi_dbf_event(const char *tag, const char *tag2, int level, | |||
| 1055 | rec->scsi_result = scsi_cmnd->result; | 1055 | rec->scsi_result = scsi_cmnd->result; |
| 1056 | rec->scsi_cmnd = (unsigned long)scsi_cmnd; | 1056 | rec->scsi_cmnd = (unsigned long)scsi_cmnd; |
| 1057 | rec->scsi_serial = scsi_cmnd->serial_number; | 1057 | rec->scsi_serial = scsi_cmnd->serial_number; |
| 1058 | memcpy(rec->scsi_opcode, &scsi_cmnd->cmnd, | 1058 | memcpy(rec->scsi_opcode, scsi_cmnd->cmnd, |
| 1059 | min((int)scsi_cmnd->cmd_len, | 1059 | min((int)scsi_cmnd->cmd_len, |
| 1060 | ZFCP_DBF_SCSI_OPCODE)); | 1060 | ZFCP_DBF_SCSI_OPCODE)); |
| 1061 | rec->scsi_retries = scsi_cmnd->retries; | 1061 | rec->scsi_retries = scsi_cmnd->retries; |
diff --git a/drivers/s390/scsi/zfcp_fsf.c b/drivers/s390/scsi/zfcp_fsf.c index 9af2330f07a..b2ea4ea051f 100644 --- a/drivers/s390/scsi/zfcp_fsf.c +++ b/drivers/s390/scsi/zfcp_fsf.c | |||
| @@ -4014,7 +4014,7 @@ zfcp_fsf_send_fcp_command_task_handler(struct zfcp_fsf_req *fsf_req) | |||
| 4014 | ZFCP_LOG_TRACE("scpnt->result =0x%x, command was:\n", | 4014 | ZFCP_LOG_TRACE("scpnt->result =0x%x, command was:\n", |
| 4015 | scpnt->result); | 4015 | scpnt->result); |
