39 lines
1.6 KiB
Diff
39 lines
1.6 KiB
Diff
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
From: Benjamin Marzinski <bmarzins@redhat.com>
|
|
Date: Mon, 23 Nov 2020 20:45:50 -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>
|
|
---
|
|
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 aa196008..a01dfb0b 100644
|
|
--- a/libmpathpersist/mpath_persist.c
|
|
+++ b/libmpathpersist/mpath_persist.c
|
|
@@ -307,9 +307,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
|
|
|