Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/vapier...
[sfrench/cifs-2.6.git] / drivers / s390 / scsi / zfcp_scsi.c
index 174b6d57d5769c23735ae137bdce73849031253f..be5d2c60453d13c98950ecd4054333aca49448fd 100644 (file)
@@ -175,7 +175,7 @@ static int zfcp_scsi_eh_abort_handler(struct scsi_cmnd *scpnt)
        struct zfcp_fsf_req *old_req, *abrt_req;
        unsigned long flags;
        unsigned long old_reqid = (unsigned long) scpnt->host_scribble;
-       int retval = SUCCESS;
+       int retval = SUCCESS, ret;
        int retry = 3;
        char *dbf_tag;
 
@@ -200,7 +200,9 @@ static int zfcp_scsi_eh_abort_handler(struct scsi_cmnd *scpnt)
                        break;
 
                zfcp_erp_wait(adapter);
-               fc_block_scsi_eh(scpnt);
+               ret = fc_block_scsi_eh(scpnt);
+               if (ret)
+                       return ret;
                if (!(atomic_read(&adapter->status) &
                      ZFCP_STATUS_COMMON_RUNNING)) {
                        zfcp_dbf_scsi_abort("nres", adapter->dbf, scpnt, NULL,
@@ -231,7 +233,7 @@ static int zfcp_task_mgmt_function(struct scsi_cmnd *scpnt, u8 tm_flags)
        struct zfcp_unit *unit = scpnt->device->hostdata;
        struct zfcp_adapter *adapter = unit->port->adapter;
        struct zfcp_fsf_req *fsf_req = NULL;
-       int retval = SUCCESS;
+       int retval = SUCCESS, ret;
        int retry = 3;
 
        while (retry--) {
@@ -240,7 +242,10 @@ static int zfcp_task_mgmt_function(struct scsi_cmnd *scpnt, u8 tm_flags)
                        break;
 
                zfcp_erp_wait(adapter);
-               fc_block_scsi_eh(scpnt);
+               ret = fc_block_scsi_eh(scpnt);
+               if (ret)
+                       return ret;
+
                if (!(atomic_read(&adapter->status) &
                      ZFCP_STATUS_COMMON_RUNNING)) {
                        zfcp_dbf_scsi_devreset("nres", tm_flags, unit, scpnt);
@@ -276,10 +281,13 @@ static int zfcp_scsi_eh_host_reset_handler(struct scsi_cmnd *scpnt)
 {
        struct zfcp_unit *unit = scpnt->device->hostdata;
        struct zfcp_adapter *adapter = unit->port->adapter;
+       int ret;
 
        zfcp_erp_adapter_reopen(adapter, 0, "schrh_1", scpnt);
        zfcp_erp_wait(adapter);
-       fc_block_scsi_eh(scpnt);
+       ret = fc_block_scsi_eh(scpnt);
+       if (ret)
+               return ret;
 
        return SUCCESS;
 }
@@ -669,11 +677,12 @@ struct zfcp_data zfcp_data = {
                .eh_host_reset_handler   = zfcp_scsi_eh_host_reset_handler,
                .can_queue               = 4096,
                .this_id                 = -1,
-               .sg_tablesize            = ZFCP_MAX_SBALES_PER_REQ,
+               .sg_tablesize            = ZFCP_FSF_MAX_SBALES_PER_REQ,
                .cmd_per_lun             = 1,
                .use_clustering          = 1,
                .sdev_attrs              = zfcp_sysfs_sdev_attrs,
-               .max_sectors             = (ZFCP_MAX_SBALES_PER_REQ * 8),
+               .max_sectors             = (ZFCP_FSF_MAX_SBALES_PER_REQ * 8),
+               .dma_boundary            = ZFCP_QDIO_SBALE_LEN - 1,
                .shost_attrs             = zfcp_sysfs_shost_attrs,
        },
 };