On Fri, 2025-09-26 at 13:28 -0400, Benjamin Marzinski wrote: > This patchset handles 4 separate issues: > 1. The self-preemption workaround for changing keys using REGISTER > AND > IGNORE, while the path holding the reservation was down was broken > by a recent commit. > 2. mpathpersist was failing a RESERVE command issued on a multipath > device that held a reservation, when the holding path was down. > Issuing an identical reserve on a device that holds a reservation > is supposed to succeed, and multipathd has enough information to > know the device is actually holding the reservation. So if > multipathd says that the device is holding the reservation, it > should not fail, even if the path holding the reservation is down. > 3. mpathpersist was not clearing the reservation when the key holding > it was unregistered, if the path holding the reservation was down. > 4. When unregistering a key that holds a reservation, depending on > the > order that the paths got unregistered, there was a window where > IO going to the device could fail. This should not happen because > the reservation should be removed and the key should be > unregistered > atomically. > > Changes in V2: > 0004: reworked how the unregister infromation is passed to an from > mpath_prout_rel() to make it less confusing, at Martin's > suggestion. > > Feel free to reformat my patches. I forgot to do that first. Sorry. > > Benjamin Marzinski (4): > libmpathpersist: Fix REGISTER AND IGNORE while holding a > reservation > libmpathpersist: Handle RESERVE with reservation held by failed > path > libmpathpersist: use check_holding_reservation in mpath_prout_rel > libmpathpersist: Fix unregistering while holding the reservation > > libmpathpersist/mpath_persist.h | 3 + > libmpathpersist/mpath_persist_int.c | 204 ++++++++++++++++++-------- > -- > 2 files changed, 134 insertions(+), 73 deletions(-)
For the set: Reviewed-by: Martin Wilck <[email protected]>
