linux/drivers/s390/scsi
Steffen Maier 5fea4291de [SCSI] zfcp: block queue limits with data router
Commit 86a9668a8d
"[SCSI] zfcp: support for hardware data router"
reduced the initial block queue limits in the scsi_host_template to the
absolute minimum and adjusted them later on. However, the adjustment was
too late for the BSG devices of Scsi_Host and fc_host.

Therefore, ioctl(..., SG_IO, ...) with request or response size > 4kB to a
BSG device of an fc_host or a Scsi_Host fails with EINVAL. As a result,
users of such ioctl such as HBA_SendCTPassThru() in libzfcphbaapi return
with error HBA_STATUS_ERROR.

Initialize the block queue limits in zfcp_scsi_host_template to the
greatest common denominator (GCD).

While we cannot exploit the slightly enlarged maximum request size with
data router, this should be neglectible. Doing so also avoids running into
trouble after live guest relocation (LGR) / migration from a data router
FCP device to an FCP device that does not support data router. In that
case, zfcp would figure out the new limits on adapter recovery, but the
fc_host and Scsi_Host (plus in fact all sdevs) still exist with the old and
now too large queue limits.

It should also OK, not to use half the size as in the DIX case, because
fc_host and Scsi_Host do not transport FCP requests including SCSI commands
using protection data.

Signed-off-by: Steffen Maier <maier@linux.vnet.ibm.com>
Reviewed-by: Martin Peschke <mpeschke@linux.vnet.ibm.com>
Cc: <stable@vger.kernel.org> #3.2+
Signed-off-by: James Bottomley <JBottomley@Parallels.com>
2013-05-31 16:32:37 -07:00
..
Makefile [SCSI] zfcp: Move code for managing zfcp_unit devices to new file 2010-09-16 22:54:15 -04:00
zfcp_aux.c [SCSI] zfcp: remove unused device_unregister wrapper 2013-05-31 16:32:37 -07:00
zfcp_ccw.c [SCSI] zfcp: cleanup unit sysfs attribute usage 2013-05-31 16:32:37 -07:00
zfcp_cfdc.c [SCSI] zfcp: cfdc fops add owner 2013-05-31 16:32:36 -07:00
zfcp_dbf.c [SCSI] zfcp: Do not wakeup while suspended 2012-09-24 12:11:01 +04:00
zfcp_dbf.h [SCSI] zfcp: Do not wakeup while suspended 2012-09-24 12:11:01 +04:00
zfcp_def.h [SCSI] zfcp: restore refcount check on port_remove 2012-09-24 12:11:02 +04:00
zfcp_erp.c [SCSI] zfcp: No automatic port_rescan on events 2012-09-24 12:11:02 +04:00
zfcp_ext.h [SCSI] zfcp: remove unused device_unregister wrapper 2013-05-31 16:32:37 -07:00
zfcp_fc.c [SCSI] zfcp: cleanup port sysfs attribute usage 2013-05-31 16:32:36 -07:00
zfcp_fc.h s390/comments: unify copyright messages and remove file names 2012-07-20 11:15:04 +02:00
zfcp_fsf.c [SCSI] zfcp: fix adapter (re)open recovery while link to SAN is down 2013-05-31 16:32:37 -07:00
zfcp_fsf.h s390/comments: unify copyright messages and remove file names 2012-07-20 11:15:04 +02:00
zfcp_qdio.c s390/time: rename tod clock access functions 2013-02-14 15:55:10 +01:00
zfcp_qdio.h s390/comments: unify copyright messages and remove file names 2012-07-20 11:15:04 +02:00
zfcp_reqlist.h s390/comments: unify copyright messages and remove file names 2012-07-20 11:15:04 +02:00
zfcp_scsi.c [SCSI] zfcp: block queue limits with data router 2013-05-31 16:32:37 -07:00
zfcp_sysfs.c [SCSI] zfcp: cleanup unit sysfs attribute usage 2013-05-31 16:32:37 -07:00
zfcp_unit.c [SCSI] zfcp: cleanup unit sysfs attribute usage 2013-05-31 16:32:37 -07:00