Skip to content

Commit

Permalink
libmpathpersist: set mpp->mpe before selecting reservation_key
Browse files Browse the repository at this point in the history
libmpathpersist was not setting mpp->mpe before calling
select_reservation_key(). This means that if the reservation key was set
in the multipaths sections, it wasn't being selected.

This appeared to work for many commands because of an error in checking
if the correct reservation key was used. If mpp->reservation key was
unset, then it would considered to match if either the RK or SARK was
unset in the command. mpathpersist should fail if it doesn't find a
configured mpp->resevation key, with one exception. To make it easier to
remove old keys, if --register-ignore is called, and the command SARK is
0x0 so the device is being unregistered, allow mpp->reservation_key to
be unset. The code already allows mpp->reservation_key to not match the
command RK in this case.

Signed-off-by: Benjamin Marzinski <bmarzins@redhat.com>
Reviewed-by: Martin Wilck <mwilck@suse.com>
  • Loading branch information
bmarzins authored and mwilck committed Aug 6, 2024
1 parent 2ca9f38 commit 772f727
Showing 1 changed file with 7 additions and 0 deletions.
7 changes: 7 additions & 0 deletions libmpathpersist/mpath_persist_int.c
Original file line number Diff line number Diff line change
Expand Up @@ -663,6 +663,7 @@ int do_mpath_persistent_reserve_out(vector curmp, vector pathvec, int fd,
return ret;

conf = get_multipath_config();
mpp->mpe = find_mpe(conf->mptable, mpp->wwid);
select_reservation_key(conf, mpp);
select_all_tg_pt(conf, mpp);
put_multipath_config(conf);
Expand All @@ -683,6 +684,12 @@ int do_mpath_persistent_reserve_out(vector curmp, vector pathvec, int fd,
}
}

if (!get_be64(mpp->reservation_key) &&
(prkey || rq_servact != MPATH_PROUT_REG_IGN_SA)) {
condlog(0, "%s: no configured reservation key", mpp->alias);
return MPATH_PR_SYNTAX_ERROR;
}

if (memcmp(paramp->key, &mpp->reservation_key, 8) &&
memcmp(paramp->sa_key, &mpp->reservation_key, 8) &&
(prkey || rq_servact != MPATH_PROUT_REG_IGN_SA)) {
Expand Down

0 comments on commit 772f727

Please sign in to comment.