40 lines
1.7 KiB
Diff
40 lines
1.7 KiB
Diff
|
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||
|
From: Benjamin Marzinski <bmarzins@redhat.com>
|
||
|
Date: Fri, 18 Dec 2020 17:06:38 -0600
|
||
|
Subject: [PATCH] mpathpersist: update prkeys file on changing registrations
|
||
|
|
||
|
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>
|
||
|
---
|
||
|
libmpathpersist/mpath_persist.c | 7 ++++---
|
||
|
1 file changed, 4 insertions(+), 3 deletions(-)
|
||
|
|
||
|
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)) {
|
||
|
--
|
||
|
2.17.2
|
||
|
|