All of lore.kernel.org
 help / color / mirror / Atom feed
From: Max Reitz <mreitz@redhat.com>
To: Kevin Wolf <kwolf@redhat.com>
Cc: qemu-block@nongnu.org, qemu-devel@nongnu.org,
	Alberto Garcia <berto@igalia.com>, Eric Blake <eblake@redhat.com>
Subject: Re: [Qemu-devel] [PATCH 16/19] block/nbd: Implement bdrv_dirname()
Date: Tue, 3 May 2016 13:28:04 +0200	[thread overview]
Message-ID: <57288B44.5020500@redhat.com> (raw)
In-Reply-To: <20160502153621.GK4882@noname.redhat.com>


[-- Attachment #1.1: Type: text/plain, Size: 2796 bytes --]

On 02.05.2016 17:36, Kevin Wolf wrote:
> Am 26.04.2016 um 23:32 hat Max Reitz geschrieben:
>> The idea behind this implementation is that the export name might be
>> interpreted as a path (which is the only apparent interpretation of
>> relative filenames for NBD paths).
>>
>> The default implementation of bdrv_dirname() would handle that just fine
>> for nbd+tcp, but not for nbd+unix, because in that case, the last
>> element of the path is the Unix socket path and not the export name.
>> Therefore, we need to implement an own bdrv_dirname() which uses the
>> legacy NBD URL which has the export name at the end.
>>
>> Signed-off-by: Max Reitz <mreitz@redhat.com>
>> ---
>>  block/nbd.c | 29 +++++++++++++++++++++++++++++
>>  1 file changed, 29 insertions(+)
>>
>> diff --git a/block/nbd.c b/block/nbd.c
>> index f7ea3b3..64534bb 100644
>> --- a/block/nbd.c
>> +++ b/block/nbd.c
>> @@ -469,6 +469,32 @@ static void nbd_refresh_filename(BlockDriverState *bs, QDict *options)
>>      bs->full_open_options = opts;
>>  }
>>  
>> +static char *nbd_dirname(BlockDriverState *bs, Error **errp)
>> +{
>> +    const char *path   = qdict_get_try_str(bs->options, "path");
>> +    const char *host   = qdict_get_try_str(bs->options, "host");
>> +    const char *port   = qdict_get_try_str(bs->options, "port");
>> +    const char *export = qdict_get_try_str(bs->options, "export");
>> +
>> +    if (path && export) {
>> +        return g_strdup_printf("nbd:unix:%s:exportname=%s/", path, export);
>> +    } else if (path && !export) {
>> +        return g_strdup_printf("nbd:unix:%s:exportname=", path);
>> +    } else if (!path && export && port) {
>> +        return g_strdup_printf("nbd://%s:%s/%s/", host, port, export);
>> +    } else if (!path && export && !port) {
>> +        return g_strdup_printf("nbd://%s/%s/", host, export);
>> +    } else if (!path && !export && port) {
>> +        return g_strdup_printf("nbd://%s:%s/", host, port);
>> +    } else if (!path && !export && !port) {
>> +        return g_strdup_printf("nbd://%s/", host);
>> +    }
> 
> Many different cases already, and it's only going to get worse.

Is it? I'm not sure we can support things like TLS here at all, so I
think this should be about it, even in the future.

>                                                                 Wouldn't
> it be better to store saddr in BDRVNBDState (so that we don't have to
> parse the options a second time here) and to go for the full version
> here always? Then it's one case for tcp and one for unix and that's it.

I think we can do that even without saddr, but I guess I need to see how
this patch interacts with my "blockdev-add for NBD" series anyway.

Thanks for the suggestion, I'll act on it,

Max


[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 473 bytes --]

  reply	other threads:[~2016-05-03 11:29 UTC|newest]

Thread overview: 41+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-04-26 21:31 [Qemu-devel] [PATCH 00/19] block: Fix some filename generation issues Max Reitz
2016-04-26 21:32 ` [Qemu-devel] [PATCH 01/19] block: Use children list in bdrv_refresh_filename Max Reitz
2016-04-27  0:36   ` Eric Blake
2016-05-31  7:35   ` Alberto Garcia
2016-04-26 21:32 ` [Qemu-devel] [PATCH 02/19] block: Add BDS.backing_overridden Max Reitz
2016-04-27  0:37   ` Eric Blake
2016-05-02 15:35   ` Kevin Wolf
2016-05-03 10:49     ` Max Reitz
2016-05-03 13:34       ` Kevin Wolf
2016-04-26 21:32 ` [Qemu-devel] [PATCH 03/19] block: Respect backing bs in bdrv_refresh_filename Max Reitz
2016-05-02 15:36   ` Kevin Wolf
2016-05-03 10:50     ` Max Reitz
2016-04-26 21:32 ` [Qemu-devel] [PATCH 04/19] block: Add bdrv_default_refresh_format_filename Max Reitz
2016-06-20 13:16   ` Alberto Garcia
2016-04-26 21:32 ` [Qemu-devel] [PATCH 05/19] block: Add bdrv_default_refresh_protocol_filename Max Reitz
2016-06-20 13:18   ` Alberto Garcia
2016-04-26 21:32 ` [Qemu-devel] [PATCH 06/19] block: Make bdrv_default_refresh_format_filename public Max Reitz
2016-05-02 15:36   ` Kevin Wolf
2016-05-03 11:19     ` Max Reitz
2016-05-03 13:31       ` Kevin Wolf
2016-05-03 13:48         ` Max Reitz
2016-05-03 14:34           ` Kevin Wolf
2016-05-03 14:52             ` Max Reitz
2016-04-26 21:32 ` [Qemu-devel] [PATCH 07/19] qcow2: Implement bdrv_refresh_filename() Max Reitz
2016-04-26 21:32 ` [Qemu-devel] [PATCH 08/19] block: Make path_combine() return the path Max Reitz
2016-06-20 13:44   ` Alberto Garcia
2016-04-26 21:32 ` [Qemu-devel] [PATCH 09/19] block: bdrv_get_full_backing_filename_from_...'s ret. val Max Reitz
2016-04-26 21:32 ` [Qemu-devel] [PATCH 10/19] block: bdrv_get_full_backing_filename's " Max Reitz
2016-04-26 21:32 ` [Qemu-devel] [PATCH 11/19] block: Add bdrv_make_absolute_filename() Max Reitz
2016-04-26 21:32 ` [Qemu-devel] [PATCH 12/19] block: Fix bdrv_find_backing_image() Max Reitz
2016-04-26 21:32 ` [Qemu-devel] [PATCH 13/19] block: Add bdrv_dirname() Max Reitz
2016-04-26 21:32 ` [Qemu-devel] [PATCH 14/19] blkverify: Make bdrv_dirname() return NULL Max Reitz
2016-04-26 21:32 ` [Qemu-devel] [PATCH 15/19] quorum: " Max Reitz
2016-04-26 21:32 ` [Qemu-devel] [PATCH 16/19] block/nbd: Implement bdrv_dirname() Max Reitz
2016-05-02 15:36   ` Kevin Wolf
2016-05-03 11:28     ` Max Reitz [this message]
2016-04-26 21:32 ` [Qemu-devel] [PATCH 17/19] block: Use bdrv_dirname() for relative filenames Max Reitz
2016-04-26 21:32 ` [Qemu-devel] [PATCH 18/19] block: Add 'base-directory' BDS option Max Reitz
2016-04-26 21:32 ` [Qemu-devel] [PATCH 19/19] iotests: Add quorum case to test 110 Max Reitz
2016-11-02 15:00 ` [Qemu-devel] [PATCH 00/19] block: Fix some filename generation issues Alberto Garcia
2016-11-02 15:05   ` Max Reitz

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=57288B44.5020500@redhat.com \
    --to=mreitz@redhat.com \
    --cc=berto@igalia.com \
    --cc=eblake@redhat.com \
    --cc=kwolf@redhat.com \
    --cc=qemu-block@nongnu.org \
    --cc=qemu-devel@nongnu.org \
    /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.