• Steffen Maier's avatar
    [SCSI] zfcp: block queue limits with data router · 5fea4291
    Steffen Maier authored
    Commit 86a9668a
    "[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: default avatarSteffen Maier <maier@linux.vnet.ibm.com>
    Reviewed-by: default avatarMartin Peschke <mpeschke@linux.vnet.ibm.com>
    Cc: <stable@vger.kernel.org> #3.2+
    Signed-off-by: default avatarJames Bottomley <JBottomley@Parallels.com>
    5fea4291
zfcp_scsi.c 20.9 KB