All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Richard W.M. Jones" <rjones@redhat.com>
To: Markus Armbruster <armbru@redhat.com>
Cc: kwolf@redhat.com, qemu-devel@nongnu.org, stefanha@redhat.com
Subject: Re: [Qemu-devel] [PATCH 08/18] block/ssh: Propagate errors through connect_to_ssh()
Date: Wed, 14 May 2014 15:57:52 +0100	[thread overview]
Message-ID: <20140514145752.GV1302@redhat.com> (raw)
In-Reply-To: <1399996972-23429-9-git-send-email-armbru@redhat.com>

On Tue, May 13, 2014 at 06:02:42PM +0200, Markus Armbruster wrote:
> Cc: "Richard W.M. Jones" <rjones@redhat.com>
> Signed-off-by: Markus Armbruster <armbru@redhat.com>

Reviewed-by: Richard W.M. Jones <rjones@redhat.com>

>  block/ssh.c | 34 +++++++++++++++++-----------------
>  1 file changed, 17 insertions(+), 17 deletions(-)
> 
> diff --git a/block/ssh.c b/block/ssh.c
> index 18186ba..26078c4 100644
> --- a/block/ssh.c
> +++ b/block/ssh.c
> @@ -506,10 +506,9 @@ static int authenticate(BDRVSSHState *s, const char *user, Error **errp)
>  }
>  
>  static int connect_to_ssh(BDRVSSHState *s, QDict *options,
> -                          int ssh_flags, int creat_mode)
> +                          int ssh_flags, int creat_mode, Error **errp)
>  {
>      int r, ret;
> -    Error *err = NULL;
>      const char *host, *user, *path, *host_key_check;
>      int port;
>  
> @@ -528,6 +527,7 @@ static int connect_to_ssh(BDRVSSHState *s, QDict *options,
>      } else {
>          user = g_get_user_name();
>          if (!user) {
> +            error_setg_errno(errp, errno, "Can't get user name");
>              ret = -errno;
>              goto err;
>          }
> @@ -544,11 +544,9 @@ static int connect_to_ssh(BDRVSSHState *s, QDict *options,
>      s->hostport = g_strdup_printf("%s:%d", host, port);
>  
>      /* Open the socket and connect. */
> -    s->sock = inet_connect(s->hostport, &err);
> -    if (err != NULL) {
> +    s->sock = inet_connect(s->hostport, errp);
> +    if (s->sock < 0) {
>          ret = -errno;
> -        qerror_report_err(err);
> -        error_free(err);
>          goto err;
>      }
>  
> @@ -556,7 +554,7 @@ static int connect_to_ssh(BDRVSSHState *s, QDict *options,
>      s->session = libssh2_session_init();
>      if (!s->session) {
>          ret = -EINVAL;
> -        session_error_report(s, "failed to initialize libssh2 session");
> +        session_error_setg(errp, s, "failed to initialize libssh2 session");
>          goto err;
>      }
>  
> @@ -567,30 +565,26 @@ static int connect_to_ssh(BDRVSSHState *s, QDict *options,
>      r = libssh2_session_handshake(s->session, s->sock);
>      if (r != 0) {
>          ret = -EINVAL;
> -        session_error_report(s, "failed to establish SSH session");
> +        session_error_setg(errp, s, "failed to establish SSH session");
>          goto err;
>      }
>  
>      /* Check the remote host's key against known_hosts. */
> -    ret = check_host_key(s, host, port, host_key_check, &err);
> +    ret = check_host_key(s, host, port, host_key_check, errp);
>      if (ret < 0) {
> -        qerror_report_err(err);
> -        error_free(err);
>          goto err;
>      }
>  
>      /* Authenticate. */
> -    ret = authenticate(s, user, &err);
> +    ret = authenticate(s, user, errp);
>      if (ret < 0) {
> -        qerror_report_err(err);
> -        error_free(err);
>          goto err;
>      }
>  
>      /* Start SFTP. */
>      s->sftp = libssh2_sftp_init(s->session);
>      if (!s->sftp) {
> -        session_error_report(s, "failed to initialize sftp handle");
> +        session_error_setg(errp, s, "failed to initialize sftp handle");
>          ret = -EINVAL;
>          goto err;
>      }
> @@ -645,6 +639,7 @@ static int connect_to_ssh(BDRVSSHState *s, QDict *options,
>  static int ssh_file_open(BlockDriverState *bs, QDict *options, int bdrv_flags,
>                           Error **errp)
>  {
> +    Error *local_err = NULL;
>      BDRVSSHState *s = bs->opaque;
>      int ret;
>      int ssh_flags;
> @@ -657,8 +652,10 @@ static int ssh_file_open(BlockDriverState *bs, QDict *options, int bdrv_flags,
>      }
>  
>      /* Start up SSH. */
> -    ret = connect_to_ssh(s, options, ssh_flags, 0);
> +    ret = connect_to_ssh(s, options, ssh_flags, 0, &local_err);
>      if (ret < 0) {
> +        qerror_report_err(local_err);
> +        error_free(local_err);
>          goto err;
>      }
>  
> @@ -718,8 +715,11 @@ static int ssh_create(const char *filename, QEMUOptionParameter *options,
>  
>      r = connect_to_ssh(&s, uri_options,
>                         LIBSSH2_FXF_READ|LIBSSH2_FXF_WRITE|
> -                       LIBSSH2_FXF_CREAT|LIBSSH2_FXF_TRUNC, 0644);
> +                       LIBSSH2_FXF_CREAT|LIBSSH2_FXF_TRUNC,
> +                       0644, &local_err);
>      if (r < 0) {
> +        qerror_report_err(local_err);
> +        error_free(local_err);
>          ret = r;
>          goto out;
>      }
> -- 
> 1.8.1.4

-- 
Richard Jones, Virtualization Group, Red Hat http://people.redhat.com/~rjones
Read my programming and virtualization blog: http://rwmj.wordpress.com
virt-top is 'top' for virtual machines.  Tiny program with many
powerful monitoring features, net stats, disk stats, logging, etc.
http://people.redhat.com/~rjones/virt-top

  reply	other threads:[~2014-05-14 14:58 UTC|newest]

Thread overview: 47+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-05-13 16:02 [Qemu-devel] [PATCH 00/18] [PATCH 00/18] block: Purge qerror_report() Markus Armbruster
2014-05-13 16:02 ` [Qemu-devel] [PATCH 01/18] blockdev: Don't use qerror_report_err() in drive_init() Markus Armbruster
2014-05-13 17:04   ` Eric Blake
2014-05-13 16:02 ` [Qemu-devel] [PATCH 02/18] blockdev: Don't use qerror_report() in do_drive_del() Markus Armbruster
2014-05-13 19:38   ` Eric Blake
2014-05-13 16:02 ` [Qemu-devel] [PATCH 03/18] qemu-nbd: Don't use qerror_report() Markus Armbruster
2014-05-13 19:39   ` Eric Blake
2014-05-13 16:02 ` [Qemu-devel] [PATCH 04/18] block/rbd: Propagate errors to open and create methods Markus Armbruster
2014-05-13 19:51   ` Eric Blake
2014-05-14  5:41     ` Markus Armbruster
2014-05-13 16:02 ` [Qemu-devel] [PATCH 05/18] block/ssh: Drop superfluous libssh2_session_last_errno() calls Markus Armbruster
2014-05-14  9:11   ` Richard W.M. Jones
2014-05-14 11:06     ` Markus Armbruster
2014-05-14 12:01       ` Richard W.M. Jones
2014-05-14 14:48         ` Markus Armbruster
2014-05-14 14:57   ` Richard W.M. Jones
2014-05-13 16:02 ` [Qemu-devel] [PATCH 06/18] block/ssh: Propagate errors through check_host_key() Markus Armbruster
2014-05-14 14:57   ` Richard W.M. Jones
2014-05-13 16:02 ` [Qemu-devel] [PATCH 07/18] block/ssh: Propagate errors through authenticate() Markus Armbruster
2014-05-14 14:57   ` Richard W.M. Jones
2014-05-13 16:02 ` [Qemu-devel] [PATCH 08/18] block/ssh: Propagate errors through connect_to_ssh() Markus Armbruster
2014-05-14 14:57   ` Richard W.M. Jones [this message]
2014-05-13 16:02 ` [Qemu-devel] [PATCH 09/18] block/ssh: Propagate errors to open and create methods Markus Armbruster
2014-05-14  9:13   ` Richard W.M. Jones
2014-05-14 14:58   ` Richard W.M. Jones
2014-05-13 16:02 ` [Qemu-devel] [PATCH 10/18] block/vvfat: Propagate errors through enable_write_target() Markus Armbruster
2014-05-14 16:57   ` Eric Blake
2014-05-14 17:36     ` Markus Armbruster
2014-05-13 16:02 ` [Qemu-devel] [PATCH 11/18] block/vvfat: Propagate errors through init_directories() Markus Armbruster
2014-05-14 17:45   ` Eric Blake
2014-05-14 19:48     ` Markus Armbruster
2014-05-13 16:02 ` [Qemu-devel] [PATCH 12/18] block/sheepdog: Propagate errors through connect_to_sdog() Markus Armbruster
2014-05-14 18:19   ` Eric Blake
2014-05-13 16:02 ` [Qemu-devel] [PATCH 13/18] block/sheepdog: Propagate errors through get_sheep_fd() Markus Armbruster
2014-05-15 18:54   ` Eric Blake
2014-05-13 16:02 ` [Qemu-devel] [PATCH 14/18] block/sheepdog: Propagate errors through sd_prealloc() Markus Armbruster
2014-05-15 18:59   ` Eric Blake
2014-05-15 19:45     ` Markus Armbruster
2014-05-16  8:54       ` Markus Armbruster
2014-05-13 16:02 ` [Qemu-devel] [PATCH 15/18] block/sheepdog: Propagate errors through do_sd_create() Markus Armbruster
2014-05-15 19:02   ` Eric Blake
2014-05-13 16:02 ` [Qemu-devel] [PATCH 16/18] block/sheepdog: Propagate errors through find_vdi_name() Markus Armbruster
2014-05-15 19:06   ` Eric Blake
2014-05-13 16:02 ` [Qemu-devel] [PATCH 17/18] block/sheepdog: Propagate errors to open and create methods Markus Armbruster
2014-05-15 19:07   ` Eric Blake
2014-05-13 16:02 ` [Qemu-devel] [PATCH 18/18] block/sheepdog: Don't use qerror_report() Markus Armbruster
2014-05-15 19:08   ` Eric Blake

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=20140514145752.GV1302@redhat.com \
    --to=rjones@redhat.com \
    --cc=armbru@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.