[Libguestfs] [PATCH nbdkit] New plugin: blkio [incomplete]

Stefan Hajnoczi stefanha at redhat.com
Wed Jan 11 16:32:34 UTC 2023


On Wed, Jan 04, 2023 at 09:43:57PM +0000, Richard W.M. Jones wrote:
> On Wed, Jan 04, 2023 at 06:14:34PM +0000, Richard W.M. Jones wrote:
> > (3) It seems like some drivers require pre-allocated memory regions,
> > and since some do that means we might as well implement this.  It
> > also seems like some drivers require file-backed pre-allocated
> > memory regions, and so we might as well implement that too.
> > 
> > However what is not clear: does memfd_create(2) always allocate
> > sufficiently aligned memory regions, such that we never need to bother
> > reading the mem-region-alignment property?
> > 
> > I notice that the example:
> > https://gitlab.com/libblkio/libblkio/-/blob/main/examples/blkio-copy.c
> > just passes on this and calls blkio_alloc_mem_region().  Is that the
> > safest and easiest thing to do which will always work?
> 
> So this seems to be the reverse of what I thought.
> 
> In nbdkit plugins ideally we'd like to avoid using bounce buffers if
> possible.  Also NBD requests can be up to (IIRC) 32M, although we can
> hint to the client to limit them to some smaller number.
> 
> If I call blkio_alloc_mem_region() unconditionally then it seems as if
> I always need to use this as a bounce buffer.  Plus, is 32M too large
> for a memory region allocated this way?  The example allocates 128K.

Allocating 32 MB with blkio_alloc_mem_region() is fine.

> 
> It seems like for drivers which _don't_ require pre-allocated memory
> regions then we should avoid calling blkio_alloc_mem_region which
> would avoid bounce buffers.
> 
> Some guidance about this would be appreciated.

The most efficient approach is to use blkio_alloc_mem_region() in the
core of your code so that no memory copies are necessary.

If that's not possible (e.g. the network code cannot easily use the
blkio buffer for NBD payloads), then a memory copy will be necessary.

Stefan
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 488 bytes
Desc: not available
URL: <http://listman.redhat.com/archives/libguestfs/attachments/20230111/e2e9521b/attachment.sig>


More information about the Libguestfs mailing list