libmultipath: fix mpcontext initialization
authorBenjamin Marzinski <bmarzins@redhat.com>
Fri, 13 Sep 2019 22:04:04 +0000 (17:04 -0500)
committerChristophe Varoqui <christophe.varoqui@opensvc.com>
Tue, 1 Oct 2019 20:00:36 +0000 (22:00 +0200)
commit777699343ae97eb96a0da74c16d0e3ebdb07a93e
tree82e0162c53371f6eb2dafabdbe07b78987813767
parent44c2e7e5ae249a5fb91baf91271d0be5c9bf4cbf
libmultipath: fix mpcontext initialization

If a path is discovered before there is a multipath device for it to
belong to, the checker will not have its mpcontext initialized, even if
that path later belongs to a multipath device. A checker's mpcontext is
only set when the checker is selected, and is set to NULL if there is no
multipath device associated with the path. This only impacts the emc
checker. However, it makes the emc checker unable to determine if a
passive path is connected to an inactive snapshot or not.

This can be solved by adding a new checker class function, mp_init().
This is called when the checker is first initialized, and whenever the
checker is called, if the checker's mpcontext hasn't been initialized.

Signed-off-by: Benjamin Marzinski <bmarzins@redhat.com>
libmultipath/checkers.c
libmultipath/checkers.h
libmultipath/checkers/emc_clariion.c
libmultipath/discovery.c