cxlflash: Fix to avoid virtual LUN failover failure
authorMatthew R. Ochs <mrochs@linux.vnet.ibm.com>
Mon, 14 Dec 2015 20:55:44 +0000 (14:55 -0600)
committerMartin K. Petersen <martin.petersen@oracle.com>
Thu, 7 Jan 2016 01:50:08 +0000 (20:50 -0500)
commitd5e26bb1d812ba74f29b6bcbc88c3dbfb3eed824
treed70e61530110d432830ce17d4a055327cc757b03
parenta9be294ecb3b9dc82b15625631b153f871181d16
cxlflash: Fix to avoid virtual LUN failover failure

Applications which use virtual LUN's that are backed by a physical LUN
over both adapter ports may experience an I/O failure in the event of a
link loss (e.g. cable pull).

Virtual LUNs may be accessed through one or both ports of the adapter.
This access is encoded in the translation entries that comprise the
virtual LUN and used by the AFU for load-balancing I/O and handling
failover scenarios. In a link loss scenario, even though the AFU is able
to maintain connectivity to the LUN, it is up to the application to
retry the failed I/O. When applications are unaware of the virtual LUN's
underlying topology, they are unable to make a sound decision of when to
retry an I/O and therefore are forced to make their reaction to a failed
I/O absolute. The result is either a failure to retry I/O or increased
latency for scenarios where a retry is pointless.

To remedy this scenario, provide feedback back to the application on
virtual LUN creation as to which ports the LUN may be accessed. LUN's
spanning both ports are candidates for a retry in a presence of an I/O
failure.

Signed-off-by: Matthew R. Ochs <mrochs@linux.vnet.ibm.com>
Acked-by: Manoj Kumar <manoj@linux.vnet.ibm.com>
Reviewed-by: Uma Krishnan <ukrishn@linux.vnet.ibm.com>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
drivers/scsi/cxlflash/vlun.c
include/uapi/scsi/cxlflash_ioctl.h