Commit ded9d2d5 authored by Paolo Bonzini's avatar Paolo Bonzini Committed by Kevin Wolf
Browse files

qemu-nbd: add --discard option



Similar to --cache and --aio, this option mimics the discard suboption
of "-drive".

Signed-off-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
Signed-off-by: default avatarKevin Wolf <kwolf@redhat.com>
parent a9384aff
Loading
Loading
Loading
Loading
+15 −3
Original line number Diff line number Diff line
@@ -36,6 +36,7 @@
#define SOCKET_PATH          "/var/lock/qemu-nbd-%s"
#define QEMU_NBD_OPT_CACHE   1
#define QEMU_NBD_OPT_AIO     2
#define QEMU_NBD_OPT_DISCARD 3

static NBDExport *exp;
static int verbose;
@@ -330,6 +331,7 @@ int main(int argc, char **argv)
#ifdef CONFIG_LINUX_AIO
        { "aio", 1, NULL, QEMU_NBD_OPT_AIO },
#endif
        { "discard", 1, NULL, QEMU_NBD_OPT_DISCARD },
        { "shared", 1, NULL, 'e' },
        { "persistent", 0, NULL, 't' },
        { "verbose", 0, NULL, 'v' },
@@ -344,6 +346,7 @@ int main(int argc, char **argv)
    int ret;
    int fd;
    bool seen_cache = false;
    bool seen_discard = false;
#ifdef CONFIG_LINUX_AIO
    bool seen_aio = false;
#endif
@@ -389,6 +392,15 @@ int main(int argc, char **argv)
            }
            break;
#endif
        case QEMU_NBD_OPT_DISCARD:
            if (seen_discard) {
                errx(EXIT_FAILURE, "--discard can only be specified once");
            }
            seen_discard = true;
            if (bdrv_parse_discard_flags(optarg, &flags) == -1) {
                errx(EXIT_FAILURE, "Invalid discard mode `%s'", optarg);
            }
            break;
        case 'b':
            bindto = optarg;
            break;
+4 −0
Original line number Diff line number Diff line
@@ -35,6 +35,10 @@ Export QEMU disk image using NBD protocol.
@item --aio=@var{aio}
  choose asynchronous I/O mode between @samp{threads} (the default)
  and @samp{native} (Linux only).
@item --discard=@var{discard}
  toggles whether @dfn{discard} (also known as @dfn{trim} or @dfn{unmap})
  requests are ignored or passed to the filesystem.  The default is no
  (@samp{--discard=ignore}).
@item -c, --connect=@var{dev}
  connect @var{filename} to NBD device @var{dev}
@item -d, --disconnect