From owner-freebsd-current@FreeBSD.ORG Sat Nov 13 23:28:08 2004 Return-Path: Delivered-To: freebsd-current@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 6DA9016A4CE for ; Sat, 13 Nov 2004 23:28:08 +0000 (GMT) Received: from critter.freebsd.dk (critter.freebsd.dk [212.242.86.163]) by mx1.FreeBSD.org (Postfix) with ESMTP id BC0E843D45 for ; Sat, 13 Nov 2004 23:28:07 +0000 (GMT) (envelope-from phk@critter.freebsd.dk) Received: from critter.freebsd.dk (localhost [127.0.0.1]) by critter.freebsd.dk (8.13.1/8.13.1) with ESMTP id iADNS541038193 for ; Sun, 14 Nov 2004 00:28:06 +0100 (CET) (envelope-from phk@critter.freebsd.dk) To: current@freebsd.org From: "Poul-Henning Kamp" Date: Sun, 14 Nov 2004 00:28:05 +0100 Message-ID: <38192.1100388485@critter.freebsd.dk> Sender: phk@critter.freebsd.dk Subject: [TEST] device and fifo vnode bypass, Giantfree select/poll X-BeenThere: freebsd-current@freebsd.org X-Mailman-Version: 2.1.1 Precedence: list List-Id: Discussions about the use of FreeBSD-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 13 Nov 2004 23:28:08 -0000 This solves the problem seen in the device vnode bypass mode (vfs.devfs.fops=1), typically with a message like: panic: specread() on un-referenced struct cdev *(ttyp1) Please try setting vfs.devfs.fops=1 in loader.conf again and beat up the code even harder. I have code in p4:phk_bufwork which does vnode bypass for FIFOs and Giant free select(2)/poll(2) for networking. If you have perforce access, please help beat up on this code. Poul-Henning In message <200411132321.iADNLsZN032634@repoman.freebsd.org>, Poul-Henning Kamp writes: >phk 2004-11-13 23:21:54 UTC > > FreeBSD src repository > > Modified files: > sys/fs/devfs devfs_vnops.c > Log: > Add the devfs_fp_check() function which helps us get from a struct file > to a cdev and a devsw, doing all the relevant checks along the way. > > Add the check to see if fp->f_vnode->v_rdev differs from our cached > fp->f_data copy of our cdev. If it does the device was revoked and > we return ENXIO. > > Revision Changes Path > 1.83 +34 -70 src/sys/fs/devfs/devfs_vnops.c > -- Poul-Henning Kamp | UNIX since Zilog Zeus 3.20 phk@FreeBSD.ORG | TCP/IP since RFC 956 FreeBSD committer | BSD since 4.3-tahoe Never attribute to malice what can adequately be explained by incompetence.