From: Michael Tokarev <mjt@tls.msk.ru>
To: Linus Torvalds <torvalds@linux-foundation.org>
Cc: "H. Peter Anvin" <hpa@zytor.com>,
Linux Kernel Mailing List <linux-kernel@vger.kernel.org>,
Alan Cox <alan@lxorguk.ukuu.org.uk>, Ian Kent <raven@themaw.net>,
Thomas Meyer <thomas@m3y3r.de>,
autofs@vger.kernel.org
Subject: Re: autofs: make the autofsv5 packet file descriptor use a packetized pipe
Date: Mon, 30 Apr 2012 10:43:00 +0400 [thread overview]
Message-ID: <4F9E3474.2050405@msgid.tls.msk.ru> (raw)
In-Reply-To: <4F9E30BF.4030704@msgid.tls.msk.ru>
On 30.04.2012 10:27, Michael Tokarev wrote:
>> On 04/29/2012 01:54 PM, Linux Kernel Mailing List wrote:
>>> However, a prettier solution exists now thanks to the packetized pipe
>>> mode. By marking the communication pipe as being packetized (by simply
>>> setting the O_DIRECT flag), we can always just write the bigger packet
>>> size, and if user-space does a smaller read, it will just get that
>>> partial end result and the extra alignment padding will simply be thrown
>>> away.
>
>> +static inline int autofs_prepare_pipe(struct file *pipe)
>> +{
>> + if (!pipe->f_op || !pipe->f_op->write)
>> + return -EINVAL;
>> + if (!S_ISFIFO(pipe->f_dentry->d_inode->i_mode))
>> + return -EINVAL;
>> + /* We want a packet pipe */
>> + pipe->f_flags |= O_DIRECT;
>> + return 0;
>> +}
>> +
>
> @@ -376,7 +376,7 @@ static int autofs_dev_ioctl_setpipefd(st
> err = -EBADF;
> goto out;
> }
> - if (!pipe->f_op || !pipe->f_op->write) {
> + if (autofs_prepare_pipe(pipe) < 0) {
> err = -EPIPE;
> fput(pipe);
> goto out;
>
> I've one more concern. I'm not sure but I think there's some
> risk still. This packetizing gets applied to all VERSIONS of
> the autofs PROTOCOL. Which means it will be applied to the
> lowest supported version (3) TOO, but did that version read
> whole packets too?
I think this is a false alarm. I checked autofs v3 and v4
userspace code (found on http://www.kernel.org/pub/linux/daemons/autofs )
and they both read whole packet at once, not piece-wise.
I didn't test if any of these actually work with any current
kernel, however ;)
Thanks,
/mjt
next prev parent reply other threads:[~2012-04-30 6:43 UTC|newest]
Thread overview: 19+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <20120429205429.63CCD7C0064@ra.kernel.org>
2012-04-30 0:15 ` autofs: make the autofsv5 packet file descriptor use a packetized pipe H. Peter Anvin
2012-04-30 0:25 ` Linus Torvalds
2012-04-30 0:28 ` H. Peter Anvin
2012-04-30 0:33 ` Linus Torvalds
2012-04-30 0:35 ` H. Peter Anvin
2012-04-30 0:43 ` Linus Torvalds
2012-04-30 0:45 ` H. Peter Anvin
2012-04-30 1:29 ` Ian Kent
2012-04-30 1:56 ` Linus Torvalds
2012-04-30 5:57 ` Ian Kent
2012-04-30 0:30 ` H. Peter Anvin
2012-04-30 0:37 ` Linus Torvalds
2012-04-30 20:03 ` H. Peter Anvin
2012-04-30 20:11 ` Linus Torvalds
2012-04-30 20:14 ` H. Peter Anvin
2012-04-30 6:27 ` Michael Tokarev
2012-04-30 6:43 ` Michael Tokarev [this message]
2012-04-30 6:48 ` H. Peter Anvin
2012-04-30 6:55 ` Ian Kent
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=4F9E3474.2050405@msgid.tls.msk.ru \
--to=mjt@tls.msk.ru \
--cc=alan@lxorguk.ukuu.org.uk \
--cc=autofs@vger.kernel.org \
--cc=hpa@zytor.com \
--cc=linux-kernel@vger.kernel.org \
--cc=raven@themaw.net \
--cc=thomas@m3y3r.de \
--cc=torvalds@linux-foundation.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.