qemu-nbd: add --discard option
Similar to --cache and --aio, this option mimics the discard suboption of "-drive". Signed-off-by: Paolo Bonzini <pbonzini@redhat.com> Signed-off-by: Kevin Wolf <kwolf@redhat.com>
This commit is contained in:
parent
a9384aff53
commit
ded9d2d5e2
18
qemu-nbd.c
18
qemu-nbd.c
@ -33,9 +33,10 @@
|
|||||||
#include <libgen.h>
|
#include <libgen.h>
|
||||||
#include <pthread.h>
|
#include <pthread.h>
|
||||||
|
|
||||||
#define SOCKET_PATH "/var/lock/qemu-nbd-%s"
|
#define SOCKET_PATH "/var/lock/qemu-nbd-%s"
|
||||||
#define QEMU_NBD_OPT_CACHE 1
|
#define QEMU_NBD_OPT_CACHE 1
|
||||||
#define QEMU_NBD_OPT_AIO 2
|
#define QEMU_NBD_OPT_AIO 2
|
||||||
|
#define QEMU_NBD_OPT_DISCARD 3
|
||||||
|
|
||||||
static NBDExport *exp;
|
static NBDExport *exp;
|
||||||
static int verbose;
|
static int verbose;
|
||||||
@ -330,6 +331,7 @@ int main(int argc, char **argv)
|
|||||||
#ifdef CONFIG_LINUX_AIO
|
#ifdef CONFIG_LINUX_AIO
|
||||||
{ "aio", 1, NULL, QEMU_NBD_OPT_AIO },
|
{ "aio", 1, NULL, QEMU_NBD_OPT_AIO },
|
||||||
#endif
|
#endif
|
||||||
|
{ "discard", 1, NULL, QEMU_NBD_OPT_DISCARD },
|
||||||
{ "shared", 1, NULL, 'e' },
|
{ "shared", 1, NULL, 'e' },
|
||||||
{ "persistent", 0, NULL, 't' },
|
{ "persistent", 0, NULL, 't' },
|
||||||
{ "verbose", 0, NULL, 'v' },
|
{ "verbose", 0, NULL, 'v' },
|
||||||
@ -344,6 +346,7 @@ int main(int argc, char **argv)
|
|||||||
int ret;
|
int ret;
|
||||||
int fd;
|
int fd;
|
||||||
bool seen_cache = false;
|
bool seen_cache = false;
|
||||||
|
bool seen_discard = false;
|
||||||
#ifdef CONFIG_LINUX_AIO
|
#ifdef CONFIG_LINUX_AIO
|
||||||
bool seen_aio = false;
|
bool seen_aio = false;
|
||||||
#endif
|
#endif
|
||||||
@ -389,6 +392,15 @@ int main(int argc, char **argv)
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
#endif
|
#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':
|
case 'b':
|
||||||
bindto = optarg;
|
bindto = optarg;
|
||||||
break;
|
break;
|
||||||
|
@ -35,6 +35,10 @@ Export QEMU disk image using NBD protocol.
|
|||||||
@item --aio=@var{aio}
|
@item --aio=@var{aio}
|
||||||
choose asynchronous I/O mode between @samp{threads} (the default)
|
choose asynchronous I/O mode between @samp{threads} (the default)
|
||||||
and @samp{native} (Linux only).
|
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}
|
@item -c, --connect=@var{dev}
|
||||||
connect @var{filename} to NBD device @var{dev}
|
connect @var{filename} to NBD device @var{dev}
|
||||||
@item -d, --disconnect
|
@item -d, --disconnect
|
||||||
|
Loading…
Reference in New Issue
Block a user