[Libguestfs] [PATCH nbdkit 6/6] XXX UNFINISHED New filter: nbdkit-block-size-constraint-filter

Richard W.M. Jones rjones at redhat.com
Thu Feb 17 08:47:30 UTC 2022


On Wed, Feb 16, 2022 at 01:15:23PM -0600, Eric Blake wrote:
> On Wed, Feb 16, 2022 at 04:20:41PM +0000, Richard W.M. Jones wrote:
> > +  if (*minimum == 0) {           /* Plugin didn't set anything. */
> > +    if (config_minimum)
> > +      *minimum = config_minimum;
> > +    else
> > +      *minimum = 1;
> > +
> > +    if (config_preferred)
> > +      *preferred = config_preferred;
> > +    else
> > +      *preferred = 4096;
> > +
> > +    if (config_maximum)
> > +      *maximum = config_maximum;
> > +    else
> > +      *maximum = 0xffffffff;
> > +  }
> > +  else {                        /* Plugin set some values. */
> 
> Didn't we say back in server/plugin.c that if the plugin set any
> value, it should set all three? It's one thing for the filter to allow
> partial results (easier use from the command line), but another for a
> plugin to have partial results (what does the plugin want us to supply
> for the other values?)
> 
> > +    if (config_minimum)
> > +      *minimum = config_minimum;
> > +
> > +    if (config_preferred)
> > +      *preferred = config_preferred;
> > +
> > +    if (config_maximum)
> > +      *maximum = config_maximum;
> > +  }
> > +
> > +  if (*minimum > *preferred || *preferred > *maximum) {
> > +    nbdkit_error ("computed block size values are invalid, minimum %" PRIu32
> > +                  " > preferred %" PRIu32
> > +                  " or preferred > maximum %" PRIu32,
> > +                  *minimum, *preferred, *maximum);
> > +    return -1;
> > +  }
> > +  return 0;
> > +}

It'd be wrong for the filter to return a result set where some but not
all of the values are 0.  But I don't think it does that above?  Note
we assume that the values returned by the plugin have been checked by
server/plugin.c.

However the code doesn't check everything for sure, eg. it doesn't
check that the result set has powers of 2 in the right places,
preferred is a multiple of minimum, probably other things.

Rich.

-- 
Richard Jones, Virtualization Group, Red Hat http://people.redhat.com/~rjones
Read my programming and virtualization blog: http://rwmj.wordpress.com
virt-df lists disk usage of guests without needing to install any
software inside the virtual machine.  Supports Linux and Windows.
http://people.redhat.com/~rjones/virt-df/




More information about the Libguestfs mailing list