636192c4b6
Having to fire up qemu, then use QMP commands for nbd-server-start and nbd-server-add, just to expose a persistent dirty bitmap, is rather tedious. Make it possible to expose a dirty bitmap using just qemu-nbd (of course, for now this only works when qemu-nbd is visiting a BDS formatted as qcow2). Of course, any good feature also needs unit testing, so expand iotest 223 to cover it. Signed-off-by: Eric Blake <eblake@redhat.com> Message-Id: <20190111194720.15671-9-eblake@redhat.com>
127 lines
4.5 KiB
Plaintext
127 lines
4.5 KiB
Plaintext
@example
|
|
@c man begin SYNOPSIS
|
|
@command{qemu-nbd} [OPTION]... @var{filename}
|
|
|
|
@command{qemu-nbd} @option{-d} @var{dev}
|
|
@c man end
|
|
@end example
|
|
|
|
@c man begin DESCRIPTION
|
|
|
|
Export a QEMU disk image using the NBD protocol.
|
|
|
|
@c man end
|
|
|
|
@c man begin OPTIONS
|
|
@var{filename} is a disk image filename, or a set of block
|
|
driver options if @var{--image-opts} is specified.
|
|
|
|
@var{dev} is an NBD device.
|
|
|
|
@table @option
|
|
@item --object type,id=@var{id},...props...
|
|
Define a new instance of the @var{type} object class identified by @var{id}.
|
|
See the @code{qemu(1)} manual page for full details of the properties
|
|
supported. The common object types that it makes sense to define are the
|
|
@code{secret} object, which is used to supply passwords and/or encryption
|
|
keys, and the @code{tls-creds} object, which is used to supply TLS
|
|
credentials for the qemu-nbd server.
|
|
@item -p, --port=@var{port}
|
|
The TCP port to listen on (default @samp{10809})
|
|
@item -o, --offset=@var{offset}
|
|
The offset into the image
|
|
@item -b, --bind=@var{iface}
|
|
The interface to bind to (default @samp{0.0.0.0})
|
|
@item -k, --socket=@var{path}
|
|
Use a unix socket with path @var{path}
|
|
@item --image-opts
|
|
Treat @var{filename} as a set of image options, instead of a plain
|
|
filename. If this flag is specified, the @var{-f} flag should
|
|
not be used, instead the '@code{format=}' option should be set.
|
|
@item -f, --format=@var{fmt}
|
|
Force the use of the block driver for format @var{fmt} instead of
|
|
auto-detecting
|
|
@item -r, --read-only
|
|
Export the disk as read-only
|
|
@item -P, --partition=@var{num}
|
|
Only expose partition @var{num}
|
|
@item -B, --bitmap=@var{name}
|
|
If @var{filename} has a qcow2 persistent bitmap @var{name}, expose
|
|
that bitmap via the ``qemu:dirty-bitmap:@var{name}'' context
|
|
accessible through NBD_OPT_SET_META_CONTEXT.
|
|
@item -s, --snapshot
|
|
Use @var{filename} as an external snapshot, create a temporary
|
|
file with backing_file=@var{filename}, redirect the write to
|
|
the temporary one
|
|
@item -l, --load-snapshot=@var{snapshot_param}
|
|
Load an internal snapshot inside @var{filename} and export it
|
|
as an read-only device, @var{snapshot_param} format is
|
|
'snapshot.id=[ID],snapshot.name=[NAME]' or '[ID_OR_NAME]'
|
|
@item -n, --nocache
|
|
@itemx --cache=@var{cache}
|
|
The cache mode to be used with the file. See the documentation of
|
|
the emulator's @code{-drive cache=...} option for allowed values.
|
|
@item --aio=@var{aio}
|
|
Set the asynchronous I/O mode between @samp{threads} (the default)
|
|
and @samp{native} (Linux only).
|
|
@item --discard=@var{discard}
|
|
Control whether @dfn{discard} (also known as @dfn{trim} or @dfn{unmap})
|
|
requests are ignored or passed to the filesystem. @var{discard} is one of
|
|
@samp{ignore} (or @samp{off}), @samp{unmap} (or @samp{on}). The default is
|
|
@samp{ignore}.
|
|
@item --detect-zeroes=@var{detect-zeroes}
|
|
Control the automatic conversion of plain zero writes by the OS to
|
|
driver-specific optimized zero write commands. @var{detect-zeroes} is one of
|
|
@samp{off}, @samp{on} or @samp{unmap}. @samp{unmap}
|
|
converts a zero write to an unmap operation and can only be used if
|
|
@var{discard} is set to @samp{unmap}. The default is @samp{off}.
|
|
@item -c, --connect=@var{dev}
|
|
Connect @var{filename} to NBD device @var{dev}
|
|
@item -d, --disconnect
|
|
Disconnect the device @var{dev}
|
|
@item -e, --shared=@var{num}
|
|
Allow up to @var{num} clients to share the device (default @samp{1})
|
|
@item -t, --persistent
|
|
Don't exit on the last connection
|
|
@item -x, --export-name=@var{name}
|
|
Set the NBD volume export name. This switches the server to use
|
|
the new style NBD protocol negotiation
|
|
@item -D, --description=@var{description}
|
|
Set the NBD volume export description, as a human-readable
|
|
string. Requires the use of @option{-x}
|
|
@item --tls-creds=ID
|
|
Enable mandatory TLS encryption for the server by setting the ID
|
|
of the TLS credentials object previously created with the --object
|
|
option.
|
|
@item --fork
|
|
Fork off the server process and exit the parent once the server is running.
|
|
@item -v, --verbose
|
|
Display extra debugging information
|
|
@item -h, --help
|
|
Display this help and exit
|
|
@item -V, --version
|
|
Display version information and exit
|
|
@item -T, --trace [[enable=]@var{pattern}][,events=@var{file}][,file=@var{file}]
|
|
@findex --trace
|
|
@include qemu-option-trace.texi
|
|
@end table
|
|
|
|
@c man end
|
|
|
|
@ignore
|
|
|
|
@setfilename qemu-nbd
|
|
@settitle QEMU Disk Network Block Device Server
|
|
|
|
@c man begin AUTHOR
|
|
Copyright (C) 2006 Anthony Liguori <anthony@codemonkey.ws>.
|
|
This is free software; see the source for copying conditions. There is NO
|
|
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
|
@c man end
|
|
|
|
@c man begin SEEALSO
|
|
qemu(1), qemu-img(1)
|
|
@c man end
|
|
|
|
@end ignore
|