aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/scsi/ps3rom.c
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@woody.linux-foundation.org>2007-10-15 11:19:33 -0400
committerLinus Torvalds <torvalds@woody.linux-foundation.org>2007-10-15 11:19:33 -0400
commitdf3d80f5a5c74168be42788364d13cf6c83c7b9c (patch)
tree892a964c2fd28d028f2fb7471e8543d3f4006a58 /drivers/scsi/ps3rom.c
parent3d06f7a5f74a813cee817c4b30b5e6f0398da0be (diff)
parentc8e91b0a8fc8493e3bf3efcb3c8f866e9453cf1c (diff)
Merge master.kernel.org:/pub/scm/linux/kernel/git/jejb/scsi-misc-2.6
* master.kernel.org:/pub/scm/linux/kernel/git/jejb/scsi-misc-2.6: (207 commits) [SCSI] gdth: fix CONFIG_ISA build failure [SCSI] esp_scsi: remove __dev{init,exit} [SCSI] gdth: !use_sg cleanup and use of scsi accessors [SCSI] gdth: Move members from SCp to gdth_cmndinfo, stage 2 [SCSI] gdth: Setup proper per-command private data [SCSI] gdth: Remove gdth_ctr_tab[] [SCSI] gdth: switch to modern scsi host registration [SCSI] gdth: gdth_interrupt() gdth_get_status() & gdth_wait() fixes [SCSI] gdth: clean up host private data [SCSI] gdth: Remove virt hosts [SCSI] gdth: Reorder scsi_host_template intitializers [SCSI] gdth: kill gdth_{read,write}[bwl] wrappers [SCSI] gdth: Remove 2.4.x support, in-kernel changelog [SCSI] gdth: split out pci probing [SCSI] gdth: split out eisa probing [SCSI] gdth: split out isa probing gdth: Make one abuse of scsi_cmnd less obvious [SCSI] NCR5380: Use scsi_eh API for REQUEST_SENSE invocation [SCSI] usb storage: use scsi_eh API in REQUEST_SENSE execution [SCSI] scsi_error: Refactoring scsi_error to facilitate in synchronous REQUEST_SENSE ...
Diffstat (limited to 'drivers/scsi/ps3rom.c')
-rw-r--r--drivers/scsi/ps3rom.c24
1 files changed, 12 insertions, 12 deletions
diff --git a/drivers/scsi/ps3rom.c b/drivers/scsi/ps3rom.c
index b50f1e14f2a5..0f43d1d046d9 100644
--- a/drivers/scsi/ps3rom.c
+++ b/drivers/scsi/ps3rom.c
@@ -100,16 +100,16 @@ static int fill_from_dev_buffer(struct scsi_cmnd *cmd, const void *buf)
100 struct scatterlist *sgpnt; 100 struct scatterlist *sgpnt;
101 unsigned int buflen; 101 unsigned int buflen;
102 102
103 buflen = cmd->request_bufflen; 103 buflen = scsi_bufflen(cmd);
104 if (!buflen) 104 if (!buflen)
105 return 0; 105 return 0;
106 106
107 if (!cmd->request_buffer) 107 if (!scsi_sglist(cmd))
108 return -1; 108 return -1;
109 109
110 sgpnt = cmd->request_buffer;
111 active = 1; 110 active = 1;
112 for (k = 0, req_len = 0, act_len = 0; k < cmd->use_sg; ++k, ++sgpnt) { 111 req_len = act_len = 0;
112 scsi_for_each_sg(cmd, sgpnt, scsi_sg_count(cmd), k) {
113 if (active) { 113 if (active) {
114 kaddr = kmap_atomic(sgpnt->page, KM_IRQ0); 114 kaddr = kmap_atomic(sgpnt->page, KM_IRQ0);
115 len = sgpnt->length; 115 len = sgpnt->length;
@@ -124,7 +124,7 @@ static int fill_from_dev_buffer(struct scsi_cmnd *cmd, const void *buf)
124 } 124 }
125 req_len += sgpnt->length; 125 req_len += sgpnt->length;
126 } 126 }
127 cmd->resid = req_len - act_len; 127 scsi_set_resid(cmd, req_len - act_len);
128 return 0; 128 return 0;
129} 129}
130 130
@@ -138,15 +138,15 @@ static int fetch_to_dev_buffer(struct scsi_cmnd *cmd, void *buf)
138 struct scatterlist *sgpnt; 138 struct scatterlist *sgpnt;
139 unsigned int buflen; 139 unsigned int buflen;
140 140
141 buflen = cmd->request_bufflen; 141 buflen = scsi_bufflen(cmd);
142 if (!buflen) 142 if (!buflen)
143 return 0; 143 return 0;
144 144
145 if (!cmd->request_buffer) 145 if (!scsi_sglist(cmd))
146 return -1; 146 return -1;
147 147
148 sgpnt = cmd->request_buffer; 148 req_len = fin = 0;
149 for (k = 0, req_len = 0, fin = 0; k < cmd->use_sg; ++k, ++sgpnt) { 149 scsi_for_each_sg(cmd, sgpnt, scsi_sg_count(cmd), k) {
150 kaddr = kmap_atomic(sgpnt->page, KM_IRQ0); 150 kaddr = kmap_atomic(sgpnt->page, KM_IRQ0);
151 len = sgpnt->length; 151 len = sgpnt->length;
152 if ((req_len + len) > buflen) { 152 if ((req_len + len) > buflen) {
@@ -177,12 +177,12 @@ static int ps3rom_atapi_request(struct ps3_storage_device *dev,
177 memcpy(&atapi_cmnd.pkt, cmd->cmnd, 12); 177 memcpy(&atapi_cmnd.pkt, cmd->cmnd, 12);
178 atapi_cmnd.pktlen = 12; 178 atapi_cmnd.pktlen = 12;
179 atapi_cmnd.block_size = 1; /* transfer size is block_size * blocks */ 179 atapi_cmnd.block_size = 1; /* transfer size is block_size * blocks */
180 atapi_cmnd.blocks = atapi_cmnd.arglen = cmd->request_bufflen; 180 atapi_cmnd.blocks = atapi_cmnd.arglen = scsi_bufflen(cmd);
181 atapi_cmnd.buffer = dev->bounce_lpar; 181 atapi_cmnd.buffer = dev->bounce_lpar;
182 182
183 switch (cmd->sc_data_direction) { 183 switch (cmd->sc_data_direction) {
184 case DMA_FROM_DEVICE: 184 case DMA_FROM_DEVICE:
185 if (cmd->request_bufflen >= CD_FRAMESIZE) 185 if (scsi_bufflen(cmd) >= CD_FRAMESIZE)
186 atapi_cmnd.proto = DMA_PROTO; 186 atapi_cmnd.proto = DMA_PROTO;
187 else 187 else
188 atapi_cmnd.proto = PIO_DATA_IN_PROTO; 188 atapi_cmnd.proto = PIO_DATA_IN_PROTO;
@@ -190,7 +190,7 @@ static int ps3rom_atapi_request(struct ps3_storage_device *dev,
190 break; 190 break;
191 191
192 case DMA_TO_DEVICE: 192 case DMA_TO_DEVICE:
193 if (cmd->request_bufflen >= CD_FRAMESIZE) 193 if (scsi_bufflen(cmd) >= CD_FRAMESIZE)
194 atapi_cmnd.proto = DMA_PROTO; 194 atapi_cmnd.proto = DMA_PROTO;
195 else 195 else
196 atapi_cmnd.proto = PIO_DATA_OUT_PROTO; 196 atapi_cmnd.proto = PIO_DATA_OUT_PROTO;