[Libguestfs] [PATCH nbdkit v2 5/6] New plugin: ones
Eric Blake
eblake at redhat.com
Thu May 18 16:12:02 UTC 2023
On Wed, May 17, 2023 at 11:06:58AM +0100, Richard W.M. Jones wrote:
> Returns a fully allocated disk containing all 0xff (all ones), or
> another byte of your choice.
> ---
> plugins/data/nbdkit-data-plugin.pod | 1 +
> plugins/full/nbdkit-full-plugin.pod | 1 +
> plugins/null/nbdkit-null-plugin.pod | 1 +
> plugins/ones/nbdkit-ones-plugin.pod | 77 +++++++
> plugins/pattern/nbdkit-pattern-plugin.pod | 4 +-
> plugins/random/nbdkit-random-plugin.pod | 1 +
> .../nbdkit-sparse-random-plugin.pod | 1 +
> plugins/zero/nbdkit-zero-plugin.pod | 1 +
> configure.ac | 2 +
> plugins/ones/Makefile.am | 70 +++++++
> tests/Makefile.am | 4 +
> plugins/ones/ones.c | 191 ++++++++++++++++++
> tests/test-ones.sh | 53 +++++
> 13 files changed, 406 insertions(+), 1 deletion(-)
>
> +++ b/plugins/ones/ones.c
> @@ -0,0 +1,191 @@
> +
> +/* Write zeroes. */
> +static int
> +ones_zero (void *handle, uint32_t count, uint64_t offset, uint32_t flags)
> +{
> + /* nothing */
> + return 0;
> +}
Since writing zeroes is a no-op...
> +static struct nbdkit_plugin plugin = {
> + .name = "ones",
> + .version = PACKAGE_VERSION,
> + .config = ones_config,
> + .config_help = ones_config_help,
> + .magic_config_key = "size",
> + .open = ones_open,
> + .get_size = ones_get_size,
> + .can_multi_conn = ones_can_multi_conn,
> + .can_cache = ones_can_cache,
> + .pread = ones_pread,
> + .pwrite = ones_pwrite,
> + .zero = ones_zero,
> + .trim = ones_trim,
> + .can_fua = ones_can_fua,
> + .flush = ones_flush,
> + .extents = ones_extents,
> + /* In this plugin, errno is preserved properly along error return
> + * paths from failed system calls.
> + */
> + .errno_is_preserved = 1,
> +};
...we probably also want to supply .can_fast_zero with a function that
returns true.
--
Eric Blake, Principal Software Engineer
Red Hat, Inc. +1-919-301-3266
Virtualization: qemu.org | libvirt.org
More information about the Libguestfs
mailing list