All of lore.kernel.org
 help / color / mirror / Atom feed
From: Max Reitz <mreitz@redhat.com>
To: Stefan Hajnoczi <stefanha@gmail.com>
Cc: Kevin Wolf <kwolf@redhat.com>,
	Paolo Bonzini <pbonzini@redhat.com>, Fam Zheng <famz@redhat.com>,
	qemu-devel@nongnu.org, Stefan Hajnoczi <stefanha@redhat.com>
Subject: Re: [Qemu-devel] [RFC 1/5] nbd: Correct name comparison for export_set_name()
Date: Thu, 05 Jun 2014 19:28:09 +0200	[thread overview]
Message-ID: <5390A8A9.6040709@redhat.com> (raw)
In-Reply-To: <20140604115246.GB11073@stefanha-thinkpad.redhat.com>

On 04.06.2014 13:52, Stefan Hajnoczi wrote:
> On Sat, May 31, 2014 at 08:43:08PM +0200, Max Reitz wrote:
>> exp->name == name is certainly true if both strings are equal and will
>> work for both of them being NULL (which is important to check here);
>> however, the strings may also be equal without having the same address,
>> in which case there is no need to replace the export's name either.
>> Therefore, add a check for this case.
>>
>> Signed-off-by: Max Reitz <mreitz@redhat.com>
>> ---
>>   nbd.c | 2 +-
>>   1 file changed, 1 insertion(+), 1 deletion(-)
>>
>> diff --git a/nbd.c b/nbd.c
>> index e5084b6..0787cba 100644
>> --- a/nbd.c
>> +++ b/nbd.c
>> @@ -832,7 +832,7 @@ NBDExport *nbd_export_find(const char *name)
>>   
>>   void nbd_export_set_name(NBDExport *exp, const char *name)
>>   {
>> -    if (exp->name == name) {
>> +    if (exp->name == name || (exp->name && name && !strcmp(exp->name, name))) {
>>           return;
>>       }
> It's not clear to me why we even bother.  The function is idempotent and
> there are only 2 call sites in QEMU.  This is not a performance-critical
> function where it helps to bail early.

You're probably right. I just happened to stumble over this code when 
looking into NBD.

> Can we just drop the if statement completely?

Probably, yes, but then again, I think it's not worth bothering with 
dropping it, either. ;-)

Max

> void nbd_export_set_name(NBDExport *exp, const char *name)
> {
>      if (exp->name == name) {
>          return;
>      }
>
>      nbd_export_get(exp);
>      if (exp->name != NULL) {
>          g_free(exp->name);
>          exp->name = NULL;
>          QTAILQ_REMOVE(&exports, exp, next);
>          nbd_export_put(exp);
>      }
>      if (name != NULL) {
>          nbd_export_get(exp);
>          exp->name = g_strdup(name);
>          QTAILQ_INSERT_TAIL(&exports, exp, next);
>      }
>      nbd_export_put(exp);
> }

  reply	other threads:[~2014-06-05 17:28 UTC|newest]

Thread overview: 20+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <1401561792-13410-1-git-send-email-mreitz@redhat.com>
2014-06-03 14:38 ` [Qemu-devel] [RFC 0/5] nbd: Adapt for dataplane Stefan Hajnoczi
2014-06-05 17:41   ` Max Reitz
     [not found] ` <1401561792-13410-2-git-send-email-mreitz@redhat.com>
2014-06-04 11:52   ` [Qemu-devel] [RFC 1/5] nbd: Correct name comparison for export_set_name() Stefan Hajnoczi
2014-06-05 17:28     ` Max Reitz [this message]
     [not found] ` <1401561792-13410-3-git-send-email-mreitz@redhat.com>
2014-06-03 17:55   ` [Qemu-devel] [RFC 2/5] aio: Add io_read_poll() callback Paolo Bonzini
2014-06-05 17:29     ` Max Reitz
2014-06-04 11:59   ` Stefan Hajnoczi
     [not found] ` <1401561792-13410-4-git-send-email-mreitz@redhat.com>
2014-06-04 12:37   ` [Qemu-devel] [RFC 3/5] nbd: Use aio_set_fd_handler2() Stefan Hajnoczi
2014-06-04 18:02     ` Paolo Bonzini
2014-06-05  8:12       ` Stefan Hajnoczi
2014-06-05  9:27         ` Paolo Bonzini
2014-06-05 13:32           ` Stefan Hajnoczi
2014-06-05 18:18     ` Max Reitz
2014-06-06  7:44       ` Paolo Bonzini
2014-06-07 19:27         ` Max Reitz
2014-06-09 13:35           ` Stefan Hajnoczi
     [not found] ` <1401561792-13410-5-git-send-email-mreitz@redhat.com>
2014-06-04 12:41   ` [Qemu-devel] [RFC 4/5] block: Add AIO followers Stefan Hajnoczi
2014-06-05 17:31     ` Max Reitz
     [not found] ` <538A3A8F.3060508@redhat.com>
2014-06-04 12:47   ` [Qemu-devel] [RFC 0/5] nbd: Adapt for dataplane Stefan Hajnoczi
2014-06-04 12:50 ` Stefan Hajnoczi

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=5390A8A9.6040709@redhat.com \
    --to=mreitz@redhat.com \
    --cc=famz@redhat.com \
    --cc=kwolf@redhat.com \
    --cc=pbonzini@redhat.com \
    --cc=qemu-devel@nongnu.org \
    --cc=stefanha@gmail.com \
    --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.