Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 31 Jul 2012 09:22:25 +0200
From:      Giovanni Trematerra <gianni@freebsd.org>
To:        David Xu <davidxu@freebsd.org>
Cc:        svn-src-head@freebsd.org, svn-src-all@freebsd.org, src-committers@freebsd.org, Konstantin Belousov <kib@freebsd.org>, bde@freebsd.org
Subject:   Re: svn commit: r238936 - in head/sys: fs/fifofs kern sys
Message-ID:  <CACfq090si0g7QG9UR%2Bmb%2BO5M4KH0=WPfWnF5NzZjYzKBp8hQ5Q@mail.gmail.com>
In-Reply-To: <201207310548.q6V5mZHf091624@svn.freebsd.org>
References:  <201207310548.q6V5mZHf091624@svn.freebsd.org>

next in thread | previous in thread | raw e-mail | index | archive | help
On Tue, Jul 31, 2012 at 7:48 AM, David Xu <davidxu@freebsd.org> wrote:
> Author: davidxu
> Date: Tue Jul 31 05:48:35 2012
> New Revision: 238936
> URL: http://svn.freebsd.org/changeset/base/238936
>
> Log:
>   I am comparing current pipe code with the one in 8.3-STABLE r236165,
>   I found 8.3 is a history BSD version using socket to implement FIFO
>   pipe, it uses per-file seqcount to compare with writer generation
>   stored in per-pipe object. The concept is after all writers are gone,
>   the pipe enters next generation, all old readers have not closed the
>   pipe should get the indication that the pipe is disconnected, result
>   is they should get EPIPE, SIGPIPE or get POLLHUP in poll().
>   But newcomer should not know that previous writters were gone, it
>   should treat it as a fresh session.
>   I am trying to bring back FIFO pipe to history behavior. It is still
>   unclear that if single EOF flag can represent SBS_CANTSENDMORE and
>   SBS_CANTRCVMORE which socket-based version is using, but I have run
>   the poll regression test in tool directory, output is same as the one
>   on 8.3-STABLE now.
>   I think the output "not ok 18 FIFO state 6b: poll result 0 expected 1.
>   expected POLLHUP; got 0" might be bogus, because newcomer should not
>   know that old writers were gone. I got the same behavior on Linux.
>   Our implementation always return POLLIN for disconnected pipe even it
>   should return POLLHUP, but I think it is not wise to remove POLLIN for
>   compatible reason, this is our history behavior.
>

I'm sorry but I'm failing to understand the reason for this change.
Can you point me out a test that confirm that the change is needed.
The only thing I see is an increase in the memory footprint for the pipes.
There was a lot of discussions on this topic on -arch mailing list

http://lists.freebsd.org/pipermail/freebsd-arch/2012-January/012131.html
http://lists.freebsd.org/pipermail/freebsd-arch/2012-February/012314.html

Thank you

--
Gianni



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?CACfq090si0g7QG9UR%2Bmb%2BO5M4KH0=WPfWnF5NzZjYzKBp8hQ5Q>