qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: Eric Blake <eblake@redhat.com>
To: Prasanna Kumar Kalever <prasanna.kalever@redhat.com>,
	qemu-devel@nongnu.org
Cc: armbru@redhat.com, kwolf@redhat.com, pkrempa@redhat.com,
	jcody@redhat.com, rtalur@redhat.com, vbellur@redhat.com
Subject: Re: [Qemu-devel] [PATCH v20 4/5] block/gluster: using new qapi schema
Date: Tue, 19 Jul 2016 12:38:30 -0600	[thread overview]
Message-ID: <578E73A6.7090803@redhat.com> (raw)
In-Reply-To: <1468947453-5433-5-git-send-email-prasanna.kalever@redhat.com>

[-- Attachment #1: Type: text/plain, Size: 5007 bytes --]

On 07/19/2016 10:57 AM, Prasanna Kumar Kalever wrote:
> this patch adds 'GlusterServer' related schema in qapi/block-core.json
> 
> Signed-off-by: Prasanna Kumar Kalever <prasanna.kalever@redhat.com>
> ---
>  block/gluster.c      | 115 +++++++++++++++++++++++++++++----------------------
>  qapi/block-core.json |  68 +++++++++++++++++++++++++++---
>  2 files changed, 128 insertions(+), 55 deletions(-)
> 

> @@ -256,15 +254,22 @@ static struct glfs *qemu_gluster_init(GlusterConf *gconf, const char *filename,
>  
>      ret = glfs_init(glfs);
>      if (ret) {
> -        error_setg_errno(errp, errno,
> -                         "Gluster connection failed for host=%s port=%d "
> -                         "volume=%s path=%s transport=%s", gconf->host,
> -                         gconf->port, gconf->volume, gconf->path,
> -                         gconf->transport);
> +        if (gconf->server->type == GLUSTER_TRANSPORT_UNIX) {
> +            error_setg(errp,
> +                       "Gluster connection for volume %s, path %s failed on "
> +                       "socket %s ", gconf->volume, gconf->path,
> +                       gconf->server->u.q_unix.path);
> +        } else {
> +            error_setg(errp,
> +                       "Gluster connection for volume %s, path %s failed on "
> +                       "host  %s and port %s ", gconf->volume, gconf->path,
> +                       gconf->server->u.tcp.host, gconf->server->u.tcp.port);
> +        }

You are throwing away the errno information that used to be reported
here.  Is that intentional?

>  
>          /* glfs_init sometimes doesn't set errno although docs suggest that */
> -        if (errno == 0)
> +        if (errno == 0) {
>              errno = EINVAL;
> +        }

Pre-existing, but this is too late for messing with errno.  You are not
guaranteed that errno is unchanged by error_setg_errno().  You aren't
even guaranteed that errno == 0 after glfs_init() if it wasn't 0 before
entry.  You probably want a separate patch that reorders this to:

errno = 0;
ret = glfs_init(glfs);
if (ret) {
    if (!errno) {
        errno = EINVAL;
    }
    error_setg...

> +++ b/qapi/block-core.json
> @@ -1658,13 +1658,14 @@
>  # @host_device, @host_cdrom: Since 2.1
>  #
>  # Since: 2.0
> +# @gluster: Since 2.7

I would stick this line a bit earlier:

# @host_device, @host_cdrom: Since 2.1
# @gluster: Since 2.7
#
# Since: 2.0

> @@ -2057,6 +2058,63 @@
>              '*read-pattern': 'QuorumReadPattern' } }
>  
>  ##
> +# @GlusterTransport
> +#
> +# An enumeration of Gluster transport type

Maybe s/type/types/

> +#
> +# @tcp:   TCP   - Transmission Control Protocol
> +#
> +# @unix:  UNIX  - Unix domain socket
> +#
> +# Since: 2.7
> +##
> +{ 'enum': 'GlusterTransport',
> +  'data': [ 'unix', 'tcp' ] }
> +
> +
> +##
> +# @GlusterServer
> +#
> +# Captures the address of a socket
> +#
> +# Details for connecting to a gluster server
> +#
> +# @type:       Transport type used for gluster connection
> +#
> +# @unix:       socket file
> +#
> +# @tcp:        host address and port number
> +#
> +# Since: 2.7
> +##
> +{ 'union': 'GlusterServer',
> +  'base': { 'type': 'GlusterTransport' },
> +  'discriminator': 'type',
> +  'data': { 'unix': 'UnixSocketAddress',
> +            'tcp': 'InetSocketAddress' } }
> +
> +##
> +# @BlockdevOptionsGluster
> +#
> +# Driver specific block device options for Gluster
> +#
> +# @volume:      name of gluster volume where VM image resides
> +#
> +# @path:        absolute path to image file in gluster volume
> +#
> +# @server:      gluster server description
> +#
> +# @debug_level: #optional libgfapi log level (default '4' which is Error)

s/debug_level/debug-level/ - all new QAPI interfaces should prefer '-'
over '_' (the generated C code is the same, though)

> +#
> +# Since: 2.7
> +##
> +{ 'struct': 'BlockdevOptionsGluster',
> +  'data': { 'volume': 'str',
> +            'path': 'str',
> +            'server': 'GlusterServer',
> +            '*debug_level': 'int' } }
> +
> +##
>  # @BlockdevOptions
>  #
>  # Options for creating a block device.  Many options are available for all
> @@ -2119,7 +2177,7 @@
>        'file':       'BlockdevOptionsFile',
>        'ftp':        'BlockdevOptionsFile',
>        'ftps':       'BlockdevOptionsFile',
> -# TODO gluster: Wait for structured options
> +      'gluster':    'BlockdevOptionsGluster',
>        'host_cdrom': 'BlockdevOptionsFile',
>        'host_device':'BlockdevOptionsFile',
>        'http':       'BlockdevOptionsFile',
> 

Between my findings and Markus', it's up to the maintainer whether to
take this as-is and then fix up the problems with a followup patch, or
whether we need a v21.

Reviewed-by: Eric Blake <eblake@redhat.com>

-- 
Eric Blake   eblake redhat com    +1-919-301-3266
Libvirt virtualization library http://libvirt.org


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

  parent reply	other threads:[~2016-07-19 18:38 UTC|newest]

Thread overview: 20+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-07-19 16:57 [Qemu-devel] [PATCH v20 0/5] block/gluster: add support for multiple gluster servers Prasanna Kumar Kalever
2016-07-19 16:57 ` [Qemu-devel] [PATCH v20 1/5] block/gluster: rename [server, volname, image] -> [host, volume, path] Prasanna Kumar Kalever
2016-07-19 16:57 ` [Qemu-devel] [PATCH v20 2/5] block/gluster: code cleanup Prasanna Kumar Kalever
2016-07-19 16:57 ` [Qemu-devel] [PATCH v20 3/5] block/gluster: deprecate rdma support Prasanna Kumar Kalever
2016-07-19 17:17   ` Markus Armbruster
2016-07-19 18:09   ` Eric Blake
2016-07-19 18:46   ` Jeff Cody
2016-07-19 16:57 ` [Qemu-devel] [PATCH v20 4/5] block/gluster: using new qapi schema Prasanna Kumar Kalever
2016-07-19 17:30   ` Markus Armbruster
2016-07-19 17:37   ` Markus Armbruster
2016-07-19 18:38   ` Eric Blake [this message]
2016-07-19 20:39   ` Jeff Cody
2016-07-19 21:31     ` Jeff Cody
2016-07-19 16:57 ` [Qemu-devel] [PATCH v20 5/5] block/gluster: add support for multiple gluster servers Prasanna Kumar Kalever
2016-07-19 17:55   ` Markus Armbruster
2016-07-19 18:33   ` Markus Armbruster
2016-07-19 19:01     ` Prasanna Kalever
2016-07-19 20:46   ` Jeff Cody
2016-07-19 22:32   ` Eric Blake
2016-07-19 21:40 ` [Qemu-devel] [PATCH v20 0/5] " Jeff Cody

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=578E73A6.7090803@redhat.com \
    --to=eblake@redhat.com \
    --cc=armbru@redhat.com \
    --cc=jcody@redhat.com \
    --cc=kwolf@redhat.com \
    --cc=pkrempa@redhat.com \
    --cc=prasanna.kalever@redhat.com \
    --cc=qemu-devel@nongnu.org \
    --cc=rtalur@redhat.com \
    --cc=vbellur@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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).