[Libguestfs] [PATCH nbdkit 2/9] cache: Add cache-on-read mode.
Richard W.M. Jones
rjones at redhat.com
Tue Jan 1 09:57:36 UTC 2019
On Mon, Dec 31, 2018 at 04:59:09PM -0600, Eric Blake wrote:
> On 12/28/18 12:45 PM, Richard W.M. Jones wrote:
> > The same as qemu's copyonread flag, this caches read requests.
> > ---
> > filters/cache/nbdkit-cache-filter.pod | 11 +++++
> > filters/cache/cache.c | 37 +++++++++++++--
> > tests/Makefile.am | 4 +-
> > tests/test-cache-on-read.sh | 66 +++++++++++++++++++++++++++
> > 4 files changed, 114 insertions(+), 4 deletions(-)
>
> Makes sense.
>
>
> > +=item B<cache-on-read=true>
> > +
> > +Cache read requests as well as write requests. Any time a block is
> > +read from the plugin, it is saved in the cache (if there is sufficient
> > +space) so the same data can be served more quickly later.
>
> Is it worth mentioning that this is fine for a client that is expected
> to be the only writing client of a given server; but that it can result
> in stale data if the server can modify the data via other means?
Yes this is worth mentioning and I'll add it to the documentation.
> (In
> particular, since we don't implement NBD_FLAG_CAN_MULTI_CONN, we already
> admit that two clients trying to write in parallel are not guaranteed to
> see consistent read results after a flush - while caching read data only
> makes that more apparent)
I'm not sure I understand this scenario. Doesn't the cache.c lock
cause the flush to be serialized across all clients?
> > +++ b/tests/test-cache-on-read.sh
> What you have here looks okay, but I have a possible idea for an
> additional test: use the delay filter to prove that repeated reads of a
> region of the disk only suffer a one-time read penalty, rather than a
> penalty per read.
I'll add an “XXX” comment to the test so we can improve it in future.
Thanks,
Rich.
--
Richard Jones, Virtualization Group, Red Hat http://people.redhat.com/~rjones
Read my programming and virtualization blog: http://rwmj.wordpress.com
virt-builder quickly builds VMs from scratch
http://libguestfs.org/virt-builder.1.html
More information about the Libguestfs
mailing list