[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]

[dm-devel] [PATCH 0/6] Handle blocked FC rports

Occasionally, FC HBAs might lose track of the status of
the attached remote ports. This will cause I/O to be
stuck and the FC HBAs to invoke the error handler,
which will take _LONG_ to complete (we're speaking hours here).

This patch implements a 'suspend path' mechanism in multipath
for handling these situations. Key point is to have a
writeable 'port_state' sysfs attribute for the remote ports.
This is introduced by the patch
'scsi_transport_fc: Make 'port_state' writeable'
posted to linux-scsi.

There are two ways of suspending a path, either by a
path checker returning 'PATH_TIMEOUT', or by the user
invoking the new CLI command 'suspend path'.
This will then set the 'port_state' attribute to 'blocked',
causing the 'fast_io_fail' mechanism to trigger.
This will eventually cause all outstanding I/O to be
aborted and result in a quick failover.

Paths will be resumed either from the FC HBA when a
new RSCN state update is recieved from the SAN, or by
the user by calling the new CLI command 'resume path'.

Signed-off-by: Hannes Reinecke <hare suse de>

Hannes Reinecke (6):
  libmultipath: return PATH_DOWN for quiesced paths
  libmultipath: Implement PATH_TIMEOUT
  libmultipath: improve debugging messages in sysfs_attr_set_value()
  libmultipath: Implement sysfs_attr_get_value()
  libmultipath: Implement sysfs_set_fc_rport_state()
  multipathd: Implement 'suspend/resume path'

 libmultipath/checkers.h     |    5 ++++
 libmultipath/checkers/tur.c |    2 +-
 libmultipath/discovery.c    |   65 ++++++++++++++++++++++++++++++++++++++++++-
 libmultipath/discovery.h    |    1 +
 libmultipath/print.c        |    4 +++
 libmultipath/sysfs.c        |   64 ++++++++++++++++++++++++++++++++++++++++--
 libmultipath/sysfs.h        |    2 ++
 multipathd/cli.c            |    2 ++
 multipathd/cli_handlers.c   |   50 +++++++++++++++++++++++++++++++++
 multipathd/cli_handlers.h   |    2 ++
 multipathd/main.c           |    7 +++++
 11 files changed, 200 insertions(+), 4 deletions(-)


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]