Re: [PATCH 23/44] libmultipath: improve dm_get_wwid() return value logic

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Thu, 2024-07-11 at 14:25 +0200, Martin Wilck wrote:
> On Wed, 2024-07-10 at 19:34 -0400, Benjamin Marzinski wrote:
> > On Tue, Jul 09, 2024 at 11:39:14PM +0200, Martin Wilck wrote:
> > > 
> > >  
> > > +/**
> > > + * dm_get_wwid(): return WWID for a multipath map
> > > + * @returns:
> > > + *    DMP_OK if successful
> > > + *    DMP_NOT_FOUND if the map doesn't exist
> > > + *    DMP_NO_MATCH if the map exists but is not a multipath map
> > > + *    DMP_ERR for other errors
> > > + */
> > >  int dm_get_wwid(const char *name, char *uuid, int uuid_len)
> > >  {
> > >  	char tmp[DM_UUID_LEN];
> > > +	int rc = dm_get_dm_uuid(name, tmp);
> > >  
> > > -	if (dm_get_dm_uuid(name, tmp) != DMP_OK)
> > > -		return 1;
> > > +	if (rc != DMP_OK)
> > > +		return rc;
> > >  
> > >  	if (!strncmp(tmp, UUID_PREFIX, UUID_PREFIX_LEN))
> > >  		strlcpy(uuid, tmp + UUID_PREFIX_LEN, uuid_len);
> > > -	else
> > > +	else {
> > 
> > This seems a little inconsistent with the change in our returns.
> > Before, if we found a device but it wasn't multipath device,
> > dm_get_wwid() would exit with 0 but set uuid to an empty string.
> > Now
> > we
> > return DMP_NO_MATCH in this case but we still clear uuid. It seems
> > like
> > perhaps we should either set uuid to an empty string for all cases
> > except DM_OK or we should not touch it for all cases except DM_OK.
> > Alternatively, perhaps I'm over-thinking this.
> 
> Right. In libmp_mapinfo(), I followed the idea that no output should
> be
> touched if any errors happened. Here, I wanted to preserve the
> behavior
> but didn't do it correctly.
> 
> I tend to think that "don't touch output in error case" is the
> correct
> behavior, but we'd need to review the callers and make sure that they
> don't assume the WWID will be automatically 0-terminated.
> 
> I'll do that.

Turns out that the callers that need changes because of the changed
semantics of dm_get_wwid() will be changed later on anyway, and the
respective modifications of the callers will be removed again. But I'll
do this anyway, to make the patch set consistent.

Martin






[Index of Archives]     [DM Crypt]     [Fedora Desktop]     [ATA RAID]     [Fedora Marketing]     [Fedora Packaging]     [Fedora SELinux]     [Yosemite Discussion]     [KDE Users]     [Fedora Docs]

  Powered by Linux