From: "H. Peter Anvin" <hpa@zytor.com>
To: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Ian Kent <raven@themaw.net>, David Miller <davem@davemloft.net>,
linux-kernel@vger.kernel.org, autofs@vger.kernel.org,
Thomas Meyer <thomas@m3y3r.de>, Al Viro <viro@zeniv.linux.org.uk>
Subject: Re: compat: autofs v5 packet size ambiguity - update
Date: Wed, 22 Feb 2012 09:43:24 -0800 [thread overview]
Message-ID: <4F45293C.8050209@zytor.com> (raw)
In-Reply-To: <CA+55aFwUvuaGdnpwVQLQLF=DdqROmKqz65v+_DXHbebNhPqkLg@mail.gmail.com>
On 02/22/2012 08:10 AM, Linus Torvalds wrote:
>
> Well, the kernel gives the right semantics for pipes too - writes are
> guaranteed to be "atomic", so even in the presence of multiple writers
> you can trivially do packetized data.
>
> You just have to (a) add the length to the packet and (b) do the
> length+packet write as a single write (which is limited to PIPE_SIZE -
> 4kB - for the atomicity guarantee).
>
> If you don't have multiple concurrent writers without locking, the (b)
> part falls away entirely, of course.
>
> Yes, for the reader side you need to be able to handle the fact that
> you can get more than one packet in one read() call, but sorting that
> out isn't hard either.
>
What you describe above is pretty much how autofs 3 used to work; except
it would do one read() for the header including length and then another
read() for the body. Of course, it could just have read ahead -- if you
read part of the next packet, it wouldn't really matter since at least
at that time the daemon was single-threaded and would have to loop back
anyway.
The PIPE_SIZE guarantee took care of the fact that this was a multiple
writer/single reader situation (since the writes happens in the context
of the process requesting a mount.) Either way, SOCK_DGRAM and
SOCK_SEQPACKET would solve all of the problems and would Just Work, and
packet boundaries would then be explicit.
> But yeah, writing fixed-size data and then having a reader that reads
> fixed-size data is just not a very good approach. It's doubly bad when
> the "fixed size" isn't an explicit size that is documented in the
> protocol, but depends on data structures.
Indeed.
-hpa
--
H. Peter Anvin, Intel Open Source Technology Center
I work for Intel. I don't speak on their behalf.
next prev parent reply other threads:[~2012-02-22 17:43 UTC|newest]
Thread overview: 50+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-02-22 2:24 compat: autofs v5 packet size ambiguity - update Linus Torvalds
2012-02-22 3:16 ` David Miller
2012-02-22 3:33 ` Linus Torvalds
2012-02-22 3:47 ` Linus Torvalds
2012-02-22 4:20 ` Ian Kent
2012-02-22 4:56 ` Linus Torvalds
2012-02-22 5:43 ` Ian Kent
2012-02-22 5:53 ` Ian Kent
2012-02-22 5:57 ` Ian Kent
2012-02-22 9:32 ` Ian Kent
2012-02-22 12:15 ` Ian Kent
2012-02-22 12:39 ` Ian Kent
2012-02-22 12:45 ` Ian Kent
2012-02-22 16:20 ` Linus Torvalds
2012-02-22 15:13 ` H. Peter Anvin
2012-02-23 1:35 ` Ian Kent
2012-02-22 16:12 ` Linus Torvalds
2012-02-23 1:48 ` Ian Kent
2012-02-23 1:54 ` Ian Kent
2012-02-23 2:21 ` Ian Kent
2012-02-23 6:29 ` Ian Kent
2012-02-23 6:31 ` H. Peter Anvin
2012-02-23 11:20 ` Ian Kent
2012-02-23 11:26 ` Ian Kent
2012-02-23 8:54 ` Thomas Meyer
2012-02-23 1:56 ` Linus Torvalds
2012-02-23 2:09 ` Ian Kent
2012-02-23 2:11 ` Ian Kent
2012-02-23 2:25 ` Linus Torvalds
2012-02-23 2:32 ` Ian Kent
2012-02-25 11:28 ` Thomas Meyer
2012-02-25 22:10 ` [PATCH] autofs4: fix compilation without CONFIG_COMPAT Andreas Schwab
2012-02-26 1:31 ` Linus Torvalds
2012-02-26 1:46 ` H. Peter Anvin
2012-02-26 1:53 ` Linus Torvalds
2012-02-26 3:07 ` H. Peter Anvin
2012-02-26 9:05 ` Andreas Schwab
2012-02-27 7:29 ` Christian Borntraeger
2012-02-27 9:09 ` Heiko Carstens
2012-02-27 9:09 ` Heiko Carstens
2012-02-27 16:22 ` H. Peter Anvin
2012-02-27 16:25 ` Linus Torvalds
2012-02-27 9:20 ` Ian Kent
2012-02-22 6:02 ` compat: autofs v5 packet size ambiguity - update H. Peter Anvin
2012-02-22 16:10 ` Linus Torvalds
2012-02-22 17:43 ` H. Peter Anvin [this message]
2012-02-22 17:45 ` H. Peter Anvin
2012-02-22 18:16 ` Linus Torvalds
2012-02-22 18:19 ` Linus Torvalds
2012-02-22 18:20 ` H. Peter Anvin
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=4F45293C.8050209@zytor.com \
--to=hpa@zytor.com \
--cc=autofs@vger.kernel.org \
--cc=davem@davemloft.net \
--cc=linux-kernel@vger.kernel.org \
--cc=raven@themaw.net \
--cc=thomas@m3y3r.de \
--cc=torvalds@linux-foundation.org \
--cc=viro@zeniv.linux.org.uk \
/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.