From owner-cvs-all Mon Sep 25 8:24:10 2000 Delivered-To: cvs-all@freebsd.org Received: from freefall.freebsd.org (freefall.FreeBSD.org [216.136.204.21]) by hub.freebsd.org (Postfix) with ESMTP id AC5B237B422; Mon, 25 Sep 2000 08:24:05 -0700 (PDT) Received: (from bp@localhost) by freefall.freebsd.org (8.9.3/8.9.2) id IAA48463; Mon, 25 Sep 2000 08:24:05 -0700 (PDT) (envelope-from bp@FreeBSD.org) Message-Id: <200009251524.IAA48463@freefall.freebsd.org> From: Boris Popov Date: Mon, 25 Sep 2000 08:24:05 -0700 (PDT) To: cvs-committers@FreeBSD.org, cvs-all@FreeBSD.org Subject: cvs commit: src/sys/kern vfs_default.c vfs_subr.c src/sys/nfs nfs_vnops.c src/sys/sys vnode.h src/sys/ufs/ffs ffs_vfsops.c src/sys/ufs/ufs inode.h ufs_ihash.c ufs_vnops.c X-FreeBSD-CVS-Branch: HEAD Sender: owner-cvs-all@FreeBSD.ORG Precedence: bulk X-Loop: FreeBSD.ORG bp 2000/09/25 08:24:05 PDT Modified files: sys/kern vfs_default.c vfs_subr.c sys/nfs nfs_vnops.c sys/sys vnode.h sys/ufs/ffs ffs_vfsops.c sys/ufs/ufs inode.h ufs_ihash.c ufs_vnops.c Log: Add a lock structure to vnode structure. Previously it was either allocated separately (nfs, cd9660 etc) or keept as a first element of structure referenced by v_data pointer(ffs). Such organization leads to known problems with stacked filesystems. From this point vop_no*lock*() functions maintain only interlock lock. vop_std*lock*() functions maintain built-in v_lock structure using lockmgr(). vop_sharedlock() is compatible with vop_stdunlock(), but maintains a shared lock on vnode. If filesystem wishes to export lockmgr compatible lock, it can put an address of this lock to v_vnlock field. This indicates that the upper filesystem can take advantage of it and use single lock structure for entire (or part) of stack of vnodes. This field shouldn't be examined or modified by VFS code except for initialization purposes. Reviewed in general by: mckusick Revision Changes Path 1.36 +19 -53 src/sys/kern/vfs_default.c 1.280 +6 -5 src/sys/kern/vfs_subr.c 1.159 +5 -1 src/sys/nfs/nfs_vnops.c 1.129 +4 -2 src/sys/sys/vnode.h 1.127 +6 -2 src/sys/ufs/ffs/ffs_vfsops.c 1.32 +1 -2 src/sys/ufs/ufs/inode.h 1.23 +2 -2 src/sys/ufs/ufs/ufs_ihash.c 1.149 +2 -2 src/sys/ufs/ufs/ufs_vnops.c To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe cvs-all" in the body of the message