[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