From: Kent Overstreet <koverstreet@google.com>
To: Zach Brown <zab@zabbo.net>
Cc: linux-kernel@vger.kernel.org, linux-fsdevel@vger.kernel.org,
tytso@google.com, tj@kernel.org,
Dave Kleikamp <dave.kleikamp@oracle.com>,
Dmitry Monakhov <dmonakhov@openvz.org>,
"Maxim V. Patlasov" <mpatlasov@parallels.com>,
michael.mesnier@intel.com, jeffrey.d.skirvin@intel.com,
Martin Petersen <martin.petersen@oracle.com>
Subject: Re: [RFC, PATCH] Extensible AIO interface
Date: Mon, 1 Oct 2012 17:22:16 -0700 [thread overview]
Message-ID: <20121002002216.GI26488@google.com> (raw)
In-Reply-To: <20121001234439.GC14533@lenny.home.zabbo.net>
On Mon, Oct 01, 2012 at 04:44:39PM -0700, Zach Brown wrote:
> > Not just per sector, Per hardware sector. For passing around checksums
> > userspace would have to find out the hardware sector size and checksum
> > type/size via a different interface, and then the attribute would
> > contain a pointer to a buffer that can hold the appropriate number of
> > checksums.
>
> All problems fall to another layer of indirection? :)
Yep :)
> But yes, that's
> fair. I was obviously just assuming that the checksums would be in the
> attribute.
>
> But now we're talking about layers of user pointers. Would the
> attribute parser need to verify/copy pointers before downstream kernel
> code tries to work with it? Would it be up to the attribute consumers
> to verify the pointers that the core doesn't really touch?
The generic code wouldn't know about any user pointers inside
attributes, so it'd have to be downstream consumers. Hopefully there
won't be many attributes with user pointers in them (I don't expect
there to be), so we won't have too much of this messyness.
> Are these
> second pointers native (enter compat goo) or u64s?
Outside the scope of the generic implementation, but AFAIK u64s are the
sane way so I'd prefer to just enforce that.
> > I don't think there's anything fragile about the basic idea though. Or
> > do you have some way of improving upon it in mind?
>
> Nothing super great is springing to mind, no.
>
> > The idea with the size field is that it's just sizeof(the particular
> > attribute struct), so when userspace is appending attributes it just
> > sets size = sizeof() and attr_list->size += attr->size.
>
> I suppose. But this also raises the spectre of aligning the packed
> attributes to match their struct definitions. It's the netlink(3)
> macros all over again, right? I guess unaligned accesses aren't *that*
> big a deal. But still.
I was just thinking about that a few minutes ago. Since the way I'm
doing it embeds struct iocb_attr inside the specific attributes, if we
stick __aligned(8) on struct iocb_attr that should solve alignment.
> And what about duplicate instances of a given attribute id? Use the
> first? The last? Error? Depends on the id?
I suspect duplicate instances will be useful and the sanest approach
for a few things, so I don't want to disallow it.
But - perhaps we could define whether duplicates are allowed of a given
attribute along with the attribute ids, then the kernel in generic code
could check for duplicates of attrs for which it was disallowed and
error.
I think I really like that idea.
> It just seems like there are a lot of corner cases that can go wrong
> with an API that is so free form. I'd like something a lot harder to
> make mistakes with.
>
> - z
> (being That Guy today, apparently :/)
I think it's got to be free form to be useful, but that doesn't mean we
can't avoid as many mistakes as possible ahead of time so please
continue to point out anything you can think of :)
next prev parent reply other threads:[~2012-10-02 0:22 UTC|newest]
Thread overview: 21+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-10-01 22:23 [RFC, PATCH] Extensible AIO interface Kent Overstreet
2012-10-01 23:12 ` Zach Brown
2012-10-01 23:22 ` Kent Overstreet
2012-10-01 23:44 ` Zach Brown
2012-10-02 0:22 ` Kent Overstreet [this message]
2012-10-02 17:43 ` Zach Brown
2012-10-02 21:41 ` Kent Overstreet
2012-10-03 1:41 ` Tejun Heo
2012-10-03 3:00 ` Kent Overstreet
2012-10-03 21:58 ` Tejun Heo
2012-10-04 19:50 ` Kent Overstreet
2012-10-02 0:47 ` Kent Overstreet
2012-10-02 22:34 ` Martin K. Petersen
2012-10-02 17:41 ` Jeff Moyer
2012-10-03 0:20 ` Kent Overstreet
2012-10-03 1:28 ` Dave Chinner
2012-10-03 2:41 ` Kent Overstreet
2012-10-04 1:04 ` Dave Chinner
2012-10-03 19:15 ` Jeff Moyer
2012-10-04 19:37 ` Kent Overstreet
2012-10-02 19:34 ` Andi Kleen
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=20121002002216.GI26488@google.com \
--to=koverstreet@google.com \
--cc=dave.kleikamp@oracle.com \
--cc=dmonakhov@openvz.org \
--cc=jeffrey.d.skirvin@intel.com \
--cc=linux-fsdevel@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=martin.petersen@oracle.com \
--cc=michael.mesnier@intel.com \
--cc=mpatlasov@parallels.com \
--cc=tj@kernel.org \
--cc=tytso@google.com \
--cc=zab@zabbo.net \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).