Message ID | 1460538604-12132-8-git-send-email-famz@redhat.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
On 04/13/2016 12:09 PM, Fam Zheng wrote: > Signed-off-by: Fam Zheng <famz@redhat.com> > --- > qemu-io.c | 22 ++++++++++++++++++++-- > 1 file changed, 20 insertions(+), 2 deletions(-) > > diff --git a/qemu-io.c b/qemu-io.c > index 288bba8..6bb6232 100644 > --- a/qemu-io.c > +++ b/qemu-io.c > @@ -107,6 +107,7 @@ static void open_help(void) > " -r, -- open file read-only\n" > " -s, -- use snapshot file\n" > " -n, -- disable host cache\n" > +" -L, -- disable image lock\n" > " -o, -- options to be given to the block driver" > "\n"); > } > @@ -139,12 +140,13 @@ static int open_f(BlockBackend *blk, int argc, char **argv) > { > int flags = 0; > int readonly = 0; > + int nolock = 0; > bool writethrough = true; > int c; > QemuOpts *qopts; > QDict *opts; > > - while ((c = getopt(argc, argv, "snrgo:")) != -1) { > + while ((c = getopt(argc, argv, "snrgLo:")) != -1) { > switch (c) { > case 's': > flags |= BDRV_O_SNAPSHOT; > @@ -156,6 +158,9 @@ static int open_f(BlockBackend *blk, int argc, char **argv) > case 'r': > readonly = 1; > break; > + case 'L': > + nolock = 1; > + break; > case 'o': > if (imageOpts) { > printf("--image-opts and 'open -o' are mutually exclusive\n"); > @@ -176,6 +181,10 @@ static int open_f(BlockBackend *blk, int argc, char **argv) > flags |= BDRV_O_RDWR; > } > > + if (nolock) { > + flags |= BDRV_O_NO_LOCK; > + } > + > if (imageOpts && (optind == argc - 1)) { > if (!qemu_opts_parse_noisily(&empty_opts, argv[optind], false)) { > qemu_opts_reset(&empty_opts); > @@ -410,7 +419,8 @@ static QemuOptsList file_opts = { > int main(int argc, char **argv) > { > int readonly = 0; > - const char *sopt = "hVc:d:f:rsnmgkt:T:"; > + int nolock = 0; > + const char *sopt = "hVc:d:f:rLsnmgkt:T:"; > const struct option lopt[] = { > { "help", no_argument, NULL, 'h' }, > { "version", no_argument, NULL, 'V' }, > @@ -418,6 +428,7 @@ int main(int argc, char **argv) > { "cmd", required_argument, NULL, 'c' }, > { "format", required_argument, NULL, 'f' }, > { "read-only", no_argument, NULL, 'r' }, > + { "no-lock", no_argument, NULL, 'L' }, > { "snapshot", no_argument, NULL, 's' }, > { "nocache", no_argument, NULL, 'n' }, > { "misalign", no_argument, NULL, 'm' }, > @@ -477,6 +488,9 @@ int main(int argc, char **argv) > case 'r': > readonly = 1; > break; > + case 'L': > + nolock = 1; > + break; > case 'm': > qemuio_misalign = true; > break; > @@ -558,6 +572,10 @@ int main(int argc, char **argv) > flags |= BDRV_O_RDWR; > } > > + if (nolock) { > + flags |= BDRV_O_NO_LOCK; > + } > + > if ((argc - optind) == 1) { > if (imageOpts) { > QemuOpts *qopts = NULL; I think that we should do the same for qemu-img. There are some operations like 'qemu-img info' which are widely used to query f.e. block size of the image. Den
On Thu, 04/14 10:06, Denis V. Lunev wrote: > On 04/13/2016 12:09 PM, Fam Zheng wrote: > >Signed-off-by: Fam Zheng <famz@redhat.com> > >--- > > qemu-io.c | 22 ++++++++++++++++++++-- > > 1 file changed, 20 insertions(+), 2 deletions(-) > > > >diff --git a/qemu-io.c b/qemu-io.c > >index 288bba8..6bb6232 100644 > >--- a/qemu-io.c > >+++ b/qemu-io.c > >@@ -107,6 +107,7 @@ static void open_help(void) > > " -r, -- open file read-only\n" > > " -s, -- use snapshot file\n" > > " -n, -- disable host cache\n" > >+" -L, -- disable image lock\n" > > " -o, -- options to be given to the block driver" > > "\n"); > > } > >@@ -139,12 +140,13 @@ static int open_f(BlockBackend *blk, int argc, char **argv) > > { > > int flags = 0; > > int readonly = 0; > >+ int nolock = 0; > > bool writethrough = true; > > int c; > > QemuOpts *qopts; > > QDict *opts; > >- while ((c = getopt(argc, argv, "snrgo:")) != -1) { > >+ while ((c = getopt(argc, argv, "snrgLo:")) != -1) { > > switch (c) { > > case 's': > > flags |= BDRV_O_SNAPSHOT; > >@@ -156,6 +158,9 @@ static int open_f(BlockBackend *blk, int argc, char **argv) > > case 'r': > > readonly = 1; > > break; > >+ case 'L': > >+ nolock = 1; > >+ break; > > case 'o': > > if (imageOpts) { > > printf("--image-opts and 'open -o' are mutually exclusive\n"); > >@@ -176,6 +181,10 @@ static int open_f(BlockBackend *blk, int argc, char **argv) > > flags |= BDRV_O_RDWR; > > } > >+ if (nolock) { > >+ flags |= BDRV_O_NO_LOCK; > >+ } > >+ > > if (imageOpts && (optind == argc - 1)) { > > if (!qemu_opts_parse_noisily(&empty_opts, argv[optind], false)) { > > qemu_opts_reset(&empty_opts); > >@@ -410,7 +419,8 @@ static QemuOptsList file_opts = { > > int main(int argc, char **argv) > > { > > int readonly = 0; > >- const char *sopt = "hVc:d:f:rsnmgkt:T:"; > >+ int nolock = 0; > >+ const char *sopt = "hVc:d:f:rLsnmgkt:T:"; > > const struct option lopt[] = { > > { "help", no_argument, NULL, 'h' }, > > { "version", no_argument, NULL, 'V' }, > >@@ -418,6 +428,7 @@ int main(int argc, char **argv) > > { "cmd", required_argument, NULL, 'c' }, > > { "format", required_argument, NULL, 'f' }, > > { "read-only", no_argument, NULL, 'r' }, > >+ { "no-lock", no_argument, NULL, 'L' }, > > { "snapshot", no_argument, NULL, 's' }, > > { "nocache", no_argument, NULL, 'n' }, > > { "misalign", no_argument, NULL, 'm' }, > >@@ -477,6 +488,9 @@ int main(int argc, char **argv) > > case 'r': > > readonly = 1; > > break; > >+ case 'L': > >+ nolock = 1; > >+ break; > > case 'm': > > qemuio_misalign = true; > > break; > >@@ -558,6 +572,10 @@ int main(int argc, char **argv) > > flags |= BDRV_O_RDWR; > > } > >+ if (nolock) { > >+ flags |= BDRV_O_NO_LOCK; > >+ } > >+ > > if ((argc - optind) == 1) { > > if (imageOpts) { > > QemuOpts *qopts = NULL; > I think that we should do the same for qemu-img. > > There are some operations like 'qemu-img info' which > are widely used to query f.e. block size of the image. Yes, I can extend this series to add "nolock" option to qemu-img sub commands. Fam
diff --git a/qemu-io.c b/qemu-io.c index 288bba8..6bb6232 100644 --- a/qemu-io.c +++ b/qemu-io.c @@ -107,6 +107,7 @@ static void open_help(void) " -r, -- open file read-only\n" " -s, -- use snapshot file\n" " -n, -- disable host cache\n" +" -L, -- disable image lock\n" " -o, -- options to be given to the block driver" "\n"); } @@ -139,12 +140,13 @@ static int open_f(BlockBackend *blk, int argc, char **argv) { int flags = 0; int readonly = 0; + int nolock = 0; bool writethrough = true; int c; QemuOpts *qopts; QDict *opts; - while ((c = getopt(argc, argv, "snrgo:")) != -1) { + while ((c = getopt(argc, argv, "snrgLo:")) != -1) { switch (c) { case 's': flags |= BDRV_O_SNAPSHOT; @@ -156,6 +158,9 @@ static int open_f(BlockBackend *blk, int argc, char **argv) case 'r': readonly = 1; break; + case 'L': + nolock = 1; + break; case 'o': if (imageOpts) { printf("--image-opts and 'open -o' are mutually exclusive\n"); @@ -176,6 +181,10 @@ static int open_f(BlockBackend *blk, int argc, char **argv) flags |= BDRV_O_RDWR; } + if (nolock) { + flags |= BDRV_O_NO_LOCK; + } + if (imageOpts && (optind == argc - 1)) { if (!qemu_opts_parse_noisily(&empty_opts, argv[optind], false)) { qemu_opts_reset(&empty_opts); @@ -410,7 +419,8 @@ static QemuOptsList file_opts = { int main(int argc, char **argv) { int readonly = 0; - const char *sopt = "hVc:d:f:rsnmgkt:T:"; + int nolock = 0; + const char *sopt = "hVc:d:f:rLsnmgkt:T:"; const struct option lopt[] = { { "help", no_argument, NULL, 'h' }, { "version", no_argument, NULL, 'V' }, @@ -418,6 +428,7 @@ int main(int argc, char **argv) { "cmd", required_argument, NULL, 'c' }, { "format", required_argument, NULL, 'f' }, { "read-only", no_argument, NULL, 'r' }, + { "no-lock", no_argument, NULL, 'L' }, { "snapshot", no_argument, NULL, 's' }, { "nocache", no_argument, NULL, 'n' }, { "misalign", no_argument, NULL, 'm' }, @@ -477,6 +488,9 @@ int main(int argc, char **argv) case 'r': readonly = 1; break; + case 'L': + nolock = 1; + break; case 'm': qemuio_misalign = true; break; @@ -558,6 +572,10 @@ int main(int argc, char **argv) flags |= BDRV_O_RDWR; } + if (nolock) { + flags |= BDRV_O_NO_LOCK; + } + if ((argc - optind) == 1) { if (imageOpts) { QemuOpts *qopts = NULL;
Signed-off-by: Fam Zheng <famz@redhat.com> --- qemu-io.c | 22 ++++++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-)