From owner-freebsd-arch@FreeBSD.ORG Sun May 11 11:50:38 2008 Return-Path: Delivered-To: arch@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id B1A621065672 for ; Sun, 11 May 2008 11:50:38 +0000 (UTC) (envelope-from kostikbel@gmail.com) Received: from relay02.kiev.sovam.com (relay02.kiev.sovam.com [62.64.120.197]) by mx1.freebsd.org (Postfix) with ESMTP id 4F3F98FC15 for ; Sun, 11 May 2008 11:50:37 +0000 (UTC) (envelope-from kostikbel@gmail.com) Received: from [212.82.216.226] (helo=skuns.kiev.zoral.com.ua) by relay02.kiev.sovam.com with esmtps (TLSv1:AES256-SHA:256) (Exim 4.67) (envelope-from ) id 1JvA4a-000Akz-4P for arch@freebsd.org; Sun, 11 May 2008 14:50:36 +0300 Received: from deviant.kiev.zoral.com.ua (root@deviant.kiev.zoral.com.ua [10.1.1.148]) by skuns.kiev.zoral.com.ua (8.14.2/8.14.2) with ESMTP id m4BBoXZ6067678 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Sun, 11 May 2008 14:50:33 +0300 (EEST) (envelope-from kostikbel@gmail.com) Received: from deviant.kiev.zoral.com.ua (kostik@localhost [127.0.0.1]) by deviant.kiev.zoral.com.ua (8.14.2/8.14.2) with ESMTP id m4BBoUbG038958; Sun, 11 May 2008 14:50:30 +0300 (EEST) (envelope-from kostikbel@gmail.com) Received: (from kostik@localhost) by deviant.kiev.zoral.com.ua (8.14.2/8.14.2/Submit) id m4BBoUmP038957; Sun, 11 May 2008 14:50:30 +0300 (EEST) (envelope-from kostikbel@gmail.com) X-Authentication-Warning: deviant.kiev.zoral.com.ua: kostik set sender to kostikbel@gmail.com using -f Date: Sun, 11 May 2008 14:50:30 +0300 From: Kostik Belousov To: Jeff Roberson Message-ID: <20080511115030.GV18958@deviant.kiev.zoral.com.ua> References: <20080504171002.GN18958@deviant.kiev.zoral.com.ua> <20080510214812.Y954@desktop> Mime-Version: 1.0 Content-Type: multipart/signed; micalg=pgp-sha1; protocol="application/pgp-signature"; boundary="qN4ViQCmXmbGwFFk" Content-Disposition: inline In-Reply-To: <20080510214812.Y954@desktop> User-Agent: Mutt/1.4.2.3i X-Virus-Scanned: ClamAV version 0.91.2, clamav-milter version 0.91.2 on skuns.kiev.zoral.com.ua X-Virus-Status: Clean X-Spam-Status: No, score=-4.4 required=5.0 tests=ALL_TRUSTED,AWL,BAYES_00 autolearn=ham version=3.2.4 X-Spam-Checker-Version: SpamAssassin 3.2.4 (2008-01-01) on skuns.kiev.zoral.com.ua X-Scanner-Signature: eb35aeac2b84d7677a861f668fbe3b20 X-DrWeb-checked: yes X-SpamTest-Envelope-From: kostikbel@gmail.com X-SpamTest-Group-ID: 00000000 X-SpamTest-Header: Not Detected X-SpamTest-Info: Profiles 2798 [May 08 2008] X-SpamTest-Info: helo_type=3 X-SpamTest-Method: none X-SpamTest-Rate: 0 X-SpamTest-Status: Not detected X-SpamTest-Status-Extended: not_detected X-SpamTest-Version: SMTP-Filter Version 3.0.0 [0278], KAS30/Release Cc: arch@freebsd.org Subject: Re: Per-open file private data for the cdevs X-BeenThere: freebsd-arch@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Discussion related to FreeBSD architecture List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 11 May 2008 11:50:38 -0000 --qN4ViQCmXmbGwFFk Content-Type: text/plain; charset=us-ascii Content-Disposition: inline Content-Transfer-Encoding: quoted-printable On Sat, May 10, 2008 at 09:53:12PM -1000, Jeff Roberson wrote: > On Sun, 4 May 2008, Kostik Belousov wrote: >=20 > >Since the review for the clone-at-open patch (fdclone) posted some time = ago > >mostly says that it would be better to implement per-file private data > >instead, I produced the patch along this line, > > > >The patch does not change the cdevsw ABI, instead, three new functions > >nt devfs_get_cdevpriv(void **datap); > >int devfs_set_cdevpriv(void *priv, cdevpriv_dtr_t dtr); > >void devfs_clear_cdevpriv(void); > >are provided for manipulation of the per-file private data. > > > >devfs_set_cdevpriv assigns the priv as private data for the file descrip= tor > >which is used to initiate currently performed driver operation. dtr > >is the function that will be called when either the last refernce to > >the file goes away or devfs_clear_cdevpriv is called. > > > >devfs_get_cdevpriv is the obvious accessor. > > > >devfs_clear_cdevpriv allows to clear the private data for the still > >open file. > > > >The synchronization of the cdev data and file private data is left > >to the driver code, I did not found any generic helper mechanism that > >could be useful there. > > > >Patch: > >http://people.freebsd.org/~kib/misc/fdpriv.1.patch > > > >Dumb driver that shows the basic usage of the proposed KPI: > >http://people.freebsd.org/~kib/misc/fpclone.c > > > >Previous version of the patch was tested by Peter Holm. > > >=20 > Hi Kostik, >=20 > Are these per-instances structures intended to be used by anything other= =20 > than devices? If not can we make them a union with the DTYPE_VNODE=20 > fields to save space? >=20 > Thanks, > Jeff The current version of the patch is at http://people.freebsd.org/~kib/misc/fdpriv.3.patch Per insistence of John Baldwin and request of Eric Anholt, the destructors are called now when either file is last closed, or the device is destroyed. This versions adds only one pointer to the struct file. Jeff, would you, please, explicitely specify what field you propose to union with the f_cdevpriv ?=20 --qN4ViQCmXmbGwFFk Content-Type: application/pgp-signature Content-Disposition: inline -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.9 (FreeBSD) iEYEARECAAYFAkgm3YYACgkQC3+MBN1Mb4hbIwCcD28esE9RKMCnFttkosdRl1jq MtkAoO6YJUCMiv0mpNvlCIj72aX+h+Tj =CXpv -----END PGP SIGNATURE----- --qN4ViQCmXmbGwFFk--