From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:39336) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1aqbMF-0001zr-Pq for qemu-devel@nongnu.org; Thu, 14 Apr 2016 03:06:32 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1aqbME-0004eg-Oo for qemu-devel@nongnu.org; Thu, 14 Apr 2016 03:06:31 -0400 References: <1460538604-12132-1-git-send-email-famz@redhat.com> <1460538604-12132-8-git-send-email-famz@redhat.com> From: "Denis V. Lunev" Message-ID: <570F4169.9040709@openvz.org> Date: Thu, 14 Apr 2016 10:06:17 +0300 MIME-Version: 1.0 In-Reply-To: <1460538604-12132-8-git-send-email-famz@redhat.com> Content-Type: text/plain; charset="windows-1252"; format=flowed Content-Transfer-Encoding: 7bit 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: Fam Zheng , qemu-devel@nongnu.org Cc: Kevin Wolf , Max Reitz , Jeff Cody , Markus Armbruster , Eric Blake , John Snow , qemu-block@nongnu.org, berrange@redhat.com, pbonzini@redhat.com 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. Den