diff options
Diffstat (limited to 'tools/blktap/drivers/qcow-create.c')
-rw-r--r-- | tools/blktap/drivers/qcow-create.c | 24 |
1 files changed, 17 insertions, 7 deletions
diff --git a/tools/blktap/drivers/qcow-create.c b/tools/blktap/drivers/qcow-create.c index 5ff50648a8..25abfcd1d4 100644 --- a/tools/blktap/drivers/qcow-create.c +++ b/tools/blktap/drivers/qcow-create.c @@ -52,7 +52,7 @@ static void help(void) { fprintf(stderr, "Qcow-utils: v1.0.0\n"); fprintf(stderr, - "usage: qcow-create [-h help] [-r reserve] <SIZE(MB)> <FILENAME> " + "usage: qcow-create [-h help] [-r reserve] [-f format] <SIZE(MB)> <FILENAME> " "[<BACKING_FILENAME>]\n"); exit(-1); } @@ -61,11 +61,13 @@ int main(int argc, char *argv[]) { int ret = -1, c, backed = 0; int sparse = 1; + char *fmt = "qcow"; uint64_t size; char filename[MAX_NAME_LEN], bfilename[MAX_NAME_LEN]; + char *tmpfile; for(;;) { - c = getopt(argc, argv, "hr"); + c = getopt(argc, argv, "hrf"); if (c == -1) break; switch(c) { @@ -73,6 +75,9 @@ int main(int argc, char *argv[]) help(); exit(0); break; + case 'f': + fmt = argv[optind++]; + break; case 'r': sparse = 0; break; @@ -105,11 +110,16 @@ int main(int argc, char *argv[]) } } - DFPRINTF("Creating file size %llu, name %s\n",(long long unsigned)size, filename); - if (!backed) - ret = qcow_create(filename,size,NULL,sparse); - else - ret = qcow_create(filename,size,bfilename,sparse); + tmpfile = backed ? bfilename: NULL; + if (!strcmp(fmt, "qcow")) { + ret = qcow_create(filename, size, tmpfile, sparse); + } else if(!strcmp(fmt, "qcow2")) { + ret = qcow2_create(filename, size, tmpfile, sparse); + } else { + fprintf(stderr,"Unsupport format:%s\n", fmt); + exit(-1); + } + DFPRINTF("Creating file size %llu, name %s\n",(long long unsigned)size, filename); if (ret < 0) DPRINTF("Unable to create QCOW file\n"); |