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