[Libguestfs] [PATCH nbdkit 2/2] tar: Rewrite the tar plugin (again), this time in C.

Richard W.M. Jones rjones at redhat.com
Mon Jul 6 20:48:53 UTC 2020


On Mon, Jul 06, 2020 at 02:08:26PM -0500, Eric Blake wrote:
> On 6/28/20 4:35 PM, Richard W.M. Jones wrote:
> 
> >For completeness here are the other ways I investigated:
> >
> >* Make generic read, write, zero, trim, extents operations on local
> >   files.  The file-like plugins would consume those directly, after
> >   doing any adjustments eg for offset.  Unfortunately the operations
> >   that you have to write are not very "pure" and depend on a bunch of
> >   state across calls and you end up not having much common code:
> >   https://github.com/libguestfs/nbdkit/blob/f6d4365364f2c90dde0166ae4355f74f28e112ff/plugins/file/file.c#L149
> >
> >* Have the new tar plugin re-exec nbdkit and run the ordinary file
> >   plugin + offset filter.  After experience with the VDDK plugin which
> >   does this through necessity, I don't want to go there right now.
> >   See this file to understand the kind of complexity this introduces:
> >   https://github.com/libguestfs/nbdkit/blob/master/plugins/vddk/reexec.c
> >
> >* Instead of writing a tar plugin, write a wrapper script which hands
> >   off to file plugin + offset filter.  From the user's point of view
> >   the script would work a lot differently from other plugins.
> >
> >So no good ideas so far.
> 
> How hard is it to write a tar filter instead of a tar plugin
> (similar to how we moved ext2 from plugin to filter)?
> 
> - During .get_ready, we have to find some way to read the underlying
> plugin to feed a pipeline to tar to decode what the file contains
> (we can't just hand the file to tar, but instead have to feed it
> data through stdin; but the amount of work is no different: tar
> really does have to read the entire image during 'tar tRvf').
> - There would no longer be a tar=... parameter, rather that is the
> role of the plugin
> - We'd have to rename the file=... parameter to something that won't
> conflict with the most common use of having the file plugin serve
> the tar file
> - But once we've done the .get_ready scan of the entire tar file, we
> can then service offsets to the plugin similarly to how the offset
> filter works

Yes this sounds plausible.

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