From: Fam Zheng <famz@redhat.com>
To: "Benoît Canet" <benoit@irqsave.net>
Cc: kwolf@redhat.com, jcody@redhat.com, qemu-devel@nongnu.org,
stefanha@redhat.com, armbru@redhat.com
Subject: Re: [Qemu-devel] [PATCH V5 2/7] block: Allow the user to define "node-name" option.
Date: Tue, 21 Jan 2014 11:15:53 +0800 [thread overview]
Message-ID: <20140121031553.GE29842@T430.redhat.com> (raw)
In-Reply-To: <1386862440-8003-3-git-send-email-benoit@irqsave.net>
On Thu, 12/12 16:33, Benoît Canet wrote:
> Signed-off-by: Benoit Canet <benoit@irqsave.net>
> ---
> block.c | 38 ++++++++++++++++++++++++++++++++++++++
> 1 file changed, 38 insertions(+)
>
> diff --git a/block.c b/block.c
> index 481d566..1c57f0d 100644
> --- a/block.c
> +++ b/block.c
> @@ -735,6 +735,39 @@ static int bdrv_open_flags(BlockDriverState *bs, int flags)
> return open_flags;
> }
>
> +static int bdrv_get_node_name(BlockDriverState *bs,
> + QDict *options,
> + Error **errp)
This function actually assigns the node-name to bs, could you call it
"bdrv_set_node_name" or "bdrv_assign_node_name", and only pass in the node-name
and move the parsing of options to the caller?
Fam
> +{
> + const char *node_name = NULL;
> +
> + node_name = qdict_get_try_str(options, "node-name");
> +
> + if (!node_name) {
> + return 0;
> + }
> +
> + /* empty string node name is invalid */
> + if (node_name[0] == '\0') {
> + error_setg(errp, "Empty node name");
> + return -EINVAL;
> + }
> +
> + /* takes care of avoiding duplicates node names */
> + if (bdrv_find_node(node_name)) {
> + error_setg(errp, "Duplicate node name");
> + return -EINVAL;
> + }
> +
> + /* copy node name into the bs and insert it into the graph list */
> + pstrcpy(bs->node_name, sizeof(bs->node_name), node_name);
> + QTAILQ_INSERT_TAIL(&graph_bdrv_states, bs, node_list);
> +
> + qdict_del(options, "node-name");
> +
> + return 0;
> +}
> +
> /*
> * Common part for opening disk images and files
> *
> @@ -759,6 +792,11 @@ static int bdrv_open_common(BlockDriverState *bs, BlockDriverState *file,
>
> trace_bdrv_open_common(bs, filename ?: "", flags, drv->format_name);
>
> + ret = bdrv_get_node_name(bs, options, errp);
> + if (ret < 0) {
> + return ret;
> + }
> +
> /* bdrv_open() with directly using a protocol as drv. This layer is already
> * opened, so assign it to bs (while file becomes a closed BlockDriverState)
> * and return immediately. */
> --
> 1.8.3.2
>
>
next prev parent reply other threads:[~2014-01-21 3:16 UTC|newest]
Thread overview: 28+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-12-12 15:33 [Qemu-devel] [PATCH V5 0/7] Giving names to BlockDriverState graph nodes Benoît Canet
2013-12-12 15:33 ` [Qemu-devel] [PATCH V5 1/7] block: Add bs->node_name to hold the name of a bs node of the bs graph Benoît Canet
2014-01-21 3:10 ` Fam Zheng
2013-12-12 15:33 ` [Qemu-devel] [PATCH V5 2/7] block: Allow the user to define "node-name" option Benoît Canet
2014-01-21 3:15 ` Fam Zheng [this message]
2014-01-21 14:12 ` Kevin Wolf
2013-12-12 15:33 ` [Qemu-devel] [PATCH V5 3/7] qmp: Add a command to list the named BlockDriverState nodes Benoît Canet
2014-01-21 3:23 ` Fam Zheng
2013-12-12 15:33 ` [Qemu-devel] [PATCH V5 4/7] qmp: Allow to change password on named block driver states Benoît Canet
2014-01-21 3:27 ` Fam Zheng
2014-01-21 14:17 ` Kevin Wolf
2013-12-12 15:33 ` [Qemu-devel] [PATCH V5 5/7] block: Create authorizations mechanism for external snapshot and resize Benoît Canet
2014-01-21 3:45 ` Fam Zheng
2013-12-12 15:33 ` [Qemu-devel] [PATCH V5 6/7] qmp: Allow block_resize to manipulate bs graph nodes Benoît Canet
2014-01-21 3:46 ` Fam Zheng
2013-12-12 15:34 ` [Qemu-devel] [PATCH V5 7/7] qmp: Allow to take external snapshots on bs graphs node Benoît Canet
2014-01-21 3:54 ` Fam Zheng
2014-01-21 14:28 ` Kevin Wolf
2014-01-22 21:33 ` Benoît Canet
2014-01-23 10:20 ` Kevin Wolf
2014-01-16 17:18 ` [Qemu-devel] [PATCH V5 0/7] Giving names to BlockDriverState graph nodes Benoît Canet
2014-01-21 4:04 ` Fam Zheng
2014-01-21 14:33 ` Kevin Wolf
2014-01-21 15:36 ` Benoît Canet
2014-01-21 15:44 ` Kevin Wolf
2014-01-22 21:44 ` Benoît Canet
2014-01-23 10:14 ` Kevin Wolf
2014-01-22 22:03 ` Benoît Canet
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20140121031553.GE29842@T430.redhat.com \
--to=famz@redhat.com \
--cc=armbru@redhat.com \
--cc=benoit@irqsave.net \
--cc=jcody@redhat.com \
--cc=kwolf@redhat.com \
--cc=qemu-devel@nongnu.org \
--cc=stefanha@redhat.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.