PERFORCE change 136129 for review

Warner Losh imp at FreeBSD.org
Sun Feb 24 23:50:10 UTC 2008


http://perforce.freebsd.org/chv.cgi?CH=136129

Change 136129 by imp at imp_paco-paco on 2008/02/24 23:49:45

	IFC @136127

Affected files ...

.. //depot/projects/arm/src/bin/sh/cd.c#2 integrate
.. //depot/projects/arm/src/gnu/lib/libgcc/Makefile#6 integrate
.. //depot/projects/arm/src/lib/libc/powerpc/gen/flt_rounds.c#2 integrate
.. //depot/projects/arm/src/lib/libc/powerpc/gen/fpgetmask.c#2 integrate
.. //depot/projects/arm/src/lib/libc/powerpc/gen/fpgetround.c#2 integrate
.. //depot/projects/arm/src/lib/libc/powerpc/gen/fpgetsticky.c#2 integrate
.. //depot/projects/arm/src/lib/libc/powerpc/gen/fpsetmask.c#2 integrate
.. //depot/projects/arm/src/lib/libc/powerpc/gen/fpsetround.c#2 integrate
.. //depot/projects/arm/src/lib/msun/powerpc/fenv.h#2 integrate
.. //depot/projects/arm/src/sys/contrib/opensolaris/uts/common/fs/zfs/zfs_znode.c#6 integrate
.. //depot/projects/arm/src/sys/fs/nwfs/nwfs_node.c#7 integrate
.. //depot/projects/arm/src/sys/fs/pseudofs/pseudofs_vncache.c#10 integrate
.. //depot/projects/arm/src/sys/fs/smbfs/smbfs_node.c#9 integrate
.. //depot/projects/arm/src/sys/gnu/fs/xfs/FreeBSD/xfs_freebsd_iget.c#4 integrate
.. //depot/projects/arm/src/sys/kern/vfs_lookup.c#20 integrate
.. //depot/projects/arm/src/sys/netncp/ncp_conn.c#7 integrate
.. //depot/projects/arm/src/sys/netsmb/smb_conn.c#6 integrate
.. //depot/projects/arm/src/sys/nfsclient/nfs_node.c#12 integrate
.. //depot/projects/arm/src/sys/powerpc/fpu/fpu_emu.c#2 integrate
.. //depot/projects/arm/src/sys/powerpc/include/float.h#2 integrate
.. //depot/projects/arm/src/sys/sys/vnode.h#21 integrate
.. //depot/projects/arm/src/sys/ufs/ffs/ffs_softdep.c#22 integrate
.. //depot/projects/arm/src/sys/ufs/ffs/ffs_vfsops.c#28 integrate
.. //depot/projects/arm/src/sys/vm/vm_object.c#26 integrate
.. //depot/projects/arm/src/tools/regression/bin/sh/builtins/cd1.0#1 branch
.. //depot/projects/arm/src/usr.bin/ar/write.c#2 integrate
.. //depot/projects/arm/src/usr.bin/find/find.1#7 integrate

Differences ...

==== //depot/projects/arm/src/bin/sh/cd.c#2 (text+ko) ====

@@ -36,7 +36,7 @@
 #endif
 #endif /* not lint */
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/bin/sh/cd.c,v 1.35 2006/06/12 21:06:00 stefanf Exp $");
+__FBSDID("$FreeBSD: src/bin/sh/cd.c,v 1.36 2008/02/24 16:50:55 stefanf Exp $");
 
 #include <sys/types.h>
 #include <sys/stat.h>
@@ -68,7 +68,9 @@
 STATIC int cdphysical(char *);
 STATIC int docd(char *, int, int);
 STATIC char *getcomponent(void);
-STATIC int updatepwd(char *);
+STATIC char *findcwd(char *);
+STATIC void updatepwd(char *);
+STATIC char *getpwd2(char *, size_t);
 
 STATIC char *curdir = NULL;	/* current working directory */
 STATIC char *prevdir;		/* previous working directory */
@@ -201,10 +203,11 @@
 	}
 
 	INTOFF;
-	if (updatepwd(badstat ? NULL : dest) < 0 || chdir(curdir) < 0) {
+	if ((p = findcwd(badstat ? NULL : dest)) == NULL || chdir(p) < 0) {
 		INTON;
 		return (-1);
 	}
+	updatepwd(p);
 	INTON;
 	return (0);
 }
@@ -212,12 +215,14 @@
 STATIC int
 cdphysical(char *dest)
 {
+	char *p;
 
 	INTOFF;
-	if (chdir(dest) < 0 || updatepwd(NULL) < 0) {
+	if (chdir(dest) < 0 || (p = findcwd(NULL)) == NULL) {
 		INTON;
 		return (-1);
 	}
+	updatepwd(p);
 	INTON;
 	return (0);
 }
@@ -247,38 +252,20 @@
 }
 
 
-/*
- * Update curdir (the name of the current directory) in response to a
- * cd command.  We also call hashcd to let the routines in exec.c know
- * that the current directory has changed.
- */
-STATIC int
-updatepwd(char *dir)
+STATIC char *
+findcwd(char *dir)
 {
 	char *new;
 	char *p;
 
-	hashcd();				/* update command hash table */
-
 	/*
 	 * If our argument is NULL, we don't know the current directory
 	 * any more because we traversed a symbolic link or something
 	 * we couldn't stat().
 	 */
 	if (dir == NULL || curdir == NULL)  {
-		if (prevdir)
-			ckfree(prevdir);
-		INTOFF;
-		prevdir = curdir;
-		curdir = NULL;
-		if (getpwd() == NULL) {
-			INTON;
-			return (-1);
-		}
-		setvar("PWD", curdir, VEXPORT);
-		setvar("OLDPWD", prevdir, VEXPORT);
-		INTON;
-		return (0);
+		p = stalloc(PATH_MAX);
+		return getpwd2(p, PATH_MAX);
 	}
 	cdcomppath = stalloc(strlen(dir) + 1);
 	scopy(dir, cdcomppath);
@@ -302,16 +289,25 @@
 	if (new == stackblock())
 		STPUTC('/', new);
 	STACKSTRNUL(new);
-	INTOFF;
+	return stackblock();
+}
+
+/*
+ * Update curdir (the name of the current directory) in response to a
+ * cd command.  We also call hashcd to let the routines in exec.c know
+ * that the current directory has changed.
+ */
+STATIC void
+updatepwd(char *dir)
+{
+	hashcd();				/* update command hash table */
+
 	if (prevdir)
 		ckfree(prevdir);
 	prevdir = curdir;
-	curdir = savestr(stackblock());
+	curdir = savestr(dir);
 	setvar("PWD", curdir, VEXPORT);
 	setvar("OLDPWD", prevdir, VEXPORT);
-	INTON;
-
-	return (0);
 }
 
 int
@@ -355,17 +351,31 @@
 }
 
 /*
- * Find out what the current directory is. If we already know the current
- * directory, this routine returns immediately.
+ * Get the current directory and cache the result in curdir.
  */
 char *
 getpwd(void)
 {
 	char buf[PATH_MAX];
+	char *p;
 
 	if (curdir)
 		return curdir;
-	if (getcwd(buf, sizeof(buf)) == NULL) {
+
+	p = getpwd2(buf, sizeof(buf));
+	if (p != NULL)
+		curdir = savestr(p);
+
+	return curdir;
+}
+
+/*
+ * Return the current directory.
+ */
+STATIC char *
+getpwd2(char *buf, size_t size)
+{
+	if (getcwd(buf, size) == NULL) {
 		char *pwd = getenv("PWD");
 		struct stat stdot, stpwd;
 
@@ -373,12 +383,9 @@
 		    stat(pwd, &stpwd) != -1 &&
 		    stdot.st_dev == stpwd.st_dev &&
 		    stdot.st_ino == stpwd.st_ino) {
-			curdir = savestr(pwd);
-			return curdir;
+			return pwd;
 		}
 		return NULL;
 	}
-	curdir = savestr(buf);
-
-	return curdir;
+	return buf;
 }

==== //depot/projects/arm/src/gnu/lib/libgcc/Makefile#6 (text+ko) ====

@@ -1,4 +1,4 @@
-# $FreeBSD: src/gnu/lib/libgcc/Makefile,v 1.58 2007/08/14 20:49:57 kan Exp $
+# $FreeBSD: src/gnu/lib/libgcc/Makefile,v 1.59 2008/02/24 19:22:52 raj Exp $
 GCCDIR=	${.CURDIR}/../../../contrib/gcc
 GCCLIB=	${.CURDIR}/../../../contrib/gcclibs
 
@@ -122,7 +122,7 @@
 
 .if ${TARGET_ARCH} == "powerpc"
 #	from config/rs6000/t-ppccomm
-LIB2FUNCS_EXTRA = tramp.asm darwin-ldouble.c
+LIB2FUNCS_EXTRA = tramp.asm
 LIB2FUNCS_STATIC_EXTRA = eabi.asm
 .endif
 

==== //depot/projects/arm/src/lib/libc/powerpc/gen/flt_rounds.c#2 (text+ko) ====

@@ -32,11 +32,12 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/lib/libc/powerpc/gen/flt_rounds.c,v 1.1 2004/02/12 09:11:06 grehan Exp $");
+__FBSDID("$FreeBSD: src/lib/libc/powerpc/gen/flt_rounds.c,v 1.2 2008/02/24 19:22:53 raj Exp $");
 
 #include <sys/types.h>
 #include <machine/float.h>
 
+#ifndef _SOFT_FLOAT
 static const int map[] = {
 	1,	/* round to nearest */
 	0,	/* round to zero */
@@ -52,3 +53,4 @@
 	__asm__ __volatile("mffs %0" : "=f"(fpscr));
 	return map[(fpscr & 0x03)];
 }
+#endif

==== //depot/projects/arm/src/lib/libc/powerpc/gen/fpgetmask.c#2 (text+ko) ====

@@ -38,11 +38,12 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/lib/libc/powerpc/gen/fpgetmask.c,v 1.1 2004/02/12 09:11:06 grehan Exp $");
+__FBSDID("$FreeBSD: src/lib/libc/powerpc/gen/fpgetmask.c,v 1.2 2008/02/24 19:22:53 raj Exp $");
 
 #include <sys/types.h>
 #include <ieeefp.h>
 
+#ifndef _SOFT_FLOAT
 fp_except_t
 fpgetmask()
 {
@@ -51,3 +52,4 @@
 	__asm__("mffs %0" : "=f"(fpscr));
 	return ((fp_except_t)((fpscr >> 3) & 0x1f));
 }
+#endif

==== //depot/projects/arm/src/lib/libc/powerpc/gen/fpgetround.c#2 (text+ko) ====

@@ -38,11 +38,12 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/lib/libc/powerpc/gen/fpgetround.c,v 1.1 2004/02/12 09:11:06 grehan Exp $");
+__FBSDID("$FreeBSD: src/lib/libc/powerpc/gen/fpgetround.c,v 1.2 2008/02/24 19:22:53 raj Exp $");
 
 #include <sys/types.h>
 #include <ieeefp.h>
 
+#ifndef _SOFT_FLOAT
 fp_rnd_t
 fpgetround()
 {
@@ -51,3 +52,4 @@
 	__asm__("mffs %0" : "=f"(fpscr));
 	return ((fp_rnd_t)(fpscr & 0x3));
 }
+#endif

==== //depot/projects/arm/src/lib/libc/powerpc/gen/fpgetsticky.c#2 (text+ko) ====

@@ -35,7 +35,7 @@
  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
  * POSSIBILITY OF SUCH DAMAGE.
  *
- * $FreeBSD: src/lib/libc/powerpc/gen/fpgetsticky.c,v 1.1 2004/02/12 09:11:06 grehan Exp $
+ * $FreeBSD: src/lib/libc/powerpc/gen/fpgetsticky.c,v 1.2 2008/02/24 19:22:53 raj Exp $
  */
 
 #include <sys/cdefs.h>
@@ -45,6 +45,7 @@
 #include <sys/types.h>
 #include <ieeefp.h>
 
+#ifndef _SOFT_FLOAT
 #ifdef __weak_alias
 __weak_alias(fpgetsticky,_fpgetsticky)
 #endif
@@ -57,3 +58,4 @@
 	__asm__ __volatile("mffs %0" : "=f"(fpscr));
 	return ((fp_except_t)((fpscr >> 25) & 0x1f));
 }
+#endif

==== //depot/projects/arm/src/lib/libc/powerpc/gen/fpsetmask.c#2 (text+ko) ====

@@ -38,11 +38,12 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/lib/libc/powerpc/gen/fpsetmask.c,v 1.1 2004/02/12 09:11:06 grehan Exp $");
+__FBSDID("$FreeBSD: src/lib/libc/powerpc/gen/fpsetmask.c,v 1.2 2008/02/24 19:22:53 raj Exp $");
 
 #include <sys/types.h>
 #include <ieeefp.h>
 
+#ifndef _SOFT_FLOAT
 fp_except_t
 fpsetmask(fp_except_t mask)
 {
@@ -55,3 +56,4 @@
 	__asm__ __volatile("mtfsf 0xff,%0" :: "f"(fpscr));
 	return (old);
 }
+#endif

==== //depot/projects/arm/src/lib/libc/powerpc/gen/fpsetround.c#2 (text+ko) ====

@@ -38,11 +38,12 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/lib/libc/powerpc/gen/fpsetround.c,v 1.1 2004/02/12 09:11:06 grehan Exp $");
+__FBSDID("$FreeBSD: src/lib/libc/powerpc/gen/fpsetround.c,v 1.2 2008/02/24 19:22:53 raj Exp $");
 
 #include <sys/types.h>
 #include <ieeefp.h>
 
+#ifndef _SOFT_FLOAT
 fp_rnd_t
 fpsetround(fp_rnd_t rnd_dir)
 {
@@ -55,3 +56,4 @@
 	__asm__ __volatile("mtfsf 0xff,%0" :: "f"(fpscr));
 	return (old);
 }
+#endif

==== //depot/projects/arm/src/lib/msun/powerpc/fenv.h#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/lib/msun/powerpc/fenv.h,v 1.3 2005/03/16 19:03:45 das Exp $
+ * $FreeBSD: src/lib/msun/powerpc/fenv.h,v 1.4 2008/02/24 19:22:53 raj Exp $
  */
 
 #ifndef	_FENV_H_
@@ -82,8 +82,13 @@
 #define	_ENABLE_MASK	((FE_DIVBYZERO | FE_INEXACT | FE_INVALID | \
 			 FE_OVERFLOW | FE_UNDERFLOW) >> _FPUSW_SHIFT)
 
+#ifndef _SOFT_FLOAT
 #define	__mffs(__env)	__asm __volatile("mffs %0" : "=f" (*(__env)))
 #define	__mtfsf(__env)	__asm __volatile("mtfsf 255,%0" : : "f" (__env))
+#else
+#define	__mffs(__env)
+#define	__mtfsf(__env)
+#endif
 
 union __fpscr {
 	double __d;

==== //depot/projects/arm/src/sys/contrib/opensolaris/uts/common/fs/zfs/zfs_znode.c#6 (text+ko) ====

@@ -119,8 +119,8 @@
 		ASSERT(error == 0);
 		zp->z_vnode = vp;
 		vp->v_data = (caddr_t)zp;
-		vp->v_vnlock->lk_flags |= LK_CANRECURSE;
-		vp->v_vnlock->lk_flags &= ~LK_NOSHARE;
+		VN_LOCK_AREC(vp);
+		VN_LOCK_ASHARE(vp);
 	} else {
 		zp->z_vnode = NULL;
 	}
@@ -604,8 +604,8 @@
 			ASSERT(err == 0);
 			vp = ZTOV(zp);
 			vp->v_data = (caddr_t)zp;
-			vp->v_vnlock->lk_flags |= LK_CANRECURSE;
-			vp->v_vnlock->lk_flags &= ~LK_NOSHARE;
+			VN_LOCK_AREC(vp);
+			VN_LOCK_ASHARE(vp);
 			vp->v_type = IFTOVT((mode_t)zp->z_phys->zp_mode);
 			if (vp->v_type == VDIR)
 				zp->z_zn_prefetch = B_TRUE;	/* z_prefetch default is enabled */

==== //depot/projects/arm/src/sys/fs/nwfs/nwfs_node.c#7 (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_node.c,v 1.41 2008/01/24 12:34:27 attilio Exp $
+ * $FreeBSD: src/sys/fs/nwfs/nwfs_node.c,v 1.42 2008/02/24 16:38:56 attilio Exp $
  */
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -188,7 +188,7 @@
 	if (dvp) {
 		np->n_parent = VTONW(dvp)->n_fid;
 	}
-	vp->v_vnlock->lk_flags |= LK_CANRECURSE;
+	VN_LOCK_AREC(vp);
 	lockmgr(&nwhashlock, LK_EXCLUSIVE, NULL);
 	/*
 	 * Another process can create vnode while we blocked in malloc() or

==== //depot/projects/arm/src/sys/fs/pseudofs/pseudofs_vncache.c#10 (text+ko) ====

@@ -27,7 +27,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/fs/pseudofs/pseudofs_vncache.c,v 1.40 2008/01/13 14:44:05 attilio Exp $");
+__FBSDID("$FreeBSD: src/sys/fs/pseudofs/pseudofs_vncache.c,v 1.41 2008/02/24 16:38:56 attilio Exp $");
 
 #include "opt_pseudofs.h"
 
@@ -196,7 +196,7 @@
 	if ((pn->pn_flags & PFS_PROCDEP) != 0)
 		(*vpp)->v_vflag |= VV_PROCDEP;
 	pvd->pvd_vnode = *vpp;
-	(*vpp)->v_vnlock->lk_flags |= LK_CANRECURSE;
+	VN_LOCK_AREC(*vpp);
 	vn_lock(*vpp, LK_EXCLUSIVE | LK_RETRY);
 	error = insmntque(*vpp, mp);
 	if (error != 0) {

==== //depot/projects/arm/src/sys/fs/smbfs/smbfs_node.c#9 (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_node.c,v 1.36 2008/01/24 12:34:27 attilio Exp $
+ * $FreeBSD: src/sys/fs/smbfs/smbfs_node.c,v 1.37 2008/02/24 16:38:57 attilio Exp $
  */
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -261,7 +261,7 @@
 	} else if (vp->v_type == VREG)
 		SMBERROR("new vnode '%s' born without parent ?\n", np->n_name);
 
-	vp->v_vnlock->lk_flags |= LK_CANRECURSE;
+	VN_LOCK_AREC(vp);
 	vn_lock(vp, LK_EXCLUSIVE | LK_RETRY);
 
 	smbfs_hash_lock(smp, td);

==== //depot/projects/arm/src/sys/gnu/fs/xfs/FreeBSD/xfs_freebsd_iget.c#4 (text+ko) ====

@@ -389,7 +389,7 @@
 		return (error);
 	}
 
-	vp->v_vnlock->lk_flags |= LK_CANRECURSE;
+	VN_LOCK_AREC(vp);
 	vn_lock(vp, LK_EXCLUSIVE | LK_RETRY);
 	error = insmntque(vp, XVFSTOMNT(XFS_MTOVFS(mp)));
 	if (error != 0) {

==== //depot/projects/arm/src/sys/kern/vfs_lookup.c#20 (text+ko) ====

@@ -35,7 +35,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/kern/vfs_lookup.c,v 1.105 2008/01/13 14:44:10 attilio Exp $");
+__FBSDID("$FreeBSD: src/sys/kern/vfs_lookup.c,v 1.106 2008/02/24 16:38:57 attilio Exp $");
 
 #include "opt_ktrace.h"
 #include "opt_mac.h"
@@ -84,7 +84,7 @@
 	error = getnewvnode("crossmp", NULL, &dead_vnodeops, &vp_crossmp);
 	if (error != 0)
 		panic("nameiinit: getnewvnode");
-	vp_crossmp->v_vnlock->lk_flags &= ~LK_NOSHARE;
+	VN_LOCK_ASHARE(vp_crossmp);
 }
 SYSINIT(vfs, SI_SUB_VFS, SI_ORDER_SECOND, nameiinit, NULL)
 

==== //depot/projects/arm/src/sys/netncp/ncp_conn.c#7 (text+ko) ====

@@ -33,7 +33,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/netncp/ncp_conn.c,v 1.31 2008/01/24 12:34:28 attilio Exp $");
+__FBSDID("$FreeBSD: src/sys/netncp/ncp_conn.c,v 1.32 2008/02/24 16:38:57 attilio Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -193,7 +193,7 @@
 int
 ncp_conn_assert_locked(struct ncp_conn *conn, const char *checker, struct thread *td)
 {
-	if (conn->nc_lock.lk_flags & LK_HAVE_EXCL) return 0;
+	if (lockstatus(&conn->nc_lock, curthread) == LK_EXCLUSIVE) return 0;
 	printf("%s: connection isn't locked!\n", checker);
 	return EIO;
 }

==== //depot/projects/arm/src/sys/netsmb/smb_conn.c#6 (text+ko) ====

@@ -35,7 +35,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/netsmb/smb_conn.c,v 1.19 2008/01/24 12:34:29 attilio Exp $");
+__FBSDID("$FreeBSD: src/sys/netsmb/smb_conn.c,v 1.20 2008/02/24 16:26:52 attilio Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -62,8 +62,8 @@
 
 MALLOC_DEFINE(M_SMBCONN, "smb_conn", "SMB connection");
 
-static void smb_co_init(struct smb_connobj *cp, int level, char *objname,
-	struct thread *td);
+static void smb_co_init(struct smb_connobj *cp, int level, char *ilockname,
+    char *lockname, struct thread *td);
 static void smb_co_done(struct smb_connobj *cp);
 static int  smb_co_lockstatus(struct smb_connobj *cp, struct thread *td);
 
@@ -82,7 +82,7 @@
 smb_sm_init(void)
 {
 
-	smb_co_init(&smb_vclist, SMBL_SM, "smbsm", curthread);
+	smb_co_init(&smb_vclist, SMBL_SM, "smbsm ilock", "smbsm", curthread);
 	smb_co_unlock(&smb_vclist, 0, curthread);
 	return 0;
 }
@@ -227,11 +227,12 @@
  * Common code for connection object
  */
 static void
-smb_co_init(struct smb_connobj *cp, int level, char *objname, struct thread *td)
+smb_co_init(struct smb_connobj *cp, int level, char *ilockname, char *lockname,
+    struct thread *td)
 {
 	SLIST_INIT(&cp->co_children);
-	smb_sl_init(&cp->co_interlock, objname);
-	lockinit(&cp->co_lock, PZERO, objname, 0, 0);
+	smb_sl_init(&cp->co_interlock, ilockname);
+	lockinit(&cp->co_lock, PZERO, lockname, 0, 0);
 	cp->co_level = level;
 	cp->co_usecount = 1;
 	if (smb_co_lock(cp, LK_EXCLUSIVE, td) != 0)
@@ -398,7 +399,7 @@
 		return EPERM;
 
 	vcp = smb_zmalloc(sizeof(*vcp), M_SMBCONN, M_WAITOK);
-	smb_co_init(VCTOCP(vcp), SMBL_VC, "smb_vc", td);
+	smb_co_init(VCTOCP(vcp), SMBL_VC, "smb_vc ilock", "smb_vc", td);
 	vcp->obj.co_free = smb_vc_free;
 	vcp->obj.co_gone = smb_vc_gone;
 	vcp->vc_number = smb_vcnext++;
@@ -716,7 +717,7 @@
 	if (gid == SMBM_ANY_GROUP)
 		gid = cred->cr_groups[0];
 	ssp = smb_zmalloc(sizeof(*ssp), M_SMBCONN, M_WAITOK);
-	smb_co_init(SSTOCP(ssp), SMBL_SHARE, "smbss", td);
+	smb_co_init(SSTOCP(ssp), SMBL_SHARE, "smbss ilock", "smbss", td);
 	ssp->obj.co_free = smb_share_free;
 	ssp->obj.co_gone = smb_share_gone;
 	smb_sl_init(&ssp->ss_stlock, "ssstlock");

==== //depot/projects/arm/src/sys/nfsclient/nfs_node.c#12 (text+ko) ====

@@ -33,7 +33,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/nfsclient/nfs_node.c,v 1.87 2008/01/24 12:34:29 attilio Exp $");
+__FBSDID("$FreeBSD: src/sys/nfsclient/nfs_node.c,v 1.88 2008/02/24 16:38:57 attilio Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -158,8 +158,8 @@
 	/*
 	 * NFS supports recursive and shared locking.
 	 */
-	vp->v_vnlock->lk_flags |= LK_CANRECURSE;
-	vp->v_vnlock->lk_flags &= ~LK_NOSHARE;
+	VN_LOCK_AREC(vp);
+	VN_LOCK_ASHARE(vp);
 	if (fhsize > NFS_SMALLFH) {
 		MALLOC(np->n_fhp, nfsfh_t *, fhsize, M_NFSBIGFH, M_WAITOK);
 	} else

==== //depot/projects/arm/src/sys/powerpc/fpu/fpu_emu.c#2 (text+ko) ====

@@ -76,12 +76,10 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/powerpc/fpu/fpu_emu.c,v 1.2 2008/02/24 03:01:26 marcel Exp $");
+__FBSDID("$FreeBSD: src/sys/powerpc/fpu/fpu_emu.c,v 1.3 2008/02/24 17:10:30 marcel Exp $");
 
 #include "opt_ddb.h"
 
-#define DEBUG
-
 #include <sys/param.h>
 #include <sys/systm.h>
 #include <sys/kdb.h>

==== //depot/projects/arm/src/sys/powerpc/include/float.h#2 (text+ko) ====

@@ -28,7 +28,7 @@
  *
  *	from: @(#)float.h	7.1 (Berkeley) 5/8/90
  *	from: FreeBSD: src/sys/i386/include/float.h,v 1.8 1999/08/28 00:44:11
- * $FreeBSD: src/sys/powerpc/include/float.h,v 1.8 2005/01/07 02:29:19 imp Exp $
+ * $FreeBSD: src/sys/powerpc/include/float.h,v 1.9 2008/02/24 19:22:52 raj Exp $
  */
 
 #ifndef _MACHINE_FLOAT_H_
@@ -36,12 +36,16 @@
 
 #include <sys/cdefs.h>
 
+#ifndef _SOFT_FLOAT
 __BEGIN_DECLS
 extern int __flt_rounds(void);
 __END_DECLS
+#define FLT_ROUNDS	__flt_rounds()
+#else
+#define FLT_ROUNDS	-1
+#endif
 
 #define FLT_RADIX	2		/* b */
-#define FLT_ROUNDS	__flt_rounds()
 #if __ISO_C_VISIBLE >= 1999
 #define	FLT_EVAL_METHOD	1		/* operands promoted to double */
 #define	DECIMAL_DIG	35		/* max precision in decimal digits */

==== //depot/projects/arm/src/sys/sys/vnode.h#21 (text+ko) ====

@@ -27,7 +27,7 @@
  * SUCH DAMAGE.
  *
  *	@(#)vnode.h	8.7 (Berkeley) 2/4/94
- * $FreeBSD: src/sys/sys/vnode.h,v 1.329 2008/01/13 14:44:13 attilio Exp $
+ * $FreeBSD: src/sys/sys/vnode.h,v 1.330 2008/02/24 16:38:57 attilio Exp $
  */
 
 #ifndef _SYS_VNODE_H_
@@ -400,6 +400,9 @@
 #define	VI_UNLOCK(vp)	mtx_unlock(&(vp)->v_interlock)
 #define	VI_MTX(vp)	(&(vp)->v_interlock)
 
+#define	VN_LOCK_AREC(vp)	((vp)->v_vnlock->lk_flags |= LK_CANRECURSE)
+#define	VN_LOCK_ASHARE(vp)	((vp)->v_vnlock->lk_flags &= ~LK_NOSHARE)
+
 #endif /* _KERNEL */
 
 /*

==== //depot/projects/arm/src/sys/ufs/ffs/ffs_softdep.c#22 (text+ko) ====

@@ -39,7 +39,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/ufs/ffs/ffs_softdep.c,v 1.216 2008/01/13 14:44:13 attilio Exp $");
+__FBSDID("$FreeBSD: src/sys/ufs/ffs/ffs_softdep.c,v 1.217 2008/02/24 16:38:58 attilio Exp $");
 
 /*
  * For now we want the safety net that the DEBUG flag provides.
@@ -564,6 +564,9 @@
 #define ACQUIRE_LOCK(lk)		mtx_lock(lk)
 #define FREE_LOCK(lk)			mtx_unlock(lk)
 
+#define	BUF_AREC(bp)	((bp)->b_lock.lk_flags |= LK_CANRECURSE)
+#define	BUF_NOREC(bp)	((bp)->b_lock.lk_flags &= ~LK_CANRECURSE)
+
 /*
  * Worklist queue management.
  * These routines require that the lock be held.
@@ -5251,7 +5254,7 @@
 		return (0);
 loop:
 	/* While syncing snapshots, we must allow recursive lookups */
-	bp->b_lock.lk_flags |= LK_CANRECURSE;
+	BUF_AREC(bp);
 	ACQUIRE_LOCK(&lk);
 	/*
 	 * As we hold the buffer locked, none of its dependencies
@@ -5393,7 +5396,7 @@
 		/* We reach here only in error and unlocked */
 		if (error == 0)
 			panic("softdep_sync_metadata: zero error");
-		bp->b_lock.lk_flags &= ~LK_CANRECURSE;
+		BUF_NOREC(bp);
 		bawrite(bp);
 		return (error);
 	}
@@ -5405,7 +5408,7 @@
 			break;
 	}
 	VI_UNLOCK(vp);
-	bp->b_lock.lk_flags &= ~LK_CANRECURSE;
+	BUF_NOREC(bp);
 	bawrite(bp);
 	if (nbp != NULL) {
 		bp = nbp;

==== //depot/projects/arm/src/sys/ufs/ffs/ffs_vfsops.c#28 (text+ko) ====

@@ -30,7 +30,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/ufs/ffs/ffs_vfsops.c,v 1.335 2008/01/24 12:34:29 attilio Exp $");
+__FBSDID("$FreeBSD: src/sys/ufs/ffs/ffs_vfsops.c,v 1.336 2008/02/24 16:38:58 attilio Exp $");
 
 #include "opt_mac.h"
 #include "opt_quota.h"
@@ -1363,8 +1363,8 @@
 	/*
 	 * FFS supports recursive and shared locking.
 	 */
-	vp->v_vnlock->lk_flags |= LK_CANRECURSE;
-	vp->v_vnlock->lk_flags &= ~LK_NOSHARE;
+	VN_LOCK_AREC(vp);
+	VN_LOCK_ASHARE(vp);
 	vp->v_data = ip;
 	vp->v_bufobj.bo_bsize = fs->fs_bsize;
 	ip->i_vnode = vp;

==== //depot/projects/arm/src/sys/vm/vm_object.c#26 (text+ko) ====

@@ -63,7 +63,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/vm/vm_object.c,v 1.390 2008/01/13 14:44:15 attilio Exp $");
+__FBSDID("$FreeBSD: src/sys/vm/vm_object.c,v 1.391 2008/02/24 18:03:56 alc Exp $");
 
 #include "opt_vm.h"
 
@@ -500,7 +500,10 @@
 			VM_OBJECT_UNLOCK(object);
 			return;
 		} else if (object->ref_count == 1) {
-			if (object->shadow_count == 0) {
+			if (object->shadow_count == 0 &&
+			    object->handle == NULL &&
+			    (object->type == OBJT_DEFAULT ||
+			     object->type == OBJT_SWAP)) {
 				vm_object_set_flag(object, OBJ_ONEMAPPING);
 			} else if ((object->shadow_count == 1) &&
 			    (object->handle == NULL) &&

==== //depot/projects/arm/src/usr.bin/ar/write.c#2 (text+ko) ====

@@ -25,7 +25,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/usr.bin/ar/write.c,v 1.1 2008/02/21 10:52:31 kaiw Exp $");
+__FBSDID("$FreeBSD: src/usr.bin/ar/write.c,v 1.3 2008/02/24 18:30:17 kaiw Exp $");
 
 #include <sys/endian.h>
 #include <sys/mman.h>
@@ -107,7 +107,7 @@
 	const char		*bname;
 
 	if (name == NULL)
-		return(NULL);
+		return (NULL);
 
 	obj = malloc(sizeof(struct ar_obj));
 	if (obj == NULL)
@@ -115,7 +115,7 @@
 	if ((obj->fd = open(name, O_RDONLY, 0)) < 0) {
 		bsdar_warnc(bsdar, errno, "can't open file: %s", name);
 		free(obj);
-		return(NULL);
+		return (NULL);
 	}
 
 	if ((bname = basename(name)) == NULL)
@@ -154,6 +154,12 @@
 	obj->mtime = sb.st_mtime;
 	obj->dev = sb.st_dev;
 	obj->ino = sb.st_ino;
+
+	if (obj->size == 0) {
+		obj->maddr = NULL;
+		return (obj);
+	}
+
 	if ((obj->maddr = mmap(NULL, obj->size, PROT_READ,
 	    MAP_PRIVATE, obj->fd, (off_t)0)) == MAP_FAILED) {
 		bsdar_warnc(bsdar, errno, "can't mmap file: %s", obj->name);
@@ -163,7 +169,7 @@
 		bsdar_errc(bsdar, EX_SOFTWARE, errno, "close failed: %s",
 		    obj->name);
 
-	return(obj);
+	return (obj);
 
 giveup:
 	if (close(obj->fd) < 0)
@@ -171,7 +177,7 @@
 		    obj->name);
 	free(obj->name);
 	free(obj);
-	return(NULL);
+	return (NULL);
 }
 
 /*
@@ -427,14 +433,14 @@
 	struct ar_obj		*obj, *obj_temp;
 
 	TAILQ_FOREACH_SAFE(obj, &bsdar->v_obj, objs, obj_temp) {
-		free(obj->name);
 		if (obj->fd == -1)
 			free(obj->maddr);
 		else
-			if (munmap(obj->maddr, obj->size))
+			if (obj->maddr != NULL && munmap(obj->maddr, obj->size))
 				bsdar_warnc(bsdar, errno,
 				    "can't munmap file: %s", obj->name);
 		TAILQ_REMOVE(&bsdar->v_obj, obj, objs);
+		free(obj->name);
 		free(obj);
 	}
 
@@ -478,7 +484,7 @@
 
 	/* Create archive symbol table and archive string table, if need. */
 	TAILQ_FOREACH(obj, &bsdar->v_obj, objs) {
-		if (!(bsdar->options & AR_SS))
+		if (!(bsdar->options & AR_SS) && obj->maddr != NULL)
 			create_symtab_entry(bsdar, obj->maddr, obj->size);
 		if (strlen(obj->name) > _MAXNAMELEN_SVR4)
 			add_to_ar_str_table(bsdar, obj->name);

==== //depot/projects/arm/src/usr.bin/find/find.1#7 (text+ko) ====

@@ -33,9 +33,9 @@
 .\" SUCH DAMAGE.
 .\"
 .\"	@(#)find.1	8.7 (Berkeley) 5/9/95
-.\" $FreeBSD: src/usr.bin/find/find.1,v 1.83 2008/02/23 16:29:04 imp Exp $
+.\" $FreeBSD: src/usr.bin/find/find.1,v 1.85 2008/02/24 19:52:23 ceri Exp $
 .\"
-.Dd December 13, 2006
+.Dd February 24, 2008
 .Dt FIND 1
 .Os
 .Sh NAME
@@ -466,6 +466,7 @@
 Like
 .Ic -lname ,
 but the match is case insensitive.
+This is a GNU find extension.
 .It Ic -iname Ar pattern
 Like
 .Ic -name ,
@@ -492,7 +493,9 @@
 .It Ic -lname Ar pattern
 Like
 .Ic -name ,
-but the matched file must also be a symbolic link.
+but the contents of the symbolic link are matched instead of the file
+name.
+This is a GNU find extension.
 .It Ic -ls
 This primary always evaluates to true.
 The following information for the current file is written to standard output:


More information about the p4-projects mailing list