[libvirt PATCH v2 03/16] qemu: expand nbdkit capabilities

Peter Krempa pkrempa at redhat.com
Mon Sep 19 14:18:20 UTC 2022


On Wed, Aug 31, 2022 at 13:40:48 -0500, Jonathon Jongsma wrote:
> In order to add caching of the nbdkit capabilities, we will need to
> compare against file modification times, etc. So look up this
> information when creating the nbdkit caps.
> 
> Add a nbdkit_moddir build option to allow the builder to specify the
> location to look for nbdkit plugins and filters.
> 
> Signed-off-by: Jonathon Jongsma <jjongsma at redhat.com>
> ---
>  meson.build            |  6 ++++++
>  meson_options.txt      |  1 +
>  src/qemu/qemu_nbdkit.c | 39 +++++++++++++++++++++++++++++++++++++++
>  3 files changed, 46 insertions(+)


> @@ -177,9 +185,40 @@ qemuNbdkitCapsNew(const char *path)
>  }
>  
>  
> +static time_t
> +getDirMtime(const char *moddir)

Missing file prefix in function name.

> +{
> +    struct stat st;
> +
> +    if (stat(moddir, &st) < 0) {
> +        VIR_DEBUG("Failed to stat nbdkit module directory '%s': %s",
> +                  moddir,
> +                  g_strerror(errno));
> +        return 0;
> +    }
> +
> +    return st.st_mtime;
> +}
> +
> +
>  static void
>  qemuNbdkitCapsQuery(qemuNbdkitCaps *caps)
>  {
> +    struct stat st;
> +
> +    if (stat(caps->path, &st) < 0) {
> +        VIR_DEBUG("Failed to stat nbdkit binary '%s': %s",
> +                  caps->path,
> +                  g_strerror(errno));
> +        caps->ctime  = 0;

So does attempting to query the capabilities make sense after this
point?

> +    } else  {
> +        caps->ctime = st.st_ctime;
> +    }
> +    caps->filterDirMtime = getDirMtime(NBDKIT_FILTERDIR);
> +    caps->pluginDirMtime = getDirMtime(NBDKIT_PLUGINDIR);
> +    caps->libvirtCtime = virGetSelfLastChanged();
> +    caps->libvirtVersion = LIBVIR_VERSION_NUMBER;
> +
>      qemuNbdkitCapsQueryPlugins(caps);
>      qemuNbdkitCapsQueryFilters(caps);
>      qemuNbdkitCapsQueryVersion(caps);
> -- 
> 2.37.1
> 


More information about the libvir-list mailing list