From owner-cvs-all@FreeBSD.ORG Tue Jan 17 17:29:06 2006 Return-Path: X-Original-To: cvs-all@FreeBSD.org Delivered-To: cvs-all@FreeBSD.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id C63FD16A41F; Tue, 17 Jan 2006 17:29:06 +0000 (GMT) (envelope-from alfred@FreeBSD.org) Received: from repoman.freebsd.org (repoman.freebsd.org [216.136.204.115]) by mx1.FreeBSD.org (Postfix) with ESMTP id ACDF543D5A; Tue, 17 Jan 2006 17:29:03 +0000 (GMT) (envelope-from alfred@FreeBSD.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.13.1/8.13.1) with ESMTP id k0HHT3d4026619; Tue, 17 Jan 2006 17:29:03 GMT (envelope-from alfred@repoman.freebsd.org) Received: (from alfred@localhost) by repoman.freebsd.org (8.13.1/8.13.1/Submit) id k0HHT3Ng026618; Tue, 17 Jan 2006 17:29:03 GMT (envelope-from alfred) Message-Id: <200601171729.k0HHT3Ng026618@repoman.freebsd.org> From: Alfred Perlstein Date: Tue, 17 Jan 2006 17:29:03 +0000 (UTC) To: src-committers@FreeBSD.org, cvs-src@FreeBSD.org, cvs-all@FreeBSD.org X-FreeBSD-CVS-Branch: HEAD Cc: Subject: cvs commit: src/sys/fs/hpfs hpfs_vnops.c src/sys/fs/msdosfs msdosfs_denode.c src/sys/fs/ntfs ntfs_vnops.c src/sys/fs/nwfs nwfs_node.c src/sys/fs/smbfs smbfs_node.c src/sys/fs/udf udf_vnops.c src/sys/isofs/cd9660 cd9660_node.c src/sys/nfsclient ... X-BeenThere: cvs-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: CVS commit messages for the entire tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 17 Jan 2006 17:29:07 -0000 alfred 2006-01-17 17:29:03 UTC FreeBSD src repository Modified files: sys/fs/hpfs hpfs_vnops.c sys/fs/msdosfs msdosfs_denode.c sys/fs/ntfs ntfs_vnops.c sys/fs/nwfs nwfs_node.c sys/fs/smbfs smbfs_node.c sys/fs/udf udf_vnops.c sys/isofs/cd9660 cd9660_node.c sys/nfsclient nfs_node.c Log: I ran into an nfs client panic a couple of times in a row over the last few days. I tracked it down to the fact that nfs_reclaim() is setting vp->v_data to NULL _before_ calling vnode_destroy_object(). After silence from the mailing list I checked further and discovered that ufs_reclaim() is unique among FreeBSD filesystems for calling vnode_destroy_object() early, long before tossing v_data or much of anything else, for that matter. The rest, including NFS, appear to be identical, as if they were just clones of one original routine. The enclosed patch fixes all file systems in essentially the same way, by moving the call to vnode_destroy_object() to early in the routine (before the call to vfs_hash_remove(), if any). I have only tested NFS, but I've now run for over eighteen hours with the patch where I wouldn't get past four or five without it. Submitted by: Frank Mayhar Requested by: Mohan Srinivasan MFC After: 1 week Revision Changes Path 1.68 +5 -1 src/sys/fs/hpfs/hpfs_vnops.c 1.91 +4 -1 src/sys/fs/msdosfs/msdosfs_denode.c 1.57 +5 -1 src/sys/fs/ntfs/ntfs_vnops.c 1.38 +5 -1 src/sys/fs/nwfs/nwfs_node.c 1.30 +4 -1 src/sys/fs/smbfs/smbfs_node.c 1.60 +5 -1 src/sys/fs/udf/udf_vnops.c 1.55 +4 -1 src/sys/isofs/cd9660/cd9660_node.c 1.79 +5 -1 src/sys/nfsclient/nfs_node.c