[Linux-cluster] Is this intentional: specifying a new completion ast routine on a convert

Patrick Caulfield pcaulfie at redhat.com
Thu Jul 29 12:38:04 UTC 2004


On Wed, Jul 28, 2004 at 12:54:45PM -0400, Jeff wrote:
> Wednesday, July 28, 2004, 12:49:48 PM, Jeff wrote:
> 
> > This is from device.c. The intent seems to
> > be that if an argument is specified, then it overrides
> > an existing value. However, a new completion ast address
> > is only loaded if a new blocking ast address is specified.
> 
> >         if (kparams->flags & DLM_LKF_CONVERT) {
> >                 struct dlm_lkb *lkb =
> > dlm_get_lkb(fi->fi_ls->ls_lockspace, kparams->lkid);
> >                 if (!lkb) {
> >                         return -EINVAL;
> >                 }
> >                 li = (struct lock_info *)lkb->lkb_astparam;
> 
> >                 /* Only override these if they are provided */
> >                 if (li->li_user_lksb)
> >                         li->li_user_lksb = kparams->lksb;
> >                 if (li->li_astparam)
> >                         li->li_astparam  = kparams->astparam;
> >                 if (li->li_bastaddr)
> >                         li->li_bastaddr  = kparams->bastaddr;
> --->>            if (li->li_bastaddr)
> --->>                    li->li_astaddr   = kparams->astaddr;
> >                 li->li_flags     = 0;
> >         }
> 
> Looking at this again, shouldn't it be testing kparams-> in
> the if() rather than li->*? The current code seems to write new
> values if there were old ones as opposed to if new values
> are specified.

er, yes it looks like it. I'll check in a fix when I get back home.

-- 

patrick




More information about the Linux-cluster mailing list