All of lore.kernel.org
 help / color / mirror / Atom feed
From: Christian Schoenebeck <qemu_oss@crudebyte.com>
To: "Markus Armbruster" <armbru@redhat.com>,
	"Dr. David Alan Gilbert" <dgilbert@redhat.com>,
	"Peter Maydell" <peter.maydell@linaro.org>,
	"Philippe Mathieu-Daudé" <f4bug@amsat.org>,
	"Marc-André Lureau" <marcandre.lureau@redhat.com>,
	"Richard Henderson" <richard.henderson@linaro.org>,
	"Daniel P. Berrangé" <berrange@redhat.com>,
	qemu-devel@nongnu.org, "Guoyi Tu" <tugy@chinatelecom.cn>
Subject: Re: [PATCH] osdep: Introduce qemu_get_fd() to wrap the common codes
Date: Thu, 18 Aug 2022 14:58:33 +0200	[thread overview]
Message-ID: <47453703.NBG3G7Ahn1@silver> (raw)
In-Reply-To: <1442ced4-ab22-c379-76ee-5e1f1c17108a@chinatelecom.cn>

On Donnerstag, 18. August 2022 14:06:04 CEST Guoyi Tu wrote:
> Ping...
> 
> Any comments are welcome
> 
> On 8/12/22 19:01, Guoyi Tu wrote:
> > socket_get_fd() have much the same codes as monitor_fd_param(),
> > so qemu_get_fd() is introduced to implement the common logic.
> > now socket_get_fd() and monitor_fd_param() directly call this
> > function.

s/have/has/, s/now/Now/, some proper rephrasing wouldn't hurt either.

> > Signed-off-by: Guoyi Tu <tugy@chinatelecom.cn>
> > ---
> > 
> >   include/qemu/osdep.h |  1 +
> >   monitor/misc.c       | 21 +--------------------
> >   util/osdep.c         | 25 +++++++++++++++++++++++++
> >   util/qemu-sockets.c  | 17 +++++------------
> >   4 files changed, 32 insertions(+), 32 deletions(-)
> > 
> > diff --git a/include/qemu/osdep.h b/include/qemu/osdep.h
> > index b1c161c035..b920f128a7 100644
> > --- a/include/qemu/osdep.h
> > +++ b/include/qemu/osdep.h
> > @@ -491,6 +491,7 @@ int qemu_open_old(const char *name, int flags, ...);
> > 
> >   int qemu_open(const char *name, int flags, Error **errp);
> >   int qemu_create(const char *name, int flags, mode_t mode, Error **errp);
> >   int qemu_close(int fd);
> > 
> > +int qemu_get_fd(Monitor *mon, const char *fdname, Error **errp);
> > 
> >   int qemu_unlink(const char *name);
> >   #ifndef _WIN32
> >   int qemu_dup_flags(int fd, int flags);
> > 
> > diff --git a/monitor/misc.c b/monitor/misc.c
> > index 3d2312ba8d..0d3372cf2b 100644
> > --- a/monitor/misc.c
> > +++ b/monitor/misc.c
> > @@ -1395,26 +1395,7 @@ void monitor_fdset_dup_fd_remove(int dup_fd)
> > 
> >   int monitor_fd_param(Monitor *mon, const char *fdname, Error **errp)
> >   {
> > 
> > -    int fd;
> > -    Error *local_err = NULL;
> > -
> > -    if (!qemu_isdigit(fdname[0]) && mon) {
> > -        fd = monitor_get_fd(mon, fdname, &local_err);
> > -    } else {
> > -        fd = qemu_parse_fd(fdname);
> > -        if (fd == -1) {
> > -            error_setg(&local_err, "Invalid file descriptor number '%s'",
> > -                       fdname);
> > -        }
> > -    }
> > -    if (local_err) {
> > -        error_propagate(errp, local_err);
> > -        assert(fd == -1);
> > -    } else {
> > -        assert(fd != -1);
> > -    }
> > -
> > -    return fd;
> > +    return qemu_get_fd(mon, fdname, errp);
> > 
> >   }
> >  
> >   /* Please update hmp-commands.hx when adding or changing commands */
> > 
> > diff --git a/util/osdep.c b/util/osdep.c
> > index 60fcbbaebe..c57551ca78 100644
> > --- a/util/osdep.c
> > +++ b/util/osdep.c
> > @@ -23,6 +23,7 @@
> > 
> >    */
> >   #include "qemu/osdep.h"
> >   #include "qapi/error.h"
> > 
> > +#include "qemu/ctype.h"
> > 
> >   #include "qemu/cutils.h"
> >   #include "qemu/sockets.h"
> >   #include "qemu/error-report.h"
> > 
> > @@ -413,6 +414,30 @@ int qemu_close(int fd)
> > 
> >       return close(fd);
> >   }
> > 
> > +int qemu_get_fd(Monitor *mon, const char *fdname, Error **errp)
> > +{
> > +    int fd;
> > +    Error *local_err = NULL;
> > +
> > +    if (!qemu_isdigit(fdname[0]) && mon) {
> > +        fd = monitor_get_fd(mon, fdname, &local_err);
> > +    } else {
> > +        fd = qemu_parse_fd(fdname);
> > +        if (fd == -1) {
> > +            error_setg(&local_err, "Invalid file descriptor number '%s'",
> > +                       fdname);
> > +        }
> > +    }
> > +    if (local_err) {
> > +        error_propagate(errp, local_err);
> > +        assert(fd == -1);
> > +    } else {
> > +        assert(fd != -1);
> > +    }
> > +
> > +    return fd;
> > +}
> > +

Up to here you are basically just moving the code of monitor_fd_param() to a 
project wide shared new function qemu_get_fd(), but why? I mean you could 
simply call monitor_fd_param() in socket_get_fd() below, no?

> >   /*
> >    * Delete a file from the filesystem, unless the filename is
> > 
> > /dev/fdset/...
> > 
> >    *
> > 
> > diff --git a/util/qemu-sockets.c b/util/qemu-sockets.c
> > index 13b5b197f9..92960ee6eb 100644
> > --- a/util/qemu-sockets.c
> > +++ b/util/qemu-sockets.c
> > @@ -1142,19 +1142,12 @@ static int socket_get_fd(const char *fdstr,
> > Error **errp)
> > 
> >   {
> >       Monitor *cur_mon = monitor_cur();
> >       int fd;
> > 
> > -    if (cur_mon) {
> > -        fd = monitor_get_fd(cur_mon, fdstr, errp);
> > -        if (fd < 0) {
> > -            return -1;
> > -        }
> > -    } else {
> > -        if (qemu_strtoi(fdstr, NULL, 10, &fd) < 0) {
> > -            error_setg_errno(errp, errno,
> > -                             "Unable to parse FD number %s",
> > -                             fdstr);
> > -            return -1;
> > -        }
> > +
> > +    fd = qemu_get_fd(cur_mon, fdstr, errp);
> > +    if (fd < 0) {
> > +        return -1;
> > 
> >       }

This part looks like behaviour change to me. Haven't looked into the details 
though whether it would be OK. Just saying.

> > 
> > +

Unintentional white line added?

> > 
> >       if (!fd_is_socket(fd)) {
> >           error_setg(errp, "File descriptor '%s' is not a socket", fdstr);
> >           close(fd);




  reply	other threads:[~2022-08-18 13:06 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-08-12 11:01 [PATCH] osdep: Introduce qemu_get_fd() to wrap the common codes Guoyi Tu
2022-08-18 12:06 ` Guoyi Tu
2022-08-18 12:58   ` Christian Schoenebeck [this message]
2022-08-30  6:03     ` Markus Armbruster
2022-08-31  8:47       ` Guoyi Tu
2022-08-31  8:25     ` Guoyi Tu
2022-09-01 13:38       ` Christian Schoenebeck

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=47453703.NBG3G7Ahn1@silver \
    --to=qemu_oss@crudebyte.com \
    --cc=armbru@redhat.com \
    --cc=berrange@redhat.com \
    --cc=dgilbert@redhat.com \
    --cc=f4bug@amsat.org \
    --cc=marcandre.lureau@redhat.com \
    --cc=peter.maydell@linaro.org \
    --cc=qemu-devel@nongnu.org \
    --cc=richard.henderson@linaro.org \
    --cc=tugy@chinatelecom.cn \
    /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.