From: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
To: Jan Beulich <JBeulich@suse.com>
Cc: "Roger Pau Monné" <roger.pau@citrix.com>,
"xen-devel@lists.xen.org" <xen-devel@lists.xen.org>,
"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>
Subject: Re: [Xen-devel] [PATCH RFC 12/12] xen-block: implement indirect descriptors
Date: Mon, 4 Mar 2013 15:44:27 -0500 [thread overview]
Message-ID: <20130304204427.GM15386@phenom.dumpdata.com> (raw)
In-Reply-To: <512F69A002000078000C2020@nat28.tlf.novell.com>
On Thu, Feb 28, 2013 at 01:28:48PM +0000, Jan Beulich wrote:
> >>> On 28.02.13 at 13:00, Roger Pau Monné<roger.pau@citrix.com> wrote:
> > On 28/02/13 12:19, Jan Beulich wrote:
> >>>>> On 28.02.13 at 11:28, Roger Pau Monne <roger.pau@citrix.com> wrote:
> >>> @@ -109,6 +111,16 @@ typedef uint64_t blkif_sector_t;
> >>> */
> >>> #define BLKIF_MAX_SEGMENTS_PER_REQUEST 11
> >>>
> >>> +#define BLKIF_MAX_INDIRECT_GREFS_PER_REQUEST 8
> >>> +
> >>> +struct blkif_request_segment_aligned {
> >>> + grant_ref_t gref; /* reference to I/O buffer frame */
> >>> + /* @first_sect: first sector in frame to transfer (inclusive). */
> >>> + /* @last_sect: last sector in frame to transfer (inclusive). */
> >>> + uint8_t first_sect, last_sect;
> >>> + uint16_t _pad; /* padding to make it 8 bytes, so it's cache-aligned */
> >>> +} __attribute__((__packed__));
> >>
> >> What's the __packed__ for here?
> >
> > Yes, that's not needed.
> >
> >>
> >>> +
> >>> struct blkif_request_rw {
> >>> uint8_t nr_segments; /* number of segments */
> >>> blkif_vdev_t handle; /* only for read/write requests */
> >>> @@ -138,11 +150,24 @@ struct blkif_request_discard {
> >>> uint8_t _pad3;
> >>> } __attribute__((__packed__));
> >>>
> >>> +struct blkif_request_indirect {
> >>> + uint8_t indirect_op;
> >>> + uint16_t nr_segments;
> >>> +#ifdef CONFIG_X86_64
> >>> + uint32_t _pad1; /* offsetof(blkif_...,u.indirect.id) == 8 */
> >>> +#endif
> >>
> >> Either you want the structure be packed tightly (and you don't care
> >> about misaligned fields), in which case you shouldn't need a padding
> >> field. That's even more so as there's no padding between indirect_op
> >> and nr_segments, so everything is misaligned anyway, and the
> >> comment above is wrong too (offsetof() really ought to yield 7 in
> >> that case).
> >
> > This padding is because we want to have the "id" field at the same
> > position as blkif_request_rw, so we need to add the padding for it to
> > match 32 & 64 bit blkif_request_rw structures, this prevents adding some
> > "if (req.op == BLKIF_OP_INDIRECT)..." if we only need to get the id of
> > the request.
>
> Oh, right, that's desirable of course.
>
> > The comment is indeed wrong, I've copied it from blkif_request_discard
> > and forgot to change the offset
>
> But the offset stated there then is right after all - I forgot that
> there is a 1-byte field outside the union (the way this is being done
> in the upstream Linux header is really ugly imo, but I guess Jeremy
> and/or Konrad liked it that way). That's also why the packed
> attribute is needed here.
I am not particularly found as I keep on forgetting about the 1-byte field
as well. If you have a patch to clean it up would love to see it.
>
> But you will probably want to switch sector_number and handle, so
> that sector_number becomes aligned, and add another 16-bit
> padding field between handle and indirect_grefs[].
>
> I also wonder whether "indirect_op" wouldn't better be named
> "actual_op" or just "op".
<nods> 'op' sounds good. With a comment saying it can do all of the BLKIF_OPS_..
except the BLKIF_OP_INDIRECT one. Thought one could in theory chain
it that way for fun.
>
> Jan
next prev parent reply other threads:[~2013-03-04 20:44 UTC|newest]
Thread overview: 101+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-02-28 10:28 [PATCH RFC 00/12] xen-block: indirect descriptors Roger Pau Monne
2013-02-28 10:28 ` [PATCH RFC 01/12] xen-blkback: don't store dev_bus_addr Roger Pau Monne
2013-02-28 10:28 ` Roger Pau Monne
2013-02-28 10:58 ` [Xen-devel] " Jan Beulich
2013-03-04 17:19 ` Roger Pau Monné
2013-03-04 17:19 ` [Xen-devel] " Roger Pau Monné
2013-03-05 8:06 ` Jan Beulich
2013-03-05 17:02 ` Roger Pau Monné
2013-03-05 17:02 ` [Xen-devel] " Roger Pau Monné
2013-03-05 8:06 ` Jan Beulich
2013-02-28 10:58 ` Jan Beulich
2013-02-28 10:28 ` [PATCH RFC 02/12] xen-blkback: fix foreach_grant_safe to handle empty lists Roger Pau Monne
2013-02-28 10:28 ` Roger Pau Monne
2013-02-28 10:28 ` [PATCH RFC 03/12] xen-blkfront: switch from llist to list Roger Pau Monne
2013-02-28 10:28 ` Roger Pau Monne
2013-02-28 10:28 ` [PATCH RFC 04/12] xen-blkfront: pre-allocate pages for requests Roger Pau Monne
2013-02-28 10:28 ` Roger Pau Monne
2013-03-04 19:39 ` Konrad Rzeszutek Wilk
2013-03-05 11:04 ` Roger Pau Monné
2013-03-05 14:18 ` Konrad Rzeszutek Wilk
2013-03-05 14:18 ` Konrad Rzeszutek Wilk
2013-03-05 16:30 ` Roger Pau Monné
2013-03-05 16:30 ` Roger Pau Monné
2013-03-05 21:53 ` Konrad Rzeszutek Wilk
2013-03-06 9:17 ` Roger Pau Monné
2013-03-06 9:17 ` Roger Pau Monné
2013-03-05 21:53 ` Konrad Rzeszutek Wilk
2013-03-05 11:04 ` Roger Pau Monné
2013-03-04 19:39 ` Konrad Rzeszutek Wilk
2013-02-28 10:28 ` [PATCH RFC 05/12] xen-blkfront: remove frame list from blk_shadow Roger Pau Monne
2013-02-28 10:28 ` Roger Pau Monne
2013-02-28 10:28 ` [PATCH RFC 06/12] xen-blkback: implement LRU mechanism for persistent grants Roger Pau Monne
2013-02-28 10:28 ` Roger Pau Monne
2013-03-04 20:10 ` Konrad Rzeszutek Wilk
2013-03-05 18:10 ` Roger Pau Monné
2013-03-05 18:10 ` Roger Pau Monné
2013-03-05 21:49 ` Konrad Rzeszutek Wilk
2013-03-05 21:49 ` Konrad Rzeszutek Wilk
2013-03-18 17:00 ` Roger Pau Monné
2013-03-18 17:00 ` Roger Pau Monné
2013-03-04 20:10 ` Konrad Rzeszutek Wilk
2013-02-28 10:28 ` [PATCH RFC 07/12] xen-blkback: print stats about " Roger Pau Monne
2013-02-28 10:28 ` Roger Pau Monne
2013-02-28 10:28 ` [PATCH RFC 08/12] xen-blkback: use balloon pages for all mappings Roger Pau Monne
2013-02-28 10:28 ` Roger Pau Monne
2013-03-04 20:22 ` Konrad Rzeszutek Wilk
2013-03-26 17:30 ` Roger Pau Monné
2013-03-26 17:30 ` Roger Pau Monné
2013-03-26 17:48 ` Roger Pau Monné
2013-03-26 17:48 ` Roger Pau Monné
2013-03-04 20:22 ` Konrad Rzeszutek Wilk
2013-02-28 10:28 ` [PATCH RFC 09/12] xen-blkback: move pending handles list from blkbk to pending_req Roger Pau Monne
2013-02-28 11:07 ` Jan Beulich
2013-02-28 11:07 ` [Xen-devel] " Jan Beulich
2013-02-28 10:28 ` Roger Pau Monne
2013-02-28 10:28 ` [PATCH RFC 10/12] xen-blkback: make the queue of free requests per backend Roger Pau Monne
2013-02-28 10:28 ` Roger Pau Monne
2013-02-28 11:08 ` Jan Beulich
2013-02-28 11:08 ` [Xen-devel] " Jan Beulich
2013-02-28 10:28 ` [PATCH RFC 11/12] xen-blkback: expand map/unmap functions Roger Pau Monne
2013-02-28 10:28 ` Roger Pau Monne
2013-02-28 10:28 ` [PATCH RFC 12/12] xen-block: implement indirect descriptors Roger Pau Monne
2013-02-28 11:19 ` Jan Beulich
2013-02-28 11:19 ` [Xen-devel] " Jan Beulich
2013-02-28 12:00 ` Roger Pau Monné
2013-02-28 13:28 ` Jan Beulich
2013-02-28 13:28 ` [Xen-devel] " Jan Beulich
2013-03-04 20:44 ` Konrad Rzeszutek Wilk
2013-03-04 20:44 ` Konrad Rzeszutek Wilk [this message]
2013-03-05 8:11 ` [Xen-devel] " Jan Beulich
2013-03-05 14:16 ` Konrad Rzeszutek Wilk
2013-03-05 17:00 ` Roger Pau Monné
2013-03-05 17:00 ` [Xen-devel] " Roger Pau Monné
2013-03-05 21:45 ` Konrad Rzeszutek Wilk
2013-03-05 21:45 ` Konrad Rzeszutek Wilk
2013-03-05 14:16 ` Konrad Rzeszutek Wilk
2013-03-05 8:11 ` Jan Beulich
2013-02-28 12:00 ` Roger Pau Monné
2013-03-04 20:41 ` Konrad Rzeszutek Wilk
2013-03-05 17:07 ` Roger Pau Monné
2013-03-05 17:07 ` Roger Pau Monné
2013-03-05 21:46 ` Konrad Rzeszutek Wilk
2013-03-05 21:46 ` Konrad Rzeszutek Wilk
2013-03-08 17:07 ` Roger Pau Monné
2013-03-08 17:07 ` Roger Pau Monné
2013-03-22 1:10 ` Konrad Rzeszutek Wilk
2013-03-22 1:10 ` Konrad Rzeszutek Wilk
2013-03-04 20:41 ` Konrad Rzeszutek Wilk
2013-03-18 17:06 ` Roger Pau Monné
2013-03-18 17:06 ` Roger Pau Monné
2013-03-19 14:38 ` Konrad Rzeszutek Wilk
2013-03-19 14:38 ` Konrad Rzeszutek Wilk
2013-02-28 10:28 ` Roger Pau Monne
2013-02-28 10:49 ` [PATCH RFC 00/12] xen-block: " Jan Beulich
2013-02-28 10:49 ` [Xen-devel] " Jan Beulich
2013-02-28 11:25 ` Roger Pau Monné
2013-02-28 11:35 ` Jan Beulich
2013-02-28 11:44 ` Roger Pau Monné
2013-02-28 11:44 ` [Xen-devel] " Roger Pau Monné
2013-02-28 11:35 ` Jan Beulich
2013-02-28 11:25 ` Roger Pau Monné
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=20130304204427.GM15386@phenom.dumpdata.com \
--to=konrad.wilk@oracle.com \
--cc=JBeulich@suse.com \
--cc=linux-kernel@vger.kernel.org \
--cc=roger.pau@citrix.com \
--cc=xen-devel@lists.xen.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.