On Sun, Aug 24, 2025 at 05:33:07PM +0200, Martin Wilck wrote:
> On Thu, 2025-07-10 at 14:10 -0400, Benjamin Marzinski wrote:
> > If none of the threads succeeds in issuing the release, simply return
> > failure, instead of trying the workaround.
> > 
> > Signed-off-by: Benjamin Marzinski <bmarz...@redhat.com>
> > ---
> >  libmpathpersist/mpath_persist_int.c | 12 +++++++++---
> >  1 file changed, 9 insertions(+), 3 deletions(-)
> > 
> > diff --git a/libmpathpersist/mpath_persist_int.c
> > b/libmpathpersist/mpath_persist_int.c
> > index 7fb08b2e..ad5a4ee7 100644
> > --- a/libmpathpersist/mpath_persist_int.c
> > +++ b/libmpathpersist/mpath_persist_int.c
> > @@ -475,15 +475,21 @@ static int mpath_prout_rel(struct multipath
> > *mpp,int rq_servact, int rq_scope,
> >             }
> >     }
> >  
> > +   rc = MPATH_PR_DMMP_ERROR;
> 
> I find the relationship between "status" and "rc" a bit confusing in
> this patch. Can we use something like "bool all_failed" instead?

Sure.

-Ben

> 
> Martin
> 
> 
> >     for (i = 0; i < count; i++){
> >             /*  check thread status here and return the status
> > */
> >  
> > -           if (thread[i].param.status ==
> > MPATH_PR_RESERV_CONFLICT)
> > +           if (thread[i].param.status == MPATH_PR_SUCCESS)
> > +                   rc = MPATH_PR_SUCCESS;
> > +           else if (thread[i].param.status ==
> > MPATH_PR_RESERV_CONFLICT)
> >                     status = MPATH_PR_RESERV_CONFLICT;
> > -           else if (status == MPATH_PR_SUCCESS
> > -                           && thread[i].param.status !=
> > MPATH_PR_RESERV_CONFLICT)
> > +           else if (status == MPATH_PR_SUCCESS)
> >                     status = thread[i].param.status;
> >     }
> > +   if (rc != MPATH_PR_SUCCESS) {
> > +           condlog(0, "%s: all threads failed to release
> > reservation.", mpp->wwid);
> > +           return status;
> > +   }
> >  
> >     status = mpath_prin_activepath (mpp, MPATH_PRIN_RRES_SA,
> > &resp, noisy);
> >     if (status != MPATH_PR_SUCCESS){


Reply via email to