All of lore.kernel.org
 help / color / mirror / Atom feed
From: Kevin Wolf <kwolf@redhat.com>
To: Eric Blake <eblake@redhat.com>
Cc: qemu-block@nongnu.org, berto@igalia.com, qemu-devel@nongnu.org,
	mreitz@redhat.com
Subject: Re: [Qemu-devel] [RFC PATCH 7/8] quorum: Implement .bdrv_co_preadv/pwritev()
Date: Fri, 11 Nov 2016 10:58:57 +0100	[thread overview]
Message-ID: <20161111095857.GA7533@noname.redhat.com> (raw)
In-Reply-To: <6386e9e0-3317-3d68-9ff9-d33b0a87213a@redhat.com>

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

Am 11.11.2016 um 03:37 hat Eric Blake geschrieben:
> On 11/10/2016 11:19 AM, Kevin Wolf wrote:
> > This enables byte granularity requests on quorum nodes.
> > 
> > Note that the QMP events emitted by the driver are an external API that
> > we were careless enough to define as sector based. The offset and length
> > of requests reported in events are rounded down therefore.
> 
> Would it be better to round offset down and length up?  A length of 0
> looks odd.

To be honest, I don't know what these events are used for and what the
most useful rounding would be. Maybe Berto can tell?

> Should we add more fields to the two affected events (QUORUM_FAILURE and
> QUORUM_REPORT_BAD)? We have to keep the existing fields for back-compat,
> but we could add new fields that give byte-based locations for
> management apps smart enough to use the new instead of the old
> (particularly since the old fields are named 'sector-num' and
> 'sectors-count').

If there is a user for the new fields, I can do that.

> > Signed-off-by: Kevin Wolf <kwolf@redhat.com>
> > ---
> >  block/quorum.c | 75 ++++++++++++++++++++++++++--------------------------------
> >  1 file changed, 33 insertions(+), 42 deletions(-)
> > 
> 
> > @@ -198,14 +198,17 @@ static void quorum_report_bad(QuorumOpType type, uint64_t sector_num,
> >      }
> >  
> >      qapi_event_send_quorum_report_bad(type, !!msg, msg, node_name,
> > -                                      sector_num, nb_sectors, &error_abort);
> > +                                      offset / BDRV_SECTOR_SIZE,
> > +                                      bytes / BDRV_SECTOR_SIZE, &error_abort);
> 
> Rounding the offset down makes sense, but rounding the bytes down can
> lead to weird messages.  Blindly rounding it up to a sector boundary can
> also be wrong (example: writing 2 bytes at offset 511 really affects
> 1024 bytes when you consider that two sectors had to undergo
> read-modify-write). Don't we have a helper routine for determining the
> end boundary when we have to convert an offset and length to a courser
> alignment?

Hm, I would have to check the header files. I don't know one off the top
of my head. If you find it, let me know.

> > @@ -462,8 +461,8 @@ static void GCC_FMT_ATTR(2, 3) quorum_err(QuorumAIOCB *acb,
> >      va_list ap;
> >  
> >      va_start(ap, fmt);
> > -    fprintf(stderr, "quorum: sector_num=%" PRId64 " nb_sectors=%d ",
> > -            acb->sector_num, acb->nb_sectors);
> > +    fprintf(stderr, "quorum: offset=%" PRIu64 " bytes=%" PRIu64 " ",
> > +            acb->offset, acb->bytes);
> 
> Might be worth a separate patch to get rid of fprintf and use correct
> error reporting.  But not the work for this patch.

What would correct error reporting be in this case? A QMP event? Because
other than that and stderr, I don't think we have any channels for error
messages for I/O requests. We could use error_report(), but it would be
effectively the same thing as fprintf().

Kevin

[-- Attachment #2: Type: application/pgp-signature, Size: 836 bytes --]

  reply	other threads:[~2016-11-11  9:59 UTC|newest]

Thread overview: 35+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-11-10 17:19 [Qemu-devel] [RFC PATCH 0/8] quorum: Implement .bdrv_co_preadv/pwritev() Kevin Wolf
2016-11-10 17:19 ` [Qemu-devel] [RFC PATCH 1/8] coroutine: Introduce qemu_coroutine_enter_if_inactive() Kevin Wolf
2016-11-10 23:49   ` Eric Blake
2016-11-17  9:30   ` Alberto Garcia
2016-11-10 17:19 ` [Qemu-devel] [RFC PATCH 2/8] quorum: Remove s from quorum_aio_get() arguments Kevin Wolf
2016-11-10 23:52   ` Eric Blake
2016-11-11  9:58   ` Paolo Bonzini
2016-11-11 14:18   ` Alberto Garcia
2016-11-10 17:19 ` [Qemu-devel] [RFC PATCH 3/8] quorum: Implement .bdrv_co_readv/writev Kevin Wolf
2016-11-11  1:56   ` Eric Blake
2016-11-16 15:57   ` Alberto Garcia
2016-11-10 17:19 ` [Qemu-devel] [RFC PATCH 4/8] quorum: Do cleanup in caller coroutine Kevin Wolf
2016-11-11  2:18   ` Eric Blake
2016-11-17 10:04   ` Alberto Garcia
2016-11-10 17:19 ` [Qemu-devel] [RFC PATCH 5/8] quorum: Inline quorum_aio_cb() Kevin Wolf
2016-11-17 14:25   ` Alberto Garcia
2016-11-10 17:19 ` [Qemu-devel] [RFC PATCH 6/8] quorum: Avoid bdrv_aio_writev() for rewrites Kevin Wolf
2016-11-11  2:25   ` Eric Blake
2016-11-17 14:54   ` Alberto Garcia
2016-11-18 12:21     ` Kevin Wolf
2016-11-18 12:33       ` Alberto Garcia
2016-11-18 21:11       ` Eric Blake
2016-11-21 11:56         ` Kevin Wolf
2016-11-10 17:19 ` [Qemu-devel] [RFC PATCH 7/8] quorum: Implement .bdrv_co_preadv/pwritev() Kevin Wolf
2016-11-11  2:37   ` Eric Blake
2016-11-11  9:58     ` Kevin Wolf [this message]
2016-11-11 15:08       ` Eric Blake
2016-11-17 15:30       ` Alberto Garcia
2016-11-10 17:19 ` [Qemu-devel] [RFC PATCH 8/8] quorum: Inline quorum_fifo_aio_cb() Kevin Wolf
2016-11-18  9:47   ` Alberto Garcia
2016-11-11  9:56 ` [Qemu-devel] [RFC PATCH 0/8] quorum: Implement .bdrv_co_preadv/pwritev() Paolo Bonzini
2016-11-11 10:22   ` Kevin Wolf
2016-11-18  9:51     ` Alberto Garcia
2016-11-18 11:10       ` Paolo Bonzini
2016-11-13  3:18 ` no-reply

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=20161111095857.GA7533@noname.redhat.com \
    --to=kwolf@redhat.com \
    --cc=berto@igalia.com \
    --cc=eblake@redhat.com \
    --cc=mreitz@redhat.com \
    --cc=qemu-block@nongnu.org \
    --cc=qemu-devel@nongnu.org \
    /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.