mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-04 00:03:54 -06:00
Add a parameter to disable host cache, by Laurent Vivier.
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@4836 c046a42c-6fe2-441c-8c8c-71466251a162
This commit is contained in:
parent
23fb600b87
commit
2f7264888a
6 changed files with 40 additions and 24 deletions
22
qemu-nbd.c
22
qemu-nbd.c
|
@ -34,6 +34,8 @@
|
|||
|
||||
#define SOCKET_PATH "/var/lock/qemu-nbd-%s"
|
||||
|
||||
#define NBD_BUFFER_SIZE (1024*1024)
|
||||
|
||||
int verbose;
|
||||
|
||||
static void usage(const char *name)
|
||||
|
@ -49,6 +51,8 @@ static void usage(const char *name)
|
|||
" (default '"SOCKET_PATH"')\n"
|
||||
" -r, --read-only export read-only\n"
|
||||
" -P, --partition=NUM only expose partition NUM\n"
|
||||
" -s, --snapshot use snapshot file\n"
|
||||
" -n, --nocache disable host cache\n"
|
||||
" -c, --connect=DEV connect FILE to the local NBD device DEV\n"
|
||||
" -d, --disconnect disconnect the specified device\n"
|
||||
" -v, --verbose display extra debugging information\n"
|
||||
|
@ -185,7 +189,7 @@ int main(int argc, char **argv)
|
|||
char *device = NULL;
|
||||
char *socket = NULL;
|
||||
char sockpath[128];
|
||||
const char *sopt = "hVbo:p:rsP:c:dvk:";
|
||||
const char *sopt = "hVbo:p:rsnP:c:dvk:";
|
||||
struct option lopt[] = {
|
||||
{ "help", 0, 0, 'h' },
|
||||
{ "version", 0, 0, 'V' },
|
||||
|
@ -198,6 +202,7 @@ int main(int argc, char **argv)
|
|||
{ "connect", 1, 0, 'c' },
|
||||
{ "disconnect", 0, 0, 'd' },
|
||||
{ "snapshot", 0, 0, 's' },
|
||||
{ "nocache", 0, 0, 'n' },
|
||||
{ "verbose", 0, 0, 'v' },
|
||||
{ NULL, 0, 0, 0 }
|
||||
};
|
||||
|
@ -205,15 +210,19 @@ int main(int argc, char **argv)
|
|||
int opt_ind = 0;
|
||||
int li;
|
||||
char *end;
|
||||
bool snapshot = false;
|
||||
int flags = 0;
|
||||
int partition = -1;
|
||||
int fd;
|
||||
int ret;
|
||||
uint8_t *data;
|
||||
|
||||
while ((ch = getopt_long(argc, argv, sopt, lopt, &opt_ind)) != -1) {
|
||||
switch (ch) {
|
||||
case 's':
|
||||
snapshot = true;
|
||||
flags |= BDRV_O_SNAPSHOT;
|
||||
break;
|
||||
case 'n':
|
||||
flags |= BDRV_O_DIRECT;
|
||||
break;
|
||||
case 'b':
|
||||
bindto = optarg;
|
||||
|
@ -301,7 +310,7 @@ int main(int argc, char **argv)
|
|||
if (bs == NULL)
|
||||
return 1;
|
||||
|
||||
if (bdrv_open(bs, argv[optind], snapshot) == -1)
|
||||
if (bdrv_open(bs, argv[optind], flags) == -1)
|
||||
return 1;
|
||||
|
||||
fd_size = bs->total_sectors * 512;
|
||||
|
@ -394,7 +403,10 @@ int main(int argc, char **argv)
|
|||
if (nbd_negotiate(bs, csock, fd_size) == -1)
|
||||
return 1;
|
||||
|
||||
while (nbd_trip(bs, csock, fd_size, dev_offset, &offset, readonly) == 0);
|
||||
data = qemu_memalign(512, NBD_BUFFER_SIZE);
|
||||
while (nbd_trip(bs, csock, fd_size, dev_offset, &offset, readonly,
|
||||
data, NBD_BUFFER_SIZE) == 0);
|
||||
qemu_free(data);
|
||||
|
||||
close(csock);
|
||||
close(sock);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue