[Libguestfs] [PATCH 9/9] filters: Move rdelay/wdelay from file plugin to new delay filter.
Richard W.M. Jones
rjones at redhat.com
Thu Jan 18 08:47:22 UTC 2018
On Wed, Jan 17, 2018 at 04:38:04PM -0600, Eric Blake wrote:
> > +/* Zero data. */
> > +static int
> > +delay_zero (struct nbdkit_next *next, void *nxdata,
> > + void *handle, uint32_t count, uint64_t offset, int may_trim)
> > +{
> > + write_delay ();
> > + return next->zero (nxdata, count, offset, may_trim);
>
> If next->zero() fails with EOPNOTSUPP, that means we will delay once in
> trying the underlying command, and again for each iteration of the
> fallback loop as it calls delay_pwrite(). Is that okay, or do we want
> to reproduce some fallback logic here and directly call next->pwrite on
> EOPNOTSUPP so as to only have a single write delay in that case?
Good point. How about this, it seems simpler:
static int
delay_zero (struct nbdkit_next *next, void *nxdata,
void *handle, uint32_t count, uint64_t offset, int may_trim)
{
int r = next->zero (nxdata, count, offset, may_trim);
if (r != -1)
write_delay ();
return r;
}
And the same for the other methods in that filter.
Rich.
--
Richard Jones, Virtualization Group, Red Hat http://people.redhat.com/~rjones
Read my programming and virtualization blog: http://rwmj.wordpress.com
libguestfs lets you edit virtual machines. Supports shell scripting,
bindings from many languages. http://libguestfs.org
More information about the Libguestfs
mailing list