Message ID | 1608332802-9720-3-git-send-email-bmarzins@redhat.com (mailing list archive) |
---|---|
State | Not Applicable, archived |
Delegated to: | christophe varoqui |
Headers | show |
Series | More misc multipath patches | expand |
On Fri, 2020-12-18 at 17:06 -0600, Benjamin Marzinski wrote: > When the "reservation_key" option is set to "file" and Register > command > is run with both the current Reservation Key and a new Service Action > Reservation Key, mpathpersist will change the registration, but will > not > update the prkeys file. This means that future paths that come online > will not be able to register, since multipathd is still using the old > reservation key. Fix this. > > Signed-off-by: Benjamin Marzinski <bmarzins@redhat.com> Reviewed-by: Martin Wilck <mwilck@suse.com>
diff --git a/libmpathpersist/mpath_persist.c b/libmpathpersist/mpath_persist.c index 41789c46..08077936 100644 --- a/libmpathpersist/mpath_persist.c +++ b/libmpathpersist/mpath_persist.c @@ -290,9 +290,10 @@ int __mpath_persistent_reserve_out ( int fd, int rq_servact, int rq_scope, memcpy(&prkey, paramp->sa_key, 8); if (mpp->prkey_source == PRKEY_SOURCE_FILE && prkey && - ((!get_be64(mpp->reservation_key) && - rq_servact == MPATH_PROUT_REG_SA) || - rq_servact == MPATH_PROUT_REG_IGN_SA)) { + (rq_servact == MPATH_PROUT_REG_IGN_SA || + (rq_servact == MPATH_PROUT_REG_SA && + (!get_be64(mpp->reservation_key) || + memcmp(paramp->key, &mpp->reservation_key, 8) == 0)))) { memcpy(&mpp->reservation_key, paramp->sa_key, 8); if (update_prkey_flags(alias, get_be64(mpp->reservation_key), paramp->sa_flags)) {
When the "reservation_key" option is set to "file" and Register command is run with both the current Reservation Key and a new Service Action Reservation Key, mpathpersist will change the registration, but will not update the prkeys file. This means that future paths that come online will not be able to register, since multipathd is still using the old reservation key. Fix this. Signed-off-by: Benjamin Marzinski <bmarzins@redhat.com> --- libmpathpersist/mpath_persist.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-)