Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 26 Sep 2006 23:26:58 GMT
From:      Matt Jacob <mjacob@FreeBSD.org>
To:        Perforce Change Reviews <perforce@freebsd.org>
Subject:   PERFORCE change 106749 for review
Message-ID:  <200609262326.k8QNQwpW098036@repoman.freebsd.org>

next in thread | raw e-mail | index | archive | help
http://perforce.freebsd.org/chv.cgi?CH=106749

Change 106749 by mjacob@newisp on 2006/09/26 23:26:45

	IFC

Affected files ...

.. //depot/projects/newisp/amd64/conf/GENERIC#2 integrate
.. //depot/projects/newisp/boot/pc98/boot2/inode.h#2 integrate
.. //depot/projects/newisp/conf/NOTES#5 integrate
.. //depot/projects/newisp/conf/options#3 integrate
.. //depot/projects/newisp/dev/ipmi/ipmi.c#3 integrate
.. //depot/projects/newisp/dev/isp/isp_freebsd.c#10 integrate
.. //depot/projects/newisp/dev/isp/isp_freebsd.h#6 integrate
.. //depot/projects/newisp/dev/smbus/smb.c#3 integrate
.. //depot/projects/newisp/fs/devfs/devfs_vfsops.c#3 integrate
.. //depot/projects/newisp/fs/hpfs/hpfs_vfsops.c#2 integrate
.. //depot/projects/newisp/fs/msdosfs/msdosfs_vfsops.c#2 integrate
.. //depot/projects/newisp/fs/ntfs/ntfs_vfsops.c#2 integrate
.. //depot/projects/newisp/fs/nullfs/null_vfsops.c#2 integrate
.. //depot/projects/newisp/fs/nwfs/nwfs_vfsops.c#2 integrate
.. //depot/projects/newisp/fs/portalfs/portal_vfsops.c#2 integrate
.. //depot/projects/newisp/fs/smbfs/smbfs_vfsops.c#2 integrate
.. //depot/projects/newisp/fs/udf/udf_vfsops.c#2 integrate
.. //depot/projects/newisp/fs/umapfs/umap_vfsops.c#2 integrate
.. //depot/projects/newisp/fs/unionfs/union_vfsops.c#2 integrate
.. //depot/projects/newisp/gnu/fs/ext2fs/ext2_inode.c#2 integrate
.. //depot/projects/newisp/gnu/fs/ext2fs/ext2_vfsops.c#2 integrate
.. //depot/projects/newisp/gnu/fs/reiserfs/reiserfs_vfsops.c#2 integrate
.. //depot/projects/newisp/i386/conf/GENERIC#2 integrate
.. //depot/projects/newisp/ia64/conf/GENERIC#2 integrate
.. //depot/projects/newisp/isofs/cd9660/cd9660_vfsops.c#2 integrate
.. //depot/projects/newisp/kern/uipc_mqueue.c#2 integrate
.. //depot/projects/newisp/kern/vfs_cluster.c#2 integrate
.. //depot/projects/newisp/kern/vfs_export.c#2 integrate
.. //depot/projects/newisp/kern/vfs_mount.c#3 integrate
.. //depot/projects/newisp/kern/vfs_subr.c#3 integrate
.. //depot/projects/newisp/kern/vfs_syscalls.c#4 integrate
.. //depot/projects/newisp/modules/wlan/Makefile#2 integrate
.. //depot/projects/newisp/net80211/ieee80211_ioctl.c#2 integrate
.. //depot/projects/newisp/nfsclient/nfs_vfsops.c#3 integrate
.. //depot/projects/newisp/nfsclient/nfs_vnops.c#3 integrate
.. //depot/projects/newisp/pc98/conf/GENERIC#2 integrate
.. //depot/projects/newisp/powerpc/conf/GENERIC#2 integrate
.. //depot/projects/newisp/sparc64/conf/GENERIC#2 integrate
.. //depot/projects/newisp/sys/copyright.h#3 integrate
.. //depot/projects/newisp/sys/mount.h#3 integrate
.. //depot/projects/newisp/ufs/ffs/ffs_snapshot.c#2 integrate
.. //depot/projects/newisp/ufs/ffs/ffs_softdep.c#3 integrate
.. //depot/projects/newisp/ufs/ffs/ffs_vfsops.c#2 integrate
.. //depot/projects/newisp/ufs/ufs/inode.h#2 integrate
.. //depot/projects/newisp/ufs/ufs/ufs_quota.c#3 integrate

Differences ...

==== //depot/projects/newisp/amd64/conf/GENERIC#2 (text+ko) ====

@@ -16,7 +16,7 @@
 # If you are in doubt as to the purpose or necessity of a line, check first
 # in NOTES.
 #
-# $FreeBSD: src/sys/amd64/conf/GENERIC,v 1.464 2006/07/09 16:39:21 mjacob Exp $
+# $FreeBSD: src/sys/amd64/conf/GENERIC,v 1.465 2006/09/26 12:36:33 ru Exp $
 
 cpu		HAMMER
 ident		GENERIC
@@ -49,6 +49,7 @@
 options 	COMPAT_IA32		# Compatible with i386 binaries
 options 	COMPAT_FREEBSD4		# Compatible with FreeBSD4
 options 	COMPAT_FREEBSD5		# Compatible with FreeBSD5
+options 	COMPAT_FREEBSD6		# Compatible with FreeBSD6
 options 	SCSI_DELAY=5000		# Delay (in ms) before probing SCSI
 options 	KTRACE			# ktrace(1) support
 options 	SYSVSHM			# SYSV-style shared memory

==== //depot/projects/newisp/boot/pc98/boot2/inode.h#2 (text+ko) ====

@@ -33,7 +33,7 @@
  *
  *	@(#)inode.h	8.9 (Berkeley) 5/14/95
  * %FreeBSD: src/sys/ufs/ufs/inode.h,v 1.28.2.2 2001/09/29 12:52:52 iedowse Exp %
- * $FreeBSD: src/sys/boot/pc98/boot2/inode.h,v 1.4 2004/06/16 18:21:22 phk Exp $
+ * $FreeBSD: src/sys/boot/pc98/boot2/inode.h,v 1.5 2006/09/26 04:15:57 tegge Exp $
  */
 
 #ifndef _UFS_UFS_INODE_H_
@@ -147,7 +147,7 @@
 
 /* Determine if soft dependencies are being done */
 #define DOINGSOFTDEP(vp)	((vp)->v_mount->mnt_flag & MNT_SOFTDEP)
-#define DOINGASYNC(vp)		((vp)->v_mount->mnt_flag & MNT_ASYNC)
+#define DOINGASYNC(vp)		((vp)->v_mount->mnt_kern_flag & MNTK_ASYNC)
 
 /* This overlays the fid structure (see mount.h). */
 struct ufid {

==== //depot/projects/newisp/conf/NOTES#5 (text+ko) ====

@@ -1,4 +1,4 @@
-# $FreeBSD: src/sys/conf/NOTES,v 1.1382 2006/09/25 11:40:14 scottl Exp $
+# $FreeBSD: src/sys/conf/NOTES,v 1.1383 2006/09/26 12:36:33 ru Exp $
 #
 # NOTES -- Lines that can be cut/pasted into kernel and hints configs.
 #
@@ -273,6 +273,9 @@
 # Enable FreeBSD5 compatibility syscalls
 options 	COMPAT_FREEBSD5
 
+# Enable FreeBSD6 compatibility syscalls
+options 	COMPAT_FREEBSD6
+
 #
 # These three options provide support for System V Interface
 # Definition-style interprocess communication, in the form of shared

==== //depot/projects/newisp/conf/options#3 (text+ko) ====

@@ -1,4 +1,4 @@
-# $FreeBSD: src/sys/conf/options,v 1.558 2006/09/20 13:33:40 rwatson Exp $
+# $FreeBSD: src/sys/conf/options,v 1.559 2006/09/26 12:36:33 ru Exp $
 #
 #        On the handling of kernel options
 #
@@ -67,6 +67,7 @@
 COMPAT_43TTY	opt_compat.h
 COMPAT_FREEBSD4	opt_compat.h
 COMPAT_FREEBSD5	opt_compat.h
+COMPAT_FREEBSD6	opt_compat.h
 COMPILING_LINT	opt_global.h
 CY_PCI_FASTINTR
 DIRECTIO

==== //depot/projects/newisp/dev/ipmi/ipmi.c#3 (text) ====

@@ -25,7 +25,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/ipmi/ipmi.c,v 1.4 2006/09/22 22:11:29 jhb Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/ipmi/ipmi.c,v 1.5 2006/09/26 15:48:13 jhb Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -949,9 +949,11 @@
 	int		count;
 	int		i;
 
-	devclass_get_devices(ipmi_devclass, &devs, &count);
+	if (devclass_get_devices(ipmi_devclass, &devs, &count) != 0)
+		return;
 	for (i = 0; i < count; i++)
 		device_delete_child(device_get_parent(devs[i]), devs[i]);
+	free(devs, M_TEMP);
 }
 SYSUNINIT(ipmi_unload, SI_SUB_DRIVERS, SI_ORDER_FIRST, ipmi_unload, NULL);
 

==== //depot/projects/newisp/dev/isp/isp_freebsd.c#10 (text+ko) ====

@@ -29,7 +29,7 @@
  * Platform (FreeBSD) dependent common attachment code for Qlogic adapters.
  */
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/isp/isp_freebsd.c,v 1.122 2006/09/01 04:57:14 mjacob Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/isp/isp_freebsd.c,v 1.123 2006/09/26 04:59:52 mjacob Exp $");
 #include <dev/isp/isp_freebsd.h>
 #include <sys/unistd.h>
 #include <sys/kthread.h>

==== //depot/projects/newisp/dev/isp/isp_freebsd.h#6 (text+ko) ====

@@ -1,4 +1,4 @@
-/* $FreeBSD: src/sys/dev/isp/isp_freebsd.h,v 1.92 2006/09/01 05:03:42 mjacob Exp $ */
+/* $FreeBSD: src/sys/dev/isp/isp_freebsd.h,v 1.93 2006/09/26 04:59:52 mjacob Exp $ */
 /*-
  * Qlogic ISP SCSI Host Adapter FreeBSD Wrapper Definitions
  *
@@ -164,6 +164,15 @@
 	struct firmware *	fw;
 	struct mtx		lock;
 	struct cv		kthread_cv;
+	union {
+		struct {
+			char wwnn[17];
+			char wwpn[17];
+		} fc;
+		struct {
+			int iid;
+		} spi;
+	} sysctl_info;
 #endif
 	struct proc		*kproc;
 	bus_dma_tag_t		cdmat;

==== //depot/projects/newisp/dev/smbus/smb.c#3 (text+ko) ====

@@ -23,9 +23,13 @@
  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  * SUCH DAMAGE.
  *
- * $FreeBSD: src/sys/dev/smbus/smb.c,v 1.37 2006/09/11 20:52:41 jhb Exp $
+ * $FreeBSD: src/sys/dev/smbus/smb.c,v 1.38 2006/09/26 14:38:56 jhb Exp $
  */
 
+#ifdef HAVE_KERNEL_OPTION_HEADERS
+#include "opt_compat.h"
+#endif
+
 #include <sys/param.h>
 #include <sys/kernel.h>
 #include <sys/systm.h>
@@ -270,7 +274,9 @@
 		}
 		break;
 
+#if defined(COMPAT_FREEBSD4) || defined(COMPAT_FREEBSD5) || defined(COMPAT_FREEBSD6)
 	case SMB_OLD_BREAD:
+#endif
 	case SMB_BREAD:
 		if (s->count && s->data.byte_ptr) {
 			count = min(s->count, SMB_MAXBLOCKSIZE);

==== //depot/projects/newisp/fs/devfs/devfs_vfsops.c#3 (text+ko) ====

@@ -31,7 +31,7 @@
  *	@(#)kernfs_vfsops.c	8.10 (Berkeley) 5/14/95
  * From: FreeBSD: src/sys/miscfs/kernfs/kernfs_vfsops.c 1.36
  *
- * $FreeBSD: src/sys/fs/devfs/devfs_vfsops.c,v 1.51 2006/09/18 13:23:08 kib Exp $
+ * $FreeBSD: src/sys/fs/devfs/devfs_vfsops.c,v 1.52 2006/09/26 04:12:45 tegge Exp $
  */
 
 #include <sys/param.h>
@@ -79,11 +79,13 @@
 	sx_init(&fmp->dm_lock, "devfsmount");
 	fmp->dm_holdcnt = 1;
 
+	MNT_ILOCK(mp);
 	mp->mnt_flag |= MNT_LOCAL;
 	mp->mnt_kern_flag |= MNTK_MPSAFE;
 #ifdef MAC
 	mp->mnt_flag |= MNT_MULTILABEL;
 #endif
+	MNT_IUNLOCK(mp);
 	fmp->dm_mount = mp;
 	mp->mnt_data = (void *) fmp;
 	vfs_getnewfsid(mp);

==== //depot/projects/newisp/fs/hpfs/hpfs_vfsops.c#2 (text+ko) ====

@@ -23,7 +23,7 @@
  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  * SUCH DAMAGE.
  *
- * $FreeBSD: src/sys/fs/hpfs/hpfs_vfsops.c,v 1.57 2005/10/31 15:41:20 rwatson Exp $
+ * $FreeBSD: src/sys/fs/hpfs/hpfs_vfsops.c,v 1.58 2006/09/26 04:12:45 tegge Exp $
  */
 
 
@@ -315,7 +315,9 @@
 	mp->mnt_stat.f_fsid.val[0] = (long)dev2udev(dev);
 	mp->mnt_stat.f_fsid.val[1] = mp->mnt_vfc->vfc_typenum;
 	mp->mnt_maxsymlinklen = 0;
+	MNT_ILOCK(mp);
 	mp->mnt_flag |= MNT_LOCAL;
+	MNT_IUNLOCK(mp);
 	return (0);
 
 failed:
@@ -359,7 +361,9 @@
 	hpfs_cpdeinit(hpmp);
 	hpfs_bmdeinit(hpmp);
 	mp->mnt_data = (qaddr_t)0;
+	MNT_ILOCK(mp);
 	mp->mnt_flag &= ~MNT_LOCAL;
+	MNT_IUNLOCK(mp);
 	FREE(hpmp, M_HPFSMNT);
 
 	return (0);

==== //depot/projects/newisp/fs/msdosfs/msdosfs_vfsops.c#2 (text+ko) ====

@@ -1,4 +1,4 @@
-/* $FreeBSD: src/sys/fs/msdosfs/msdosfs_vfsops.c,v 1.152 2006/08/03 03:55:52 delphij Exp $ */
+/* $FreeBSD: src/sys/fs/msdosfs/msdosfs_vfsops.c,v 1.153 2006/09/26 04:12:45 tegge Exp $ */
 /*	$NetBSD: msdosfs_vfsops.c,v 1.51 1997/11/17 15:36:58 ws Exp $	*/
 
 /*-
@@ -706,7 +706,9 @@
 	mp->mnt_data = (qaddr_t) pmp;
 	mp->mnt_stat.f_fsid.val[0] = dev2udev(dev);
 	mp->mnt_stat.f_fsid.val[1] = mp->mnt_vfc->vfc_typenum;
+	MNT_ILOCK(mp);
 	mp->mnt_flag |= MNT_LOCAL;
+	MNT_IUNLOCK(mp);
 
 #ifdef MSDOSFS_LARGE
 	msdosfs_fileno_init(mp);
@@ -798,7 +800,9 @@
 #endif
 	free(pmp, M_MSDOSFSMNT);
 	mp->mnt_data = (qaddr_t)0;
+	MNT_ILOCK(mp);
 	mp->mnt_flag &= ~MNT_LOCAL;
+	MNT_IUNLOCK(mp);
 	return (error);
 }
 

==== //depot/projects/newisp/fs/ntfs/ntfs_vfsops.c#2 (text+ko) ====

@@ -25,7 +25,7 @@
  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  * SUCH DAMAGE.
  *
- * $FreeBSD: src/sys/fs/ntfs/ntfs_vfsops.c,v 1.83 2006/05/26 00:32:20 rodrigc Exp $
+ * $FreeBSD: src/sys/fs/ntfs/ntfs_vfsops.c,v 1.84 2006/09/26 04:12:45 tegge Exp $
  */
 
 
@@ -430,7 +430,9 @@
 	mp->mnt_stat.f_fsid.val[0] = dev2udev(dev);
 	mp->mnt_stat.f_fsid.val[1] = mp->mnt_vfc->vfc_typenum;
 	mp->mnt_maxsymlinklen = 0;
+	MNT_ILOCK(mp);
 	mp->mnt_flag |= MNT_LOCAL;
+	MNT_IUNLOCK(mp);
 	return (0);
 
 out1:
@@ -507,7 +509,9 @@
 	ntfs_u28_uninit(ntmp);
 	ntfs_82u_uninit(ntmp);
 	mp->mnt_data = (qaddr_t)0;
+	MNT_ILOCK(mp);
 	mp->mnt_flag &= ~MNT_LOCAL;
+	MNT_IUNLOCK(mp);
 	FREE(ntmp->ntm_ad, M_NTFSMNT);
 	FREE(ntmp, M_NTFSMNT);
 	return (error);

==== //depot/projects/newisp/fs/nullfs/null_vfsops.c#2 (text+ko) ====

@@ -32,7 +32,7 @@
  *	@(#)null_vfsops.c	8.2 (Berkeley) 1/21/94
  *
  * @(#)lofs_vfsops.c	1.2 (Berkeley) 6/18/92
- * $FreeBSD: src/sys/fs/nullfs/null_vfsops.c,v 1.79 2006/05/28 22:45:52 rodrigc Exp $
+ * $FreeBSD: src/sys/fs/nullfs/null_vfsops.c,v 1.80 2006/09/26 04:12:45 tegge Exp $
  */
 
 /*
@@ -179,9 +179,14 @@
 	 */
 	VOP_UNLOCK(vp, 0, td);
 
-	if (NULLVPTOLOWERVP(nullm_rootvp)->v_mount->mnt_flag & MNT_LOCAL)
+	if (NULLVPTOLOWERVP(nullm_rootvp)->v_mount->mnt_flag & MNT_LOCAL) {
+		MNT_ILOCK(mp);
 		mp->mnt_flag |= MNT_LOCAL;
+		MNT_IUNLOCK(mp);
+	}
+	MNT_ILOCK(mp);
 	mp->mnt_kern_flag |= lowerrootvp->v_mount->mnt_kern_flag & MNTK_MPSAFE;
+	MNT_IUNLOCK(mp);
 	mp->mnt_data = (qaddr_t) xmp;
 	vfs_getnewfsid(mp);
 

==== //depot/projects/newisp/fs/nwfs/nwfs_vfsops.c#2 (text+ko) ====

@@ -29,7 +29,7 @@
  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  * SUCH DAMAGE.
  *
- * $FreeBSD: src/sys/fs/nwfs/nwfs_vfsops.c,v 1.43 2005/12/14 00:49:51 des Exp $
+ * $FreeBSD: src/sys/fs/nwfs/nwfs_vfsops.c,v 1.44 2006/09/26 04:12:46 tegge Exp $
  */
 
 #include <sys/param.h>
@@ -267,7 +267,9 @@
 	if (nmp->m.flags & NWFS_MOUNT_HAVE_NLS)
 		free(nmp->m.nls.to_lower, M_NWFSDATA);
 	free(nmp, M_NWFSDATA);
+	MNT_ILOCK(mp);
 	mp->mnt_flag &= ~MNT_LOCAL;
+	MNT_IUNLOCK(mp);
 	return (error);
 }
 

==== //depot/projects/newisp/fs/portalfs/portal_vfsops.c#2 (text+ko) ====

@@ -31,7 +31,7 @@
  *
  *	@(#)portal_vfsops.c	8.11 (Berkeley) 5/14/95
  *
- * $FreeBSD: src/sys/fs/portalfs/portal_vfsops.c,v 1.58 2005/10/31 15:41:21 rwatson Exp $
+ * $FreeBSD: src/sys/fs/portalfs/portal_vfsops.c,v 1.59 2006/09/26 04:12:46 tegge Exp $
  */
 
 /*
@@ -146,7 +146,9 @@
 	fhold(fp);
 	fmp->pm_server = fp;
 
+	MNT_ILOCK(mp);
 	mp->mnt_flag |= MNT_LOCAL;
+	MNT_IUNLOCK(mp);
 	mp->mnt_data = (qaddr_t) fmp;
 	vfs_getnewfsid(mp);
 

==== //depot/projects/newisp/fs/smbfs/smbfs_vfsops.c#2 (text+ko) ====

@@ -29,7 +29,7 @@
  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  * SUCH DAMAGE.
  *
- * $FreeBSD: src/sys/fs/smbfs/smbfs_vfsops.c,v 1.40 2006/07/17 16:13:42 jhb Exp $
+ * $FreeBSD: src/sys/fs/smbfs/smbfs_vfsops.c,v 1.41 2006/09/26 04:12:46 tegge Exp $
  */
 
 #include <sys/param.h>
@@ -318,7 +318,9 @@
 #else
 	free(smp, M_SMBFSDATA);
 #endif
+	MNT_ILOCK(mp);
 	mp->mnt_flag &= ~MNT_LOCAL;
+	MNT_IUNLOCK(mp);
 	return error;
 }
 

==== //depot/projects/newisp/fs/udf/udf_vfsops.c#2 (text+ko) ====

@@ -23,7 +23,7 @@
  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  * SUCH DAMAGE.
  *
- * $FreeBSD: src/sys/fs/udf/udf_vfsops.c,v 1.43 2006/07/25 14:15:50 yar Exp $
+ * $FreeBSD: src/sys/fs/udf/udf_vfsops.c,v 1.44 2006/09/26 04:12:46 tegge Exp $
  */
 
 /* udf_vfsops.c */
@@ -201,7 +201,9 @@
 	/*
 	 * Unconditionally mount as read-only.
 	 */
+	MNT_ILOCK(mp);
 	mp->mnt_flag |= MNT_RDONLY;
+	MNT_IUNLOCK(mp);
 
 	/*
 	 * No root filesystem support.  Probably not a big deal, since the
@@ -341,7 +343,9 @@
 	mp->mnt_data = (qaddr_t)udfmp;
 	mp->mnt_stat.f_fsid.val[0] = dev2udev(devvp->v_rdev);
 	mp->mnt_stat.f_fsid.val[1] = mp->mnt_vfc->vfc_typenum;
+	MNT_ILOCK(mp);
 	mp->mnt_flag |= MNT_LOCAL;
+	MNT_IUNLOCK(mp);
 	udfmp->im_mountp = mp;
 	udfmp->im_dev = devvp->v_rdev;
 	udfmp->im_devvp = devvp;
@@ -532,7 +536,9 @@
 	FREE(udfmp, M_UDFMOUNT);
 
 	mp->mnt_data = (qaddr_t)0;
+	MNT_ILOCK(mp);
 	mp->mnt_flag &= ~MNT_LOCAL;
+	MNT_IUNLOCK(mp);
 
 	return (0);
 }

==== //depot/projects/newisp/fs/umapfs/umap_vfsops.c#2 (text+ko) ====

@@ -31,7 +31,7 @@
  *
  *	@(#)umap_vfsops.c	8.8 (Berkeley) 5/14/95
  *
- * $FreeBSD: src/sys/fs/umapfs/umap_vfsops.c,v 1.64 2005/10/31 15:41:21 rwatson Exp $
+ * $FreeBSD: src/sys/fs/umapfs/umap_vfsops.c,v 1.65 2006/09/26 04:12:46 tegge Exp $
  */
 
 /*
@@ -216,8 +216,11 @@
 	umapm_rootvp = vp;
 	umapm_rootvp->v_vflag |= VV_ROOT;
 	amp->umapm_rootvp = umapm_rootvp;
-	if (UMAPVPTOLOWERVP(umapm_rootvp)->v_mount->mnt_flag & MNT_LOCAL)
+	if (UMAPVPTOLOWERVP(umapm_rootvp)->v_mount->mnt_flag & MNT_LOCAL) {
+		MNT_ILOCK(mp);
 		mp->mnt_flag |= MNT_LOCAL;
+		MNT_IUNLOCK(mp);
+	}
 	mp->mnt_data = (qaddr_t) amp;
 	vfs_getnewfsid(mp);
 

==== //depot/projects/newisp/fs/unionfs/union_vfsops.c#2 (text+ko) ====

@@ -31,7 +31,7 @@
  * SUCH DAMAGE.
  *
  *	@(#)union_vfsops.c	8.20 (Berkeley) 5/20/95
- * $FreeBSD: src/sys/fs/unionfs/union_vfsops.c,v 1.77 2005/10/31 15:41:22 rwatson Exp $
+ * $FreeBSD: src/sys/fs/unionfs/union_vfsops.c,v 1.78 2006/09/26 04:12:46 tegge Exp $
  */
 
 /*
@@ -86,7 +86,9 @@
 	/*
 	 * Disable clustered write, otherwise system becomes unstable.
 	 */
+	MNT_ILOCK(mp);
 	mp->mnt_flag |= MNT_NOCLUSTERW;
+	MNT_IUNLOCK(mp);
 
 	if (mp->mnt_flag & MNT_ROOTFS)
 		return (EOPNOTSUPP);
@@ -246,8 +248,11 @@
 	if (um->um_op == UNMNT_ABOVE) {
 		if (((um->um_lowervp == NULLVP) ||
 		     (um->um_lowervp->v_mount->mnt_flag & MNT_LOCAL)) &&
-		    (um->um_uppervp->v_mount->mnt_flag & MNT_LOCAL))
+		    (um->um_uppervp->v_mount->mnt_flag & MNT_LOCAL)) {
+			MNT_ILOCK(mp);
 			mp->mnt_flag |= MNT_LOCAL;
+			MNT_IUNLOCK(mp);
+		}
 	}
 
 	/*
@@ -257,7 +262,9 @@
 	 * mount of the underlying filesystem to go from rdonly to rdwr
 	 * will leave the unioned view as read-only.
 	 */
+	MNT_ILOCK(mp);
 	mp->mnt_flag |= (um->um_uppervp->v_mount->mnt_flag & MNT_RDONLY);
+	MNT_IUNLOCK(mp);
 
 	mp->mnt_data = (qaddr_t) um;
 	vfs_getnewfsid(mp);

==== //depot/projects/newisp/gnu/fs/ext2fs/ext2_inode.c#2 (text+ko) ====

@@ -33,7 +33,7 @@
  * SUCH DAMAGE.
  *
  *	@(#)ffs_inode.c	8.5 (Berkeley) 12/30/93
- * $FreeBSD: src/sys/gnu/fs/ext2fs/ext2_inode.c,v 1.57 2005/12/05 11:58:33 ru Exp $
+ * $FreeBSD: src/sys/gnu/fs/ext2fs/ext2_inode.c,v 1.58 2006/09/26 04:15:58 tegge Exp $
  */
 
 #include <sys/param.h>
@@ -92,7 +92,7 @@
 	}
 	ext2_i2ei(ip, (struct ext2_inode *)((char *)bp->b_data +
 	    EXT2_INODE_SIZE * ino_to_fsbo(fs, ip->i_number)));
-	if (waitfor && (vp->v_mount->mnt_flag & MNT_ASYNC) == 0)
+	if (waitfor && (vp->v_mount->mnt_kern_flag & MNTK_ASYNC) == 0)
 		return (bwrite(bp));
 	else {
 		bdwrite(bp);

==== //depot/projects/newisp/gnu/fs/ext2fs/ext2_vfsops.c#2 (text+ko) ====

@@ -33,7 +33,7 @@
  * SUCH DAMAGE.
  *
  *	@(#)ffs_vfsops.c	8.8 (Berkeley) 4/18/94
- * $FreeBSD: src/sys/gnu/fs/ext2fs/ext2_vfsops.c,v 1.157 2006/05/26 00:32:20 rodrigc Exp $
+ * $FreeBSD: src/sys/gnu/fs/ext2fs/ext2_vfsops.c,v 1.158 2006/09/26 04:12:47 tegge Exp $
  */
 
 /*-
@@ -230,7 +230,9 @@
 			fs->s_es->s_state &= ~EXT2_VALID_FS;
 			ext2_sbupdate(ump, MNT_WAIT);
 			fs->s_rd_only = 0;
+			MNT_ILOCK(mp);
 			mp->mnt_flag &= ~MNT_RDONLY;
+			MNT_IUNLOCK(mp);
 		}
 		if (vfs_flagopt(opts, "export", NULL, 0)) {
 			/* Process export requests in vfs_mount.c. */
@@ -683,7 +685,9 @@
 	mp->mnt_stat.f_fsid.val[0] = dev2udev(dev);
 	mp->mnt_stat.f_fsid.val[1] = mp->mnt_vfc->vfc_typenum;
 	mp->mnt_maxsymlinklen = EXT2_MAXSYMLINKLEN;
+	MNT_ILOCK(mp);
 	mp->mnt_flag |= MNT_LOCAL;
+	MNT_IUNLOCK(mp);
 	ump->um_mountp = mp;
 	ump->um_dev = dev;
 	ump->um_devvp = devvp;
@@ -771,7 +775,9 @@
 	bsd_free(fs, M_EXT2MNT);
 	bsd_free(ump, M_EXT2MNT);
 	mp->mnt_data = (qaddr_t)0;
+	MNT_ILOCK(mp);
 	mp->mnt_flag &= ~MNT_LOCAL;
+	MNT_IUNLOCK(mp);
 	return (error);
 }
 

==== //depot/projects/newisp/gnu/fs/reiserfs/reiserfs_vfsops.c#2 (text+ko) ====

@@ -4,7 +4,7 @@
  * 
  * Ported to FreeBSD by Jean-Sébastien Pédron <jspedron@club-internet.fr>
  * 
- * $FreeBSD: src/sys/gnu/fs/reiserfs/reiserfs_vfsops.c,v 1.5 2006/05/26 11:58:30 rodrigc Exp $
+ * $FreeBSD: src/sys/gnu/fs/reiserfs/reiserfs_vfsops.c,v 1.6 2006/09/26 04:12:47 tegge Exp $
  */
 
 #include <gnu/fs/reiserfs/reiserfs_fs.h>
@@ -241,7 +241,9 @@
 	}
 
 	mp->mnt_data  = (qaddr_t)0;
+	MNT_ILOCK(mp);
 	mp->mnt_flag &= ~MNT_LOCAL;
+	MNT_IUNLOCK(mp);
 
 	reiserfs_log(LOG_DEBUG, "done\n");
 	return (error);
@@ -624,7 +626,9 @@
 	mp->mnt_data = (qaddr_t)rmp;
 	mp->mnt_stat.f_fsid.val[0] = dev2udev(dev);
 	mp->mnt_stat.f_fsid.val[1] = mp->mnt_vfc->vfc_typenum;
+	MNT_ILOCK(mp);
 	mp->mnt_flag |= MNT_LOCAL;
+	MNT_IUNLOCK(mp);
 #if defined(si_mountpoint)
 	devvp->v_rdev->si_mountpoint = mp;
 #endif

==== //depot/projects/newisp/i386/conf/GENERIC#2 (text+ko) ====

@@ -16,7 +16,7 @@
 # If you are in doubt as to the purpose or necessity of a line, check first
 # in NOTES.
 #
-# $FreeBSD: src/sys/i386/conf/GENERIC,v 1.455 2006/07/25 01:06:32 yongari Exp $
+# $FreeBSD: src/sys/i386/conf/GENERIC,v 1.456 2006/09/26 12:36:34 ru Exp $
 
 cpu		I486_CPU
 cpu		I586_CPU
@@ -49,6 +49,7 @@
 options 	COMPAT_43TTY		# BSD 4.3 TTY compat [KEEP THIS!]
 options 	COMPAT_FREEBSD4		# Compatible with FreeBSD4
 options 	COMPAT_FREEBSD5		# Compatible with FreeBSD5
+options 	COMPAT_FREEBSD6		# Compatible with FreeBSD6
 options 	SCSI_DELAY=5000		# Delay (in ms) before probing SCSI
 options 	KTRACE			# ktrace(1) support
 options 	SYSVSHM			# SYSV-style shared memory

==== //depot/projects/newisp/ia64/conf/GENERIC#2 (text+ko) ====

@@ -18,7 +18,7 @@
 #
 # For hardware specific information check HARDWARE.TXT
 #
-# $FreeBSD: src/sys/ia64/conf/GENERIC,v 1.82 2006/07/09 16:39:37 mjacob Exp $
+# $FreeBSD: src/sys/ia64/conf/GENERIC,v 1.83 2006/09/26 12:36:34 ru Exp $
 
 cpu		ITANIUM
 ident		GENERIC
@@ -28,6 +28,7 @@
 options 	CD9660		# ISO 9660 Filesystem
 options 	COMPAT_43TTY	# BSD 4.3 TTY compat [KEEP THIS!]
 options 	COMPAT_FREEBSD5	# Compatible with FreeBSD5
+options 	COMPAT_FREEBSD6	# Compatible with FreeBSD6
 options 	DDB		# Support DDB
 options 	FFS		# Berkeley Fast Filesystem
 options 	GDB		# Support remote GDB

==== //depot/projects/newisp/isofs/cd9660/cd9660_vfsops.c#2 (text+ko) ====

@@ -35,7 +35,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/isofs/cd9660/cd9660_vfsops.c,v 1.145 2006/05/26 00:32:20 rodrigc Exp $");
+__FBSDID("$FreeBSD: src/sys/isofs/cd9660/cd9660_vfsops.c,v 1.146 2006/09/26 04:12:47 tegge Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -137,7 +137,9 @@
 	/*
 	 * Unconditionally mount as read-only.
 	 */
+	MNT_ILOCK(mp);
 	mp->mnt_flag |= MNT_RDONLY;
+	MNT_IUNLOCK(mp);
 
 	fspec = vfs_getopts(mp->mnt_optnew, "from", &error);
 	if (error)
@@ -378,7 +380,9 @@
 	mp->mnt_stat.f_fsid.val[0] = dev2udev(dev);
 	mp->mnt_stat.f_fsid.val[1] = mp->mnt_vfc->vfc_typenum;
 	mp->mnt_maxsymlinklen = 0;
+	MNT_ILOCK(mp);
 	mp->mnt_flag |= MNT_LOCAL;
+	MNT_IUNLOCK(mp);
 	isomp->im_mountp = mp;
 	isomp->im_dev = dev;
 	isomp->im_devvp = devvp;
@@ -528,7 +532,9 @@
 	vrele(isomp->im_devvp);
 	free((caddr_t)isomp, M_ISOFSMNT);
 	mp->mnt_data = (qaddr_t)0;
+	MNT_ILOCK(mp);
 	mp->mnt_flag &= ~MNT_LOCAL;
+	MNT_IUNLOCK(mp);
 	return (error);
 }
 

==== //depot/projects/newisp/kern/uipc_mqueue.c#2 (text+ko) ====

@@ -43,7 +43,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/kern/uipc_mqueue.c,v 1.15 2006/04/17 18:20:37 jhb Exp $");
+__FBSDID("$FreeBSD: src/sys/kern/uipc_mqueue.c,v 1.16 2006/09/26 04:12:47 tegge Exp $");
 
 #include <sys/param.h>
 #include <sys/kernel.h>
@@ -561,8 +561,10 @@
 		return (EOPNOTSUPP);
 
 	mp->mnt_data = &mqfs_data;
+	MNT_ILOCK(mp);
 	mp->mnt_flag |= MNT_LOCAL;
 	mp->mnt_kern_flag |= MNTK_MPSAFE;
+	MNT_IUNLOCK(mp);
 	vfs_getnewfsid(mp);
 
 	sbp = &mp->mnt_stat;

==== //depot/projects/newisp/kern/vfs_cluster.c#2 (text+ko) ====

@@ -32,7 +32,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/kern/vfs_cluster.c,v 1.172 2006/03/21 01:04:24 tegge Exp $");
+__FBSDID("$FreeBSD: src/sys/kern/vfs_cluster.c,v 1.173 2006/09/26 04:15:58 tegge Exp $");
 
 #include "opt_debug_cluster.h"
 
@@ -595,7 +595,7 @@
 	int async;
 
 	if (vp->v_type == VREG) {
-		async = vp->v_mount->mnt_flag & MNT_ASYNC;
+		async = vp->v_mount->mnt_kern_flag & MNTK_ASYNC;
 		lblocksize = vp->v_mount->mnt_stat.f_iosize;
 	} else {
 		async = 0;

==== //depot/projects/newisp/kern/vfs_export.c#2 (text+ko) ====

@@ -35,7 +35,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/kern/vfs_export.c,v 1.335 2005/10/31 15:41:25 rwatson Exp $");
+__FBSDID("$FreeBSD: src/sys/kern/vfs_export.c,v 1.336 2006/09/26 04:12:47 tegge Exp $");
 
 #include <sys/param.h>
 #include <sys/dirent.h>
@@ -117,7 +117,9 @@
 		bcopy(argp->ex_anon.cr_groups, np->netc_anon.cr_groups,
 		    sizeof(np->netc_anon.cr_groups));
 		refcount_init(&np->netc_anon.cr_ref, 1);
+		MNT_ILOCK(mp);
 		mp->mnt_flag |= MNT_DEFEXPORTED;
+		MNT_IUNLOCK(mp);
 		return (0);
 	}
 
@@ -236,13 +238,17 @@
 			return (ENOENT);
 		if (mp->mnt_flag & MNT_EXPUBLIC) {
 			vfs_setpublicfs(NULL, NULL, NULL);
+			MNT_ILOCK(mp);
 			mp->mnt_flag &= ~MNT_EXPUBLIC;
+			MNT_IUNLOCK(mp);
 		}
 		vfs_free_addrlist(nep);
 		mp->mnt_export = NULL;
 		free(nep, M_MOUNT);
 		nep = NULL;
+		MNT_ILOCK(mp);
 		mp->mnt_flag &= ~(MNT_EXPORTED | MNT_DEFEXPORTED);
+		MNT_IUNLOCK(mp);
 	}
 	if (argp->ex_flags & MNT_EXPORTED) {
 		if (nep == NULL) {
@@ -252,11 +258,15 @@
 		if (argp->ex_flags & MNT_EXPUBLIC) {
 			if ((error = vfs_setpublicfs(mp, nep, argp)) != 0)
 				return (error);
+			MNT_ILOCK(mp);
 			mp->mnt_flag |= MNT_EXPUBLIC;
+			MNT_IUNLOCK(mp);
 		}
 		if ((error = vfs_hang_addrlist(mp, nep, argp)))
 			return (error);
+		MNT_ILOCK(mp);
 		mp->mnt_flag |= MNT_EXPORTED;
+		MNT_IUNLOCK(mp);
 	}
 	return (0);
 }

==== //depot/projects/newisp/kern/vfs_mount.c#3 (text+ko) ====

@@ -35,7 +35,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/kern/vfs_mount.c,v 1.233 2006/09/19 14:04:12 kib Exp $");
+__FBSDID("$FreeBSD: src/sys/kern/vfs_mount.c,v 1.238 2006/09/26 04:20:08 tegge Exp $");
 
 #include <sys/param.h>
 #include <sys/conf.h>
@@ -471,7 +471,9 @@
 	mp->mnt_vfc = vfsp;
 	vfsp->vfc_refcount++;	/* XXX Unlocked */
 	mp->mnt_stat.f_type = vfsp->vfc_typenum;
+	MNT_ILOCK(mp);
 	mp->mnt_flag |= vfsp->vfc_flags & MNT_VISFLAGMASK;
+	MNT_IUNLOCK(mp);
 	strlcpy(mp->mnt_stat.f_fstypename, vfsp->vfc_name, MFSNAMELEN);
 	mp->mnt_vnodecovered = vp;
 	mp->mnt_cred = crdup(td->td_ucred);
@@ -788,7 +790,7 @@
 	struct mount *mp;
 	struct vfsconf *vfsp;
 	struct export_args export;
-	int error, flag = 0, kern_flag = 0;
+	int error, flag = 0;
 	struct vattr va;
 	struct nameidata nd;
 
@@ -848,17 +850,19 @@
 			return (EINVAL);
 		}
 		mp = vp->v_mount;
+		MNT_ILOCK(mp);
 		flag = mp->mnt_flag;
-		kern_flag = mp->mnt_kern_flag;
 		/*
 		 * We only allow the filesystem to be reloaded if it
 		 * is currently mounted read-only.
 		 */
 		if ((fsflags & MNT_RELOAD) &&
 		    ((mp->mnt_flag & MNT_RDONLY) == 0)) {
+			MNT_IUNLOCK(mp);
 			vput(vp);
 			return (EOPNOTSUPP);	/* Needs translation */
 		}
+		MNT_IUNLOCK(mp);
 		/*
 		 * Only privileged root, or (if MNT_USER is set) the user that
 		 * did the original mount is permitted to update it.
@@ -882,8 +886,10 @@
 		}
 		vp->v_iflag |= VI_MOUNT;
 		VI_UNLOCK(vp);
+		MNT_ILOCK(mp);
 		mp->mnt_flag |= fsflags &
 		    (MNT_RELOAD | MNT_FORCE | MNT_UPDATE | MNT_SNAPSHOT | MNT_ROOTFS);
+		MNT_IUNLOCK(mp);
 		VOP_UNLOCK(vp, 0, td);
 		mp->mnt_optnew = fsdata;
 		vfs_mergeopts(mp->mnt_optnew, mp->mnt_opt);
@@ -935,10 +941,13 @@
 	/*
 	 * Set the mount level flags.
 	 */
-	if (fsflags & MNT_RDONLY)
-		mp->mnt_flag |= MNT_RDONLY;
-	mp->mnt_flag &=~ MNT_UPDATEMASK;
-	mp->mnt_flag |= fsflags & (MNT_UPDATEMASK | MNT_FORCE | MNT_ROOTFS);
+	MNT_ILOCK(mp);
+	mp->mnt_flag = (mp->mnt_flag & ~MNT_UPDATEMASK) |
+		(fsflags & (MNT_UPDATEMASK | MNT_FORCE | MNT_ROOTFS |
+			    MNT_RDONLY));
+	if ((mp->mnt_flag & MNT_ASYNC) == 0)
+		mp->mnt_kern_flag &= ~MNTK_ASYNC;
+	MNT_IUNLOCK(mp);
 	/*
 	 * Mount the filesystem.
 	 * XXX The final recipients of VFS_MOUNT just overwrite the ndp they
@@ -968,12 +977,18 @@
 	*/
 	mp->mnt_optnew = NULL;
 	if (mp->mnt_flag & MNT_UPDATE) {
-		mp->mnt_flag &=
-		    ~(MNT_UPDATE | MNT_RELOAD | MNT_FORCE | MNT_SNAPSHOT);
-		if (error) {
-			mp->mnt_flag = flag;
-			mp->mnt_kern_flag = kern_flag;
-		}
+		MNT_ILOCK(mp);
+		if (error)
+			mp->mnt_flag = (mp->mnt_flag & MNT_QUOTA) |
+				(flag & ~MNT_QUOTA);
+		else
+			mp->mnt_flag &=	~(MNT_UPDATE | MNT_RELOAD |
+					  MNT_FORCE | MNT_SNAPSHOT);
+		if ((mp->mnt_flag & MNT_ASYNC) != 0 && mp->mnt_noasync == 0)
+			mp->mnt_kern_flag |= MNTK_ASYNC;
+		else
+			mp->mnt_kern_flag &= ~MNTK_ASYNC;
+		MNT_IUNLOCK(mp);
 		if ((mp->mnt_flag & MNT_RDONLY) == 0) {
 			if (mp->mnt_syncer == NULL)
 				error = vfs_allocate_syncvnode(mp);
@@ -989,6 +1004,12 @@
 		vrele(vp);
 		return (error);
 	}
+	MNT_ILOCK(mp);
+	if ((mp->mnt_flag & MNT_ASYNC) != 0 && mp->mnt_noasync == 0)
+		mp->mnt_kern_flag |= MNTK_ASYNC;
+	else
+		mp->mnt_kern_flag &= ~MNTK_ASYNC;
+	MNT_IUNLOCK(mp);
 	vn_lock(vp, LK_EXCLUSIVE | LK_RETRY, td);
 	/*
 	 * Put the new filesystem on the mount list after root.
@@ -1185,8 +1206,11 @@
 		vfs_setpublicfs(NULL, NULL, NULL);
 
 	vfs_msync(mp, MNT_WAIT);
+	MNT_ILOCK(mp);
 	async_flag = mp->mnt_flag & MNT_ASYNC;
 	mp->mnt_flag &= ~MNT_ASYNC;
+	mp->mnt_kern_flag &= ~MNTK_ASYNC;
+	MNT_IUNLOCK(mp);
 	cache_purgevfs(mp);	/* remove cache entries for this file sys */
 	if (mp->mnt_syncer != NULL)
 		vrele(mp->mnt_syncer);
@@ -1228,6 +1252,8 @@
 		MNT_ILOCK(mp);
 		mp->mnt_kern_flag &= ~(MNTK_UNMOUNT | MNTK_UNMOUNTF);
 		mp->mnt_flag |= async_flag;
+		if ((mp->mnt_flag & MNT_ASYNC) != 0 && mp->mnt_noasync == 0)
+			mp->mnt_kern_flag |= MNTK_ASYNC;
 		lockmgr(&mp->mnt_lock, LK_RELEASE, NULL, td);
 		if (mp->mnt_kern_flag & MNTK_MWAIT)
 			wakeup(mp);

==== //depot/projects/newisp/kern/vfs_subr.c#3 (text+ko) ====

@@ -39,7 +39,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/kern/vfs_subr.c,v 1.682 2006/09/04 22:15:44 pjd Exp $");
+__FBSDID("$FreeBSD: src/sys/kern/vfs_subr.c,v 1.684 2006/09/26 04:15:58 tegge Exp $");
 
 #include "opt_ddb.h"
 #include "opt_mac.h"
@@ -3051,7 +3051,7 @@
 	struct vnode *syncvp = ap->a_vp;
 	struct mount *mp = syncvp->v_mount;
 	struct thread *td = ap->a_td;
-	int error, asyncflag;
+	int error;
 	struct bufobj *bo;
 
 	/*
@@ -3081,12 +3081,17 @@
 		vfs_unbusy(mp, td);
 		return (0);
 	}
-	asyncflag = mp->mnt_flag & MNT_ASYNC;
-	mp->mnt_flag &= ~MNT_ASYNC;
+	MNT_ILOCK(mp);
+	mp->mnt_noasync++;
+	mp->mnt_kern_flag &= ~MNTK_ASYNC;
+	MNT_IUNLOCK(mp);
 	vfs_msync(mp, MNT_NOWAIT);
 	error = VFS_SYNC(mp, MNT_LAZY, td);
-	if (asyncflag)
-		mp->mnt_flag |= MNT_ASYNC;
+	MNT_ILOCK(mp);
+	mp->mnt_noasync--;
+	if ((mp->mnt_flag & MNT_ASYNC) != 0 && mp->mnt_noasync == 0)

>>> TRUNCATED FOR MAIL (1000 lines) <<<



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200609262326.k8QNQwpW098036>