dm mpath: Add timeout mechanism for queue_if_no_path
authorAnatol Pomazau <anatol@google.com>
Mon, 13 Jan 2020 22:41:27 +0000 (17:41 -0500)
committerMike Snitzer <snitzer@redhat.com>
Wed, 15 Jan 2020 01:23:14 +0000 (20:23 -0500)
commitbe240ff5e402df49c4ddbcb0595ef96009239f6a
tree5c530ad36463bdb428a5e144e80068d093dcc06d
parentf06c03d1ded22cf1c059650c4ba02496e93a0c06
dm mpath: Add timeout mechanism for queue_if_no_path

Add a configurable timeout mechanism to disable queue_if_no_path without
assistance from userspace multipathd.  This reimplements multipathd's
no_path_retry mechanism in kernel space.  This is motivated by the
desire to prevent processes from hanging indefinitely waiting for IO
in cases where multipathd might be unable to respond (after a failure
or for whatever reason).

Despite replicating userspace multipathd's policy configuration in
kernel space, it is important to prevent IOs from hanging forever,
waiting for userspace that may be incapable of behaving correctly.

Use of the provided "queue_if_no_path_timeout_secs" dm-multipath
module parameter is optional.  This timeout mechanism is disabled by
default (by being set to 0).

Signed-off-by: Anatol Pomazau <anatol@google.com>
Co-developed-by: Gabriel Krisman Bertazi <krisman@collabora.com>
Signed-off-by: Gabriel Krisman Bertazi <krisman@collabora.com>
Signed-off-by: Mike Snitzer <snitzer@redhat.com>
drivers/md/dm-mpath.c