From owner-freebsd-fs@FreeBSD.ORG Sat Jan 19 17:14:17 2008 Return-Path: Delivered-To: fs@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 26F2516A417 for ; Sat, 19 Jan 2008 17:14:17 +0000 (UTC) (envelope-from rwatson@FreeBSD.org) Received: from cyrus.watson.org (cyrus.watson.org [209.31.154.42]) by mx1.freebsd.org (Postfix) with ESMTP id EA39413C448 for ; Sat, 19 Jan 2008 17:14:16 +0000 (UTC) (envelope-from rwatson@FreeBSD.org) Received: from fledge.watson.org (fledge.watson.org [209.31.154.41]) by cyrus.watson.org (Postfix) with ESMTP id 2A3CF47588; Sat, 19 Jan 2008 11:56:52 -0500 (EST) Date: Sat, 19 Jan 2008 16:56:52 +0000 (GMT) From: Robert Watson X-X-Sender: robert@fledge.watson.org To: Rune , Jan Harkes Message-ID: <20080119165056.E3375@fledge.watson.org> MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII; format=flowed Cc: fs@FreeBSD.org Subject: Various FreeBSD Coda fixes X-BeenThere: freebsd-fs@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Filesystems List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 19 Jan 2008 17:14:17 -0000 Rune, Jan, Well, I got very slightly carried away, and I believe I've fixed a number of the problems being reported: - I applied the nullfs-style VM object sharing to Coda, which seems to get binaries working, although as I mentioned I do have some reservations. - I hooked up a null printer for vop_print rather than panic so locking problems can be debugged more easily. - I fixed several vnode locking related problems, including failing to acquire the vnode lock before returning from mkdir, lock recursion leading to a panic on unmount, etc. - I fixed statfs so it displays something a bit more sensible. I'm not sure if these can be MFC'd before 7.0, but will ask re@ if we can fit them in. Certainly, it's better than panicking, which is a relatively likely scenario with what's currently in RELENG_7. The only remaining problem I'm aware of is that the Coda module leaks memory when unloaded, presumably because the unload routine doesn't actually do any cleanup. I've not investigated further as yet, but this is somewhat more edge case than the other problems. Robert N M Watson Computer Laboratory University of Cambridge ---------- Forwarded message ---------- Date: Sat, 19 Jan 2008 13:27:14 +0000 (UTC) From: Robert Watson To: src-committers@FreeBSD.org, cvs-src@FreeBSD.org, cvs-all@FreeBSD.org Subject: cvs commit: src/sys/fs/coda coda_vnops.c rwatson 2008-01-19 13:27:14 UTC FreeBSD src repository Modified files: sys/fs/coda coda_vnops.c Log: Borrow the VM object associated with an underlying cache vnode with the Coda vnode derived from it, in the style of nullfs. This allows files in the Coda file system to be memory-mapped, such as with execve(2) or mmap(2). MFC after: 3 days Reported by: Rune Revision Changes Path 1.79 +5 -1 src/sys/fs/coda/coda_vnops.c ---------- Forwarded message ---------- Date: Sat, 19 Jan 2008 13:29:14 +0000 (UTC) From: Robert Watson To: src-committers@FreeBSD.org, cvs-src@FreeBSD.org, cvs-all@FreeBSD.org Subject: cvs commit: src/sys/fs/coda coda_vnops.c rwatson 2008-01-19 13:29:14 UTC FreeBSD src repository Modified files: sys/fs/coda coda_vnops.c Log: Lock the new directory vnode returned by coda_mkdir(), as this is required by FreeBSD's vnode locking protocol. MFC after: 3 days Revision Changes Path 1.80 +5 -1 src/sys/fs/coda/coda_vnops.c ---------- Forwarded message ---------- Date: Sat, 19 Jan 2008 13:41:56 +0000 (UTC) From: Robert Watson To: src-committers@FreeBSD.org, cvs-src@FreeBSD.org, cvs-all@FreeBSD.org Subject: cvs commit: src/sys/fs/coda coda_vnops.c rwatson 2008-01-19 13:41:56 UTC FreeBSD src repository Modified files: sys/fs/coda coda_vnops.c Log: Use VOP_NULL rather than VOP_PANIC for Coda's vop_print routine, so as to avoid panicking in DDB show lockedvnods. MFC after: 3 days Revision Changes Path 1.81 +1 -1 src/sys/fs/coda/coda_vnops.c ---------- Forwarded message ---------- Date: Sat, 19 Jan 2008 14:32:44 +0000 (UTC) From: Robert Watson To: src-committers@FreeBSD.org, cvs-src@FreeBSD.org, cvs-all@FreeBSD.org Subject: cvs commit: src/sys/fs/coda cnode.h coda_namecache.h coda_psdev.c coda_vfsops.c rwatson 2008-01-19 14:32:44 UTC FreeBSD src repository Modified files: sys/fs/coda cnode.h coda_namecache.h coda_psdev.c coda_vfsops.c Log: Don't declare functions as extern. Move all extern variable definitions to associated .h files, move some extern variable definitions between include files to place them more appropriately. MFC after: 3 days Revision Changes Path 1.22 +0 -6 src/sys/fs/coda/cnode.h 1.12 +22 -15 src/sys/fs/coda/coda_namecache.h 1.40 +0 -3 src/sys/fs/coda/coda_psdev.c 1.70 +0 -3 src/sys/fs/coda/coda_vfsops.c ---------- Forwarded message ---------- Date: Sat, 19 Jan 2008 15:39:10 +0000 (UTC) From: Robert Watson To: src-committers@FreeBSD.org, cvs-src@FreeBSD.org, cvs-all@FreeBSD.org Subject: cvs commit: src/sys/fs/coda coda_vnops.c rwatson 2008-01-19 15:39:10 UTC FreeBSD src repository Modified files: sys/fs/coda coda_vnops.c Log: Don't acquire an additional vnode reference to a vnode when it is opened and then release it when it is closed: we rely on the caller to keep the vnode around with a valid reference. This avoids vrele() destroying the vnode vop_close() is being called from during a call to vop_close(), and a crash due to lockmgr recursing the vnode lock when a Coda unmount occurs. MFC after: 3 days Revision Changes Path 1.82 +0 -5 src/sys/fs/coda/coda_vnops.c ---------- Forwarded message ---------- Date: Sat, 19 Jan 2008 15:40:46 +0000 (UTC) From: Robert Watson To: src-committers@FreeBSD.org, cvs-src@FreeBSD.org, cvs-all@FreeBSD.org Subject: cvs commit: src/sys/fs/coda coda_vfsops.c rwatson 2008-01-19 15:40:46 UTC FreeBSD src repository Modified files: sys/fs/coda coda_vfsops.c Log: Zero mi_rotovp and coda_ctlvp immediately after calling vrele() on the vnodes during coda_unmount() in order to detect errant use of them after the vnode references may no longer be valid. No need to clear the VV_ROOT flag on mi_rootvp flag (especially after the vnode reference is no longer valid) as this isn't done on other file systems. MFC after: 3 days Revision Changes Path 1.71 +2 -3 src/sys/fs/coda/coda_vfsops.c ---------- Forwarded message ---------- Date: Sat, 19 Jan 2008 16:39:14 +0000 (UTC) From: Robert Watson To: src-committers@FreeBSD.org, cvs-src@FreeBSD.org, cvs-all@FreeBSD.org Subject: cvs commit: src/sys/fs/coda coda_vfsops.c rwatson 2008-01-19 16:39:14 UTC FreeBSD src repository Modified files: sys/fs/coda coda_vfsops.c Log: Rework coda_statfs(): no longer need to zero the statfs structure or fill out all fields, just fill out the ones the file system knows about. Among other things, this causes the outpuf of "mount" and "df" to make quite a bit more sense as /dev/cfs0 is specified as the mountfrom name. MFC after: 3 days Revision Changes Path 1.72 +1 -6 src/sys/fs/coda/coda_vfsops.c