[Libguestfs] [PATCH] format, make-fs: specify the label on mkfs
Richard W.M. Jones
rjones at redhat.com
Mon Jan 19 14:43:07 UTC 2015
On Tue, Jan 13, 2015 at 10:38:10AM +0100, Pino Toscano wrote:
> If specified, pass the label for the new filesystem directly to the
> mkfs (or mkfs_btrfs) call.
>
> This saves one set_label call, mostly.
> ---
> format/format.c | 10 ++++++----
> make-fs/make-fs.c | 28 +++++++++++++++++-----------
> 2 files changed, 23 insertions(+), 15 deletions(-)
>
> diff --git a/format/format.c b/format/format.c
> index 4e6069f..cc371ab 100644
> --- a/format/format.c
> +++ b/format/format.c
> @@ -434,13 +434,15 @@ do_format (void)
> }
>
> if (filesystem) {
> - if (guestfs_mkfs_opts (g, filesystem, dev, -1) == -1)
> - exit (EXIT_FAILURE);
> + struct guestfs_mkfs_opts_argv optargs = { .bitmask = 0 };
>
> if (label) {
> - if (guestfs_set_label (g, dev, label) == -1)
> - exit (EXIT_FAILURE);
> + optargs.label = label;
> + optargs.bitmask |= GUESTFS_MKFS_OPTS_LABEL_BITMASK;
> }
> +
> + if (guestfs_mkfs_opts_argv (g, filesystem, dev, &optargs) == -1)
> + exit (EXIT_FAILURE);
>
> if (free_dev)
> diff --git a/make-fs/make-fs.c b/make-fs/make-fs.c
> index 841c202..14729ad 100644
> --- a/make-fs/make-fs.c
> +++ b/make-fs/make-fs.c
> @@ -755,9 +755,15 @@ do_make_fs (const char *input, const char *output_str)
> /* Create the filesystem. */
> if (STRNEQ (type, "btrfs")) {
> int r;
> + struct guestfs_mkfs_opts_argv optargs = { .bitmask = 0 };
> +
> + if (label) {
> + optargs.label = label;
> + optargs.bitmask |= GUESTFS_MKFS_OPTS_LABEL_BITMASK;
> + }
>
> guestfs_push_error_handler (g, NULL, NULL);
> - r = guestfs_mkfs (g, type, dev);
> + r = guestfs_mkfs_opts_argv (g, type, dev, &optargs);
> guestfs_pop_error_handler (g);
>
> if (r == -1) {
> @@ -774,17 +780,17 @@ do_make_fs (const char *input, const char *output_str)
> }
> else {
> const char *devs[] = { dev, NULL };
> + struct guestfs_mkfs_btrfs_argv optargs = { .bitmask = 0 };
> +
> + optargs.datatype = "single";
> + optargs.metadata = "single";
> + optargs.bitmask |= GUESTFS_MKFS_BTRFS_DATATYPE_BITMASK | GUESTFS_MKFS_BTRFS_METADATA_BITMASK;
> + if (label) {
> + optargs.label = label;
> + optargs.bitmask |= GUESTFS_MKFS_BTRFS_LABEL_BITMASK;
> + }
>
> - if (guestfs_mkfs_btrfs (g, (char **) devs,
> - GUESTFS_MKFS_BTRFS_DATATYPE, "single",
> - GUESTFS_MKFS_BTRFS_METADATA, "single",
> - -1) == -1)
> - return -1;
> - }
> -
> - /* Set label. */
> - if (label) {
> - if (guestfs_set_label (g, dev, label) == -1)
> + if (guestfs_mkfs_btrfs_argv (g, (char **) devs, &optargs) == -1)
> return -1;
> }
>
> --
> 1.9.3
ACK.
Rich.
--
Richard Jones, Virtualization Group, Red Hat http://people.redhat.com/~rjones
Read my programming and virtualization blog: http://rwmj.wordpress.com
virt-top is 'top' for virtual machines. Tiny program with many
powerful monitoring features, net stats, disk stats, logging, etc.
http://people.redhat.com/~rjones/virt-top
More information about the Libguestfs
mailing list