All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Philippe Mathieu-Daudé" <philmd@redhat.com>
To: Klaus Jensen <its@irrelevant.dk>
Cc: Kevin Wolf <kwolf@redhat.com>, Fam Zheng <fam@euphon.net>,
	qemu-block@nongnu.org, qemu-devel@nongnu.org,
	Auger Eric <eric.auger@redhat.com>,
	Hanna Reitz <hreitz@redhat.com>,
	Stefan Hajnoczi <stefanha@redhat.com>
Subject: Re: [PATCH 7/9] util/vfio-helpers: Have qemu_vfio_dma_map() propagate Error
Date: Wed, 25 Aug 2021 15:08:17 +0200	[thread overview]
Message-ID: <45edae8d-5c41-5159-dbb6-1a15f0164aa4@redhat.com> (raw)
In-Reply-To: <YSYqzxZfZbmnVvRo@apples.localdomain>

On 8/25/21 1:34 PM, Klaus Jensen wrote:
> On Aug 24 16:11, Philippe Mathieu-Daudé wrote:
>> Now that all qemu_vfio_dma_map() callers provide an Error* argument,
>> fill it with relevant / more descriptive message. Reduce 'ret'
>> (returned value) scope by returning errno directly to simplify
>> (removing the goto / 'out' label).
>>
>> Signed-off-by: Philippe Mathieu-Daudé <philmd@redhat.com>
>> ---
>>  block/nvme.c        |  1 +
>>  util/vfio-helpers.c | 31 ++++++++++++++-----------------
>>  2 files changed, 15 insertions(+), 17 deletions(-)
>>
>> diff --git a/block/nvme.c b/block/nvme.c
>> index 663e5d918fa..80546b0babd 100644
>> --- a/block/nvme.c
>> +++ b/block/nvme.c
>> @@ -240,6 +240,7 @@ static NVMeQueuePair *nvme_create_queue_pair(BDRVNVMeState *s,
>>      r = qemu_vfio_dma_map(s->vfio, q->prp_list_pages, bytes,
>>                            false, &prp_list_iova, errp);
>>      if (r) {
>> +        error_prepend(errp, "Cannot map buffer for DMA: ");
> 
> Ah. Here is the missing error message that I noticed in patch 2 ;)

So I should use error_setg() in patch 2 and replace it with
error_prepend() here? I'm trying to address Eric's comments
from:

https://lore.kernel.org/qemu-devel/2cbd5471-4611-ae6b-d79f-db6ff19db5bf@redhat.com/
https://lore.kernel.org/qemu-devel/bd1cc1c9-3553-d252-3ca9-a23bc1035170@redhat.com/

> 
>>          goto fail;
>>      }
>>      q->free_req_head = -1;
>> diff --git a/util/vfio-helpers.c b/util/vfio-helpers.c
>> index 3e1a49bea15..f4c16e1dae5 100644
>> --- a/util/vfio-helpers.c
>> +++ b/util/vfio-helpers.c
>> @@ -729,7 +729,6 @@ qemu_vfio_find_temp_iova(QEMUVFIOState *s, size_t size, uint64_t *iova)
>>  int qemu_vfio_dma_map(QEMUVFIOState *s, void *host, size_t size,
>>                        bool temporary, uint64_t *iova, Error **errp)
>>  {
>> -    int ret = 0;
>>      int index;
>>      IOVAMapping *mapping;
>>      uint64_t iova0;
>> @@ -742,32 +741,34 @@ int qemu_vfio_dma_map(QEMUVFIOState *s, void *host, size_t size,
>>      if (mapping) {
>>          iova0 = mapping->iova + ((uint8_t *)host - (uint8_t *)mapping->host);
>>      } else {
>> +        int ret;
>> +
>>          if (s->high_water_mark - s->low_water_mark + 1 < size) {
>> -            ret = -ENOMEM;
>> -            goto out;
>> +            error_setg(errp, "iova exhausted (water mark reached)");
>> +            return -ENOMEM;
>>          }
>>          if (!temporary) {
>> -            if (qemu_vfio_find_fixed_iova(s, size, &iova0)) {
>> -                ret = -ENOMEM;
>> -                goto out;
>> +            if (qemu_vfio_find_fixed_iova(s, size, &iova0) < 0) {
>> +                error_setg(errp, "iova range not found");
>> +                return -ENOMEM;
> 
> Just curious.
> 
> Previously this did error_setg_errno in out. Why don't we want to do that here?

I didn't thought about it but indeed you are right.

Thanks for the review!

Phil.



  reply	other threads:[~2021-08-25 13:31 UTC|newest]

Thread overview: 19+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-08-24 14:11 [PATCH 0/9] block/nvme: Rework error reporting Philippe Mathieu-Daudé
2021-08-24 14:11 ` [PATCH 1/9] block/nvme: Use safer trace format string Philippe Mathieu-Daudé
2021-08-25 11:25   ` Klaus Jensen
2021-08-24 14:11 ` [PATCH 2/9] block/nvme: Have nvme_create_queue_pair() report errors consistently Philippe Mathieu-Daudé
2021-08-25 11:24   ` Klaus Jensen
2021-08-24 14:11 ` [PATCH 3/9] util/vfio-helpers: Let qemu_vfio_verify_mappings() use error_report() Philippe Mathieu-Daudé
2021-08-24 14:11 ` [PATCH 4/9] util/vfio-helpers: Replace qemu_mutex_lock() calls with QEMU_LOCK_GUARD Philippe Mathieu-Daudé
2021-08-25 11:57   ` Klaus Jensen
2021-08-24 14:11 ` [PATCH 5/9] util/vfio-helpers: Remove unreachable code in qemu_vfio_dma_map() Philippe Mathieu-Daudé
2021-08-25 11:53   ` Klaus Jensen
2021-08-25 11:55     ` Klaus Jensen
2021-08-24 14:11 ` [PATCH 6/9] util/vfio-helpers: Pass Error handle to qemu_vfio_dma_map() Philippe Mathieu-Daudé
2021-08-24 14:11 ` [PATCH 7/9] util/vfio-helpers: Have qemu_vfio_dma_map() propagate Error Philippe Mathieu-Daudé
2021-08-25 11:34   ` Klaus Jensen
2021-08-25 13:08     ` Philippe Mathieu-Daudé [this message]
2021-08-25 14:53       ` Klaus Jensen
2021-08-24 14:11 ` [PATCH 8/9] util/vfio-helpers: Let qemu_vfio_do_mapping() " Philippe Mathieu-Daudé
2021-08-24 14:11 ` [PATCH 9/9] block/nvme: Only report VFIO error on failed retry Philippe Mathieu-Daudé
2021-08-25 12:18   ` Klaus Jensen

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=45edae8d-5c41-5159-dbb6-1a15f0164aa4@redhat.com \
    --to=philmd@redhat.com \
    --cc=eric.auger@redhat.com \
    --cc=fam@euphon.net \
    --cc=hreitz@redhat.com \
    --cc=its@irrelevant.dk \
    --cc=kwolf@redhat.com \
    --cc=qemu-block@nongnu.org \
    --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.