From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:55742) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1aqcRH-0007RU-BX for qemu-devel@nongnu.org; Thu, 14 Apr 2016 04:15:48 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1aqcRG-0006lW-9k for qemu-devel@nongnu.org; Thu, 14 Apr 2016 04:15:47 -0400 Date: Thu, 14 Apr 2016 16:15:38 +0800 From: Fam Zheng Message-ID: <20160414081538.GA14598@ad.usersys.redhat.com> References: <1460538604-12132-1-git-send-email-famz@redhat.com> <1460538604-12132-8-git-send-email-famz@redhat.com> <570F4169.9040709@openvz.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <570F4169.9040709@openvz.org> Subject: Re: [Qemu-devel] [PATCH for-2.7 07/15] qemu-io: Add "-L" option for BDRV_O_NO_LOCK List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: "Denis V. Lunev" Cc: qemu-devel@nongnu.org, Kevin Wolf , Max Reitz , Jeff Cody , Markus Armbruster , Eric Blake , John Snow , qemu-block@nongnu.org, berrange@redhat.com, pbonzini@redhat.com 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 > >--- > > 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