PERFORCE change 106749 for review
Matt Jacob
mjacob at FreeBSD.org
Tue Sep 26 16:27:06 PDT 2006
http://perforce.freebsd.org/chv.cgi?CH=106749
Change 106749 by mjacob at 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 at 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) <<<
More information about the p4-projects
mailing list