On 9/20/19 9:04 AM, Martin Kletzander wrote: > On Fri, Sep 20, 2019 at 10:28:18AM +0100, Richard W.M. Jones wrote: >> The readahead filter is a self-configuring filter that makes >> sequential reads faster when the plugin is slow (and all of the >> plugins we use here are always slow). >>
>> @@ -133,9 +142,17 @@ let common_create plugin_name plugin_args >> plugin_env = >> if have_selinux then ( (* label the socket so qemu can open >> it *) >> add_arg "--selinux-label"; add_arg >> "system_u:object_r:svirt_socket_t:s0" >> ); >> + >> + (* Adding the readahead filter is always a win for our access >> + * patterns. However if it doesn't exist don't worry. >> + *) >> + if Sys.file_exists (filterdir // "nbdkit-readahead-filter.so") then ( >> + add_arg "--filter"; add_arg "readahead" > > Just out of curiosity, wouldn't it be cleaner, at least in the future, > to add an > option in nbdkit to report filters it can load? Of course it would require > newer nbdkit in the long run. > Checking for file existence for filters is somewhat less fragile than for plugins, because all filters are built in-tree (we've specifically documented that we don't provide ABI guarantees for filters, so the only sane way to use a filter is to compile it at the same time/version as the nbdkit binary that will load it). But you do have a point that checking for files is still more fragile than just asking nbdkit whether a given filter exists: $ nbdkit --dump-plugin --filter=nosuch null nbdkit: error: cannot open filter 'nosuch': /usr/lib64/nbdkit/filters/nbdkit-nosuch-filter.so: cannot open shared object file: No such file or directory $ echo $? 1 $ nbdkit --dump-plugin --filter=cache null path=/usr/lib64/nbdkit/plugins/nbdkit-null-plugin.so name=null ... $ echo $? 0 Similarly for --help. But notice: $ diff -u <(nbdkit --dump-plugin --filter=cache null) \ <(nbdkit --dump-plugin null) $ diff -u <(nbdkit --help --filter=cache null) <(nbdkit --help null) --- /dev/fd/63 2019-09-20 09:31:43.184428823 -0500 +++ /dev/fd/62 2019-09-20 09:31:43.185428824 -0500 @@ -23,15 +23,6 @@ Please read the nbdkit(1) manual page for full usage. -filter: cache (nbdkit caching filter) -(/usr/lib64/nbdkit/filters/nbdkit-cache-filter.so) -cache=MODE Set cache MODE, one of writeback (default), - writethrough, or unsafe. -cache-on-read=BOOL Set to true to cache on reads (default false). -cache-max-size=SIZE Set maximum space used by cache. -cache-high-threshold=PCT Percentage of max size where reclaim begins. -cache-low-threshold=PCT Percentage of max size where reclaim ends. - plugin: null (/usr/lib64/nbdkit/plugins/nbdkit-null-plugin.so) size=<SIZE> Size of the backing disk So we could probably improve --dump-plugin to ALSO show details about the filter (such as a second path=), the way --help does, or even add a 'nbdkit --dump-filter filtername' to work in isolation. But while you'd have to wait for a future nbdkit release to get more details from --dump-plugin, and/or a way to list all available filters (think search permissions on a directory), you already have a way with current nbdkit to check existence of a filter (think read permissions on a directory). -- Eric Blake, Principal Software Engineer Red Hat, Inc. +1-919-301-3226 Virtualization: qemu.org | libvirt.org
signature.asc
Description: OpenPGP digital signature
_______________________________________________ Libguestfs mailing list Libguestfs@redhat.com https://www.redhat.com/mailman/listinfo/libguestfs