From: Amerigo Wang <xiyou.wangcong@gmail.com>
To: Changli Gao <xiaosuo@gmail.com>
Cc: Amerigo Wang <xiyou.wangcong@gmail.com>,
Linus Torvalds <torvalds@linux-foundation.org>,
Linux Kernel Mailing List <linux-kernel@vger.kernel.org>
Subject: Re: PROPOSAL: extend pipe() to support NULL argument.
Date: Fri, 3 Jul 2009 17:42:29 +0800 [thread overview]
Message-ID: <20090703094229.GI5880@cr0.nay.redhat.com> (raw)
In-Reply-To: <412e6f7f0907030127u3d6806dfo9168600e7c71b241@mail.gmail.com>
On Fri, Jul 03, 2009 at 04:27:29PM +0800, Changli Gao wrote:
>On Fri, Jul 3, 2009 at 4:16 PM, Amerigo Wang<xiyou.wangcong@gmail.com> wrote:
>> On Fri, Jul 03, 2009 at 03:40:34PM +0800, Changli Gao wrote:
>>>On Fri, Jul 3, 2009 at 3:15 PM, Amerigo Wang<xiyou.wangcong@gmail.com> wrote:
>>>>
>>>> If saving one fd really helps here, probably you want to
>>>> save more, you will need a syscall like:
>>>>
>>>> int splice_without_new_fd(int infd, int outfd);
>>>Do you know sendfile()? Its current implementation is buggy, and will
>>>be blocked on outfd. Anyway, the above code is just a use case, there
>>>are other cases sendfile can't cover.
>>
>> So what? So you should fix it intead of inventing a new pipe() and use
>> splice(2)...
>I said: It just a special case. Fixing sendfile() won't fix everything.
What do you want? Just saving an fd, isn't it?
sendfile() does this but you said it's buggy, if you fix it, what is the
rest problem?
>
>>
>> Wait... if splice(2) doesn't block, what is your point for saving
>> an fd in your code? You can do:
>>
>> int splice_two_fd(int fd1, int fd2)
>> {
>> int fds[2];
>> pipe(fds);
>> splice(fd1, fds[0]);//not block
>> splice(fds[1], fd2);//not block
>> close(fds[0]); //can be closed soon
>> close(fds[1]); //ditto
>> }
>>
>> Outside this function no new fd's are used.
>>
>In fact, sendfile(2) is implemented via splice(2) infrastructure. The
>logic is the same, and much clever than yours. Dive into its code, you
>will find the reason why it must be blocked on outfd.
Sure, this is done in user-space, definitely....
>
>>>
>>>>
>>>> But splice(2) is designed to be as it is. You need to increase
>>>> your fd limit, instead of saving one by pipe().
>>>>
>>>I don't agree with you. We should save resource as much as we can, and
>>>not work around it.
>>
>> You are saying splice(2) is wrong? Because it is splice(2) who
>> needs 3 fd's finally.
>>
>It isn't splice(2)'s fault. In fact, I can also work around this issue
>by named pipe.
And increase the max fd number...
next prev parent reply other threads:[~2009-07-03 9:40 UTC|newest]
Thread overview: 33+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-07-02 7:36 PROPOSAL: extend pipe() to support NULL argument Changli Gao
2009-07-02 9:13 ` Amerigo Wang
2009-07-02 9:18 ` Changli Gao
2009-07-02 9:46 ` Amerigo Wang
2009-07-02 10:04 ` Changli Gao
2009-07-02 10:21 ` Amerigo Wang
2009-07-03 0:43 ` Changli Gao
2009-07-03 1:55 ` Amerigo Wang
2009-07-03 2:10 ` Changli Gao
2009-07-03 3:00 ` Amerigo Wang
2009-07-03 4:08 ` Changli Gao
2009-07-03 5:19 ` Amerigo Wang
2009-07-03 5:42 ` Changli Gao
2009-07-03 7:15 ` Amerigo Wang
2009-07-03 7:40 ` Changli Gao
2009-07-03 8:16 ` Amerigo Wang
2009-07-03 8:27 ` Changli Gao
2009-07-03 9:42 ` Amerigo Wang [this message]
2009-07-03 9:59 ` Changli Gao
2009-07-03 10:23 ` Amerigo Wang
2009-07-03 10:28 ` Albert ARIBAUD
2009-07-06 1:12 ` Changli Gao
2009-07-06 6:15 ` Albert ARIBAUD
2009-07-06 6:23 ` Changli Gao
2009-07-06 6:30 ` Albert ARIBAUD
2009-07-07 4:43 ` Denys Vlasenko
2009-07-07 7:45 ` Changli Gao
2009-07-07 20:37 ` David Newall
2009-07-07 21:02 ` Zan Lynx
2009-07-08 4:41 ` Changli Gao
2009-07-08 4:43 ` David Newall
2009-07-02 10:42 ` Alan Cox
2009-07-03 0:45 ` Changli Gao
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=20090703094229.GI5880@cr0.nay.redhat.com \
--to=xiyou.wangcong@gmail.com \
--cc=linux-kernel@vger.kernel.org \
--cc=torvalds@linux-foundation.org \
--cc=xiaosuo@gmail.com \
/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