From owner-cvs-src@FreeBSD.ORG Sun Nov 25 17:33:55 2007 Return-Path: Delivered-To: cvs-src@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 37FE916A572; Sun, 25 Nov 2007 17:33:54 +0000 (UTC) (envelope-from dumbbell@FreeBSD.org) Received: from repoman.freebsd.org (repoman.freebsd.org [IPv6:2001:4f8:fff6::29]) by mx1.freebsd.org (Postfix) with ESMTP id 92CC813C461; Sun, 25 Nov 2007 17:33:54 +0000 (UTC) (envelope-from dumbbell@FreeBSD.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.14.1/8.14.1) with ESMTP id lAPHXsDG021509; Sun, 25 Nov 2007 17:33:54 GMT (envelope-from dumbbell@repoman.freebsd.org) Received: (from dumbbell@localhost) by repoman.freebsd.org (8.14.1/8.14.1/Submit) id lAPHXsuA021508; Sun, 25 Nov 2007 17:33:54 GMT (envelope-from dumbbell) Message-Id: <200711251733.lAPHXsuA021508@repoman.freebsd.org> From: Jean-Sebastien Pedron Date: Sun, 25 Nov 2007 17:33:54 +0000 (UTC) To: src-committers@FreeBSD.org, cvs-src@FreeBSD.org, cvs-all@FreeBSD.org X-FreeBSD-CVS-Branch: RELENG_6_3 Cc: Subject: cvs commit: src/sys/kern sys_pipe.c X-BeenThere: cvs-src@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: CVS commit messages for the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 25 Nov 2007 17:33:55 -0000 dumbbell 2007-11-25 17:33:54 UTC FreeBSD src repository Modified files: (Branch: RELENG_6_3) sys/kern sys_pipe.c Log: MFC 1.193: The kernel uses two ways to write data on a pipe: o buffered write, for chunks smaller than PIPE_MINDIRECT bytes o direct write, for everything else A call to writev(2) may receive struct iov of various size and the kernel may have to switch from one solution to the other. Before doing this, it must wake reader processes and any select/poll/kqueue up. This commit fixes a bug where select/poll/kqueue are not triggered when switching from buffered write to direct write. It adds calls to pipeselwakeup(). I give more details on freebsd-arch@: http://lists.freebsd.org/pipermail/freebsd-arch/2007-September/006790.html This should fix issues with Erlang (lang/erlang) and kqueue. Reported by: Rickard Green (Erlang) Approved by: re (kensmith) Revision Changes Path 1.184.2.2.6.1 +4 -0 src/sys/kern/sys_pipe.c