On Mon, May 02, 2022 at 10:25:44AM +0100, Nikolaus Rath wrote: > Hi, > > Is there a way for a nbdkit plugin to *require* use of a nbdkit filter > (specifically the nbdkit-blocksize-filter) programmatically?
At present, no. What are you envisioning - enforcing that the plugin doesn't want to deal with sub-sector offsets and lengths? Is there any other filter that would be useful to require, or can we focus more on the question about insisting on aligned requests? Also, is your plugin mostly worried about enforcement of minimum block size (for example, no requests smaller than 512-byte alignment, which the blocksize filter gives with read-modify-write), or is it also worried about other features that the blocksize filter can add (such as splitting larger requests)? The best you can do in the current code is provide the .block_size callback to at least inform modern NBD clients about your preferences (libnbd defaults to refusing to send requests over the wire that don't obey the server's advertised constraints). I did ask the question when we first added .block_size whether we should also provide a way for plugins to request the internal nbdkit server code to enforce limits (use of the nbdkit-blocksize-filter with read-modify-write is one way to obey underlying limits; but another way is to just up-front fail unaligned requests rather than passing them into the plugin). We could either do this by enhancing the existing .block_size() function to add in a special return value to insist on strict enforcement (right now, we only document returning -1 on error and 0 when successfully populating limits; we could add a documented return of 1), or by adding yet another callback (for example, if .strict_block_size is absent or returns 0, .block_size values are advisory to the client, but unaligned values reach the plugin; if .strict_block_size returns 1, .block_size values are enforced by nbdkit before reaching the plugin). Thoughts about that approach? -- Eric Blake, Principal Software Engineer Red Hat, Inc. +1-919-301-3266 Virtualization: qemu.org | libvirt.org _______________________________________________ Libguestfs mailing list [email protected] https://listman.redhat.com/mailman/listinfo/libguestfs
