aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/s390/scsi
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2013-09-03 18:48:06 -0400
committerLinus Torvalds <torvalds@linux-foundation.org>2013-09-03 18:48:06 -0400
commitf66c83d059d1ed90968caa81d401f160912b063a (patch)
tree8558803eadc5c29038de16d88b02b4f6176850ac /drivers/s390/scsi
parentd472d9d98b463dd7a04f2bcdeafe4261686ce6ab (diff)
parent1f962ebcdfa15cede59e9edb299d1330949eec92 (diff)
Merge tag 'scsi-misc' of git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi
Pull first round of SCSI updates from James Bottomley: "This patch set is a set of driver updates (ufs, zfcp, lpfc, mpt2/3sas, qla4xxx, qla2xxx [adding support for ISP8044 + other things]). We also have a new driver: esas2r which has a number of static checker problems, but which I expect to resolve over the -rc course of 3.12 under the new driver exception. We also have the error return that were discussed at LSF" * tag 'scsi-misc' of git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi: (118 commits) [SCSI] sg: push file descriptor list locking down to per-device locking [SCSI] sg: checking sdp->detached isn't protected when open [SCSI] sg: no need sg_open_exclusive_lock [SCSI] sg: use rwsem to solve race during exclusive open [SCSI] scsi_debug: fix logical block provisioning support when unmap_alignment != 0 [SCSI] scsi_debug: fix endianness bug in sdebug_build_parts() [SCSI] qla2xxx: Update the driver version to 8.06.00.08-k. [SCSI] qla2xxx: print MAC via %pMR. [SCSI] qla2xxx: Correction to message ids. [SCSI] qla2xxx: Correctly print out/in mailbox registers. [SCSI] qla2xxx: Add a new interface to update versions. [SCSI] qla2xxx: Move queue depth ramp down message to i/o debug level. [SCSI] qla2xxx: Select link initialization option bits from current operating mode. [SCSI] qla2xxx: Add loopback IDC-TIME-EXTEND aen handling support. [SCSI] qla2xxx: Set default critical temperature value in cases when ISPFX00 firmware doesn't provide it [SCSI] qla2xxx: QLAFX00 make over temperature AEN handling informational, add log for normal temperature AEN [SCSI] qla2xxx: Correct Interrupt Register offset for ISPFX00 [SCSI] qla2xxx: Remove handling of Shutdown Requested AEN from qlafx00_process_aen(). [SCSI] qla2xxx: Send all AENs for ISPFx00 to above layers. [SCSI] qla2xxx: Add changes in initialization for ISPFX00 cards with BIOS ...
Diffstat (limited to 'drivers/s390/scsi')
-rw-r--r--drivers/s390/scsi/zfcp_aux.c4
-rw-r--r--drivers/s390/scsi/zfcp_ext.h2
-rw-r--r--drivers/s390/scsi/zfcp_fsf.c12
-rw-r--r--drivers/s390/scsi/zfcp_qdio.c4
-rw-r--r--drivers/s390/scsi/zfcp_sysfs.c12
5 files changed, 12 insertions, 22 deletions
diff --git a/drivers/s390/scsi/zfcp_aux.c b/drivers/s390/scsi/zfcp_aux.c
index 1b9e4aee914b..8004b071a9f2 100644
--- a/drivers/s390/scsi/zfcp_aux.c
+++ b/drivers/s390/scsi/zfcp_aux.c
@@ -104,11 +104,11 @@ static void __init zfcp_init_device_setup(char *devstr)
104 strncpy(busid, token, ZFCP_BUS_ID_SIZE); 104 strncpy(busid, token, ZFCP_BUS_ID_SIZE);
105 105
106 token = strsep(&str, ","); 106 token = strsep(&str, ",");
107 if (!token || strict_strtoull(token, 0, (unsigned long long *) &wwpn)) 107 if (!token || kstrtoull(token, 0, (unsigned long long *) &wwpn))
108 goto err_out; 108 goto err_out;
109 109
110 token = strsep(&str, ","); 110 token = strsep(&str, ",");
111 if (!token || strict_strtoull(token, 0, (unsigned long long *) &lun)) 111 if (!token || kstrtoull(token, 0, (unsigned long long *) &lun))
112 goto err_out; 112 goto err_out;
113 113
114 kfree(str_saved); 114 kfree(str_saved);
diff --git a/drivers/s390/scsi/zfcp_ext.h b/drivers/s390/scsi/zfcp_ext.h
index 83e3f1408c38..a9c570a09b85 100644
--- a/drivers/s390/scsi/zfcp_ext.h
+++ b/drivers/s390/scsi/zfcp_ext.h
@@ -126,8 +126,6 @@ extern int zfcp_qdio_sbals_from_sg(struct zfcp_qdio *, struct zfcp_qdio_req *,
126extern int zfcp_qdio_open(struct zfcp_qdio *); 126extern int zfcp_qdio_open(struct zfcp_qdio *);
127extern void zfcp_qdio_close(struct zfcp_qdio *); 127extern void zfcp_qdio_close(struct zfcp_qdio *);
128extern void zfcp_qdio_siosl(struct zfcp_adapter *); 128extern void zfcp_qdio_siosl(struct zfcp_adapter *);
129extern struct zfcp_fsf_req *zfcp_fsf_get_req(struct zfcp_qdio *,
130 struct qdio_buffer *);
131 129
132/* zfcp_scsi.c */ 130/* zfcp_scsi.c */
133extern struct scsi_transport_template *zfcp_scsi_transport_template; 131extern struct scsi_transport_template *zfcp_scsi_transport_template;
diff --git a/drivers/s390/scsi/zfcp_fsf.c b/drivers/s390/scsi/zfcp_fsf.c
index 510e9b06c1a1..0fe8d5d95119 100644
--- a/drivers/s390/scsi/zfcp_fsf.c
+++ b/drivers/s390/scsi/zfcp_fsf.c
@@ -770,7 +770,8 @@ int zfcp_fsf_status_read(struct zfcp_qdio *qdio)
770 if (zfcp_qdio_sbal_get(qdio)) 770 if (zfcp_qdio_sbal_get(qdio))
771 goto out; 771 goto out;
772 772
773 req = zfcp_fsf_req_create(qdio, FSF_QTCB_UNSOLICITED_STATUS, 0, 773 req = zfcp_fsf_req_create(qdio, FSF_QTCB_UNSOLICITED_STATUS,
774 SBAL_SFLAGS0_TYPE_STATUS,
774 adapter->pool.status_read_req); 775 adapter->pool.status_read_req);
775 if (IS_ERR(req)) { 776 if (IS_ERR(req)) {
776 retval = PTR_ERR(req); 777 retval = PTR_ERR(req);
@@ -2387,12 +2388,3 @@ void zfcp_fsf_reqid_check(struct zfcp_qdio *qdio, int sbal_idx)
2387 break; 2388 break;
2388 } 2389 }
2389} 2390}
2390
2391struct zfcp_fsf_req *zfcp_fsf_get_req(struct zfcp_qdio *qdio,
2392 struct qdio_buffer *sbal)
2393{
2394 struct qdio_buffer_element *sbale = &sbal->element[0];
2395 u64 req_id = (unsigned long) sbale->addr;
2396
2397 return zfcp_reqlist_find(qdio->adapter->req_list, req_id);
2398}
diff --git a/drivers/s390/scsi/zfcp_qdio.c b/drivers/s390/scsi/zfcp_qdio.c
index de0598eaacd2..06025cdaa4ad 100644
--- a/drivers/s390/scsi/zfcp_qdio.c
+++ b/drivers/s390/scsi/zfcp_qdio.c
@@ -16,9 +16,9 @@
16 16
17#define QBUFF_PER_PAGE (PAGE_SIZE / sizeof(struct qdio_buffer)) 17#define QBUFF_PER_PAGE (PAGE_SIZE / sizeof(struct qdio_buffer))
18 18
19static bool enable_multibuffer; 19static bool enable_multibuffer = 1;
20module_param_named(datarouter, enable_multibuffer, bool, 0400); 20module_param_named(datarouter, enable_multibuffer, bool, 0400);
21MODULE_PARM_DESC(datarouter, "Enable hardware data router support"); 21MODULE_PARM_DESC(datarouter, "Enable hardware data router support (default on)");
22 22
23static int zfcp_qdio_buffers_enqueue(struct qdio_buffer **sbal) 23static int zfcp_qdio_buffers_enqueue(struct qdio_buffer **sbal)
24{ 24{
diff --git a/drivers/s390/scsi/zfcp_sysfs.c b/drivers/s390/scsi/zfcp_sysfs.c
index 890639274bcf..672b57219e11 100644
--- a/drivers/s390/scsi/zfcp_sysfs.c
+++ b/drivers/s390/scsi/zfcp_sysfs.c
@@ -107,7 +107,7 @@ static ssize_t zfcp_sysfs_port_failed_store(struct device *dev,
107 struct zfcp_port *port = container_of(dev, struct zfcp_port, dev); 107 struct zfcp_port *port = container_of(dev, struct zfcp_port, dev);
108 unsigned long val; 108 unsigned long val;
109 109
110 if (strict_strtoul(buf, 0, &val) || val != 0) 110 if (kstrtoul(buf, 0, &val) || val != 0)
111 return -EINVAL; 111 return -EINVAL;
112 112
113 zfcp_erp_set_port_status(port, ZFCP_STATUS_COMMON_RUNNING); 113 zfcp_erp_set_port_status(port, ZFCP_STATUS_COMMON_RUNNING);
@@ -146,7 +146,7 @@ static ssize_t zfcp_sysfs_unit_failed_store(struct device *dev,
146 unsigned long val; 146 unsigned long val;
147 struct scsi_device *sdev; 147 struct scsi_device *sdev;
148 148
149 if (strict_strtoul(buf, 0, &val) || val != 0) 149 if (kstrtoul(buf, 0, &val) || val != 0)
150 return -EINVAL; 150 return -EINVAL;
151 151
152 sdev = zfcp_unit_sdev(unit); 152 sdev = zfcp_unit_sdev(unit);
@@ -196,7 +196,7 @@ static ssize_t zfcp_sysfs_adapter_failed_store(struct device *dev,
196 if (!adapter) 196 if (!adapter)
197 return -ENODEV; 197 return -ENODEV;
198 198
199 if (strict_strtoul(buf, 0, &val) || val != 0) { 199 if (kstrtoul(buf, 0, &val) || val != 0) {
200 retval = -EINVAL; 200 retval = -EINVAL;
201 goto out; 201 goto out;
202 } 202 }
@@ -248,7 +248,7 @@ static ssize_t zfcp_sysfs_port_remove_store(struct device *dev,
248 if (!adapter) 248 if (!adapter)
249 return -ENODEV; 249 return -ENODEV;
250 250
251 if (strict_strtoull(buf, 0, (unsigned long long *) &wwpn)) 251 if (kstrtoull(buf, 0, (unsigned long long *) &wwpn))
252 goto out; 252 goto out;
253 253
254 port = zfcp_get_port_by_wwpn(adapter, wwpn); 254 port = zfcp_get_port_by_wwpn(adapter, wwpn);
@@ -309,7 +309,7 @@ static ssize_t zfcp_sysfs_unit_add_store(struct device *dev,
309 u64 fcp_lun; 309 u64 fcp_lun;
310 int retval; 310 int retval;
311 311
312 if (strict_strtoull(buf, 0, (unsigned long long *) &fcp_lun)) 312 if (kstrtoull(buf, 0, (unsigned long long *) &fcp_lun))
313 return -EINVAL; 313 return -EINVAL;
314 314
315 retval = zfcp_unit_add(port, fcp_lun); 315 retval = zfcp_unit_add(port, fcp_lun);
@@ -327,7 +327,7 @@ static ssize_t zfcp_sysfs_unit_remove_store(struct device *dev,
327 struct zfcp_port *port = container_of(dev, struct zfcp_port, dev); 327 struct zfcp_port *port = container_of(dev, struct zfcp_port, dev);
328 u64 fcp_lun; 328 u64 fcp_lun;
329 329
330 if (strict_strtoull(buf, 0, (unsigned long long *) &fcp_lun)) 330 if (kstrtoull(buf, 0, (unsigned long long *) &fcp_lun))
331 return -EINVAL; 331 return -EINVAL;
332 332
333 if (zfcp_unit_remove(port, fcp_lun)) 333 if (zfcp_unit_remove(port, fcp_lun))