Date: Sun, 24 Feb 2008 23:50:08 GMT From: Warner Losh <imp@FreeBSD.org> To: Perforce Change Reviews <perforce@freebsd.org> Subject: PERFORCE change 136129 for review Message-ID: <200802242350.m1ONo8fw095699@repoman.freebsd.org>
index | next in thread | raw e-mail
http://perforce.freebsd.org/chv.cgi?CH=136129 Change 136129 by imp@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:help
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200802242350.m1ONo8fw095699>
