On Tue, 2025-09-23 at 18:12 -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. > > 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_int.c | 199 +++++++++++++++++--------- > -- > 1 file changed, 125 insertions(+), 74 deletions(-)
For the series: Reviewed-by: Martin Wilck <[email protected]>
