From owner-p4-projects@FreeBSD.ORG Sat Jan 19 20:38:06 2008 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 4B90416A41A; Sat, 19 Jan 2008 20:38:06 +0000 (UTC) Delivered-To: perforce@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 0FA9116A418 for ; Sat, 19 Jan 2008 20:38:06 +0000 (UTC) (envelope-from jb@freebsd.org) Received: from repoman.freebsd.org (repoman.freebsd.org [IPv6:2001:4f8:fff6::29]) by mx1.freebsd.org (Postfix) with ESMTP id 1493C13C46A for ; Sat, 19 Jan 2008 20:38:06 +0000 (UTC) (envelope-from jb@freebsd.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.14.1/8.14.1) with ESMTP id m0JKc5Bq082297 for ; Sat, 19 Jan 2008 20:38:05 GMT (envelope-from jb@freebsd.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.14.1/8.14.1/Submit) id m0JKc5g3082294 for perforce@freebsd.org; Sat, 19 Jan 2008 20:38:05 GMT (envelope-from jb@freebsd.org) Date: Sat, 19 Jan 2008 20:38:05 GMT Message-Id: <200801192038.m0JKc5g3082294@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to jb@freebsd.org using -f From: John Birrell To: Perforce Change Reviews Cc: Subject: PERFORCE change 133677 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 19 Jan 2008 20:38:06 -0000 http://perforce.freebsd.org/chv.cgi?CH=133677 Change 133677 by jb@jb_freebsd1 on 2008/01/19 20:38:03 IFC Affected files ... .. //depot/projects/dtrace/ports/UIDs#16 integrate .. //depot/projects/dtrace/src/lib/msun/src/s_log1p.c#4 integrate .. //depot/projects/dtrace/src/lib/msun/src/s_log1pf.c#4 integrate .. //depot/projects/dtrace/src/lib/msun/src/s_rint.c#5 integrate .. //depot/projects/dtrace/src/lib/msun/src/s_rintf.c#4 integrate .. //depot/projects/dtrace/src/sys/fs/coda/cnode.h#2 integrate .. //depot/projects/dtrace/src/sys/fs/coda/coda_namecache.h#2 integrate .. //depot/projects/dtrace/src/sys/fs/coda/coda_psdev.c#2 integrate .. //depot/projects/dtrace/src/sys/fs/coda/coda_vfsops.c#4 integrate .. //depot/projects/dtrace/src/sys/fs/coda/coda_vnops.c#4 integrate .. //depot/projects/dtrace/src/sys/gnu/fs/xfs/FreeBSD/xfs_buf.c#4 integrate .. //depot/projects/dtrace/src/sys/gnu/fs/xfs/FreeBSD/xfs_buf.h#4 integrate .. //depot/projects/dtrace/src/sys/kern/kern_shutdown.c#13 integrate .. //depot/projects/dtrace/src/sys/kern/vfs_bio.c#18 integrate .. //depot/projects/dtrace/src/sys/kern/vfs_subr.c#28 integrate .. //depot/projects/dtrace/src/sys/nfs4client/nfs4_vnops.c#9 integrate .. //depot/projects/dtrace/src/sys/nfsclient/nfs_subs.c#10 integrate .. //depot/projects/dtrace/src/sys/nfsclient/nfs_vnops.c#13 integrate .. //depot/projects/dtrace/src/sys/sys/buf.h#7 integrate .. //depot/projects/dtrace/src/sys/sys/lockmgr.h#11 integrate .. //depot/projects/dtrace/src/sys/sys/param.h#33 integrate .. //depot/projects/dtrace/src/sys/ufs/ffs/ffs_vfsops.c#19 integrate .. //depot/projects/dtrace/www/share/sgml/news.xml#35 integrate Differences ... ==== //depot/projects/dtrace/ports/UIDs#16 (text+ko) ==== @@ -1,4 +1,4 @@ -$FreeBSD: ports/UIDs,v 1.53 2008/01/11 15:46:29 rafan Exp $ +$FreeBSD: ports/UIDs,v 1.54 2008/01/19 11:47:16 edwin Exp $ # Please keep this file sorted by UID! smmsp:*:25:25:Sendmail Submission User:/var/spool/clientmqueue:/usr/sbin/nologin bind:*:53:53:Bind Sandbox:/:/usr/sbin/nologin @@ -70,7 +70,7 @@ vchat:*:128:128:VChat Conferencing System:/nonexistent:/usr/sbin/nologin _bgpd:*:130:130:BGP Daemon:/var/empty:/usr/sbin/nologin _ospfd:*:131:131:OSPF Daemon:/var/empty:/usr/sbin/nologin -_spamd:*:132:132::0:0:Spam Daemon:/var/empty:/usr/sbin/nologin +_spamd:*:132:132:Spam Daemon:/var/empty:/usr/sbin/nologin dovecot:*:143:143:Dovecot User:/var/empty:/usr/sbin/nologin rbldns:*:153:153:rbldnsd pseudo-user:/nonexistent:/usr/sbin/nologin sfs:*:171:171:Self-Certifying File System:/nonexistent:/usr/sbin/nologin @@ -98,10 +98,10 @@ hacluster:*:275:275:Heartbeat cluster user:/nonexistent:/usr/sbin/nologin mrtg:*:279:279:MRTG daemon:/nonexistent:/usr/sbin/nologin prelude:*:281:281:Prelude user:/nonexistent:/usr/sbin/nologin -_sphinx:*:312:312::0:0:Sphinxsearch Owner:/nonexistent:/usr/sbin/nologin +_sphinx:*:312:312:Sphinxsearch Owner:/nonexistent:/usr/sbin/nologin dkfilter:*:325:325:DK Filter Owner:/nonexistent:/usr/sbin/nologin -wildfire:*:340:340::0:0:Wildfire Daemon:/nonexistent:/usr/sbin/nologin -stunnel:*:341:341::0:0:Stunnel Daemon:/nonexistent:/usr/sbin/nologin +wildfire:*:340:340:Wildfire Daemon:/nonexistent:/usr/sbin/nologin +stunnel:*:341:341:Stunnel Daemon:/nonexistent:/usr/sbin/nologin _iodined:*:353:353:Iodine Daemon:/nonexistent:/usr/sbin/nologin ldap:*:389:389:OpenLDAP Server:/nonexistent:/usr/sbin/nologin tiarra:*:398:398:Tiarra IRC Proxy:/nonexistent:/usr/sbin/nologin ==== //depot/projects/dtrace/src/lib/msun/src/s_log1p.c#4 (text+ko) ==== @@ -10,9 +10,8 @@ * ==================================================== */ -#ifndef lint -static char rcsid[] = "$FreeBSD: src/lib/msun/src/s_log1p.c,v 1.8 2005/12/04 12:28:33 bde Exp $"; -#endif +#include +__FBSDID("$FreeBSD: src/lib/msun/src/s_log1p.c,v 1.9 2008/01/19 18:13:21 bde Exp $"); /* double log1p(double x) * @@ -79,6 +78,8 @@ * See HP-15C Advanced Functions Handbook, p.193. */ +#include + #include "math.h" #include "math_private.h" @@ -124,7 +125,7 @@ if (hx >= 0x7ff00000) return x+x; if(k!=0) { if(hx<0x43400000) { - u = 1.0+x; + STRICT_ASSIGN(double,u,1.0+x); GET_HIGH_WORD(hu,u); k = (hu>>20)-1023; c = (k>0)? 1.0-(u-x):x-(u-1.0);/* correction term */ ==== //depot/projects/dtrace/src/lib/msun/src/s_log1pf.c#4 (text+ko) ==== @@ -13,9 +13,10 @@ * ==================================================== */ -#ifndef lint -static char rcsid[] = "$FreeBSD: src/lib/msun/src/s_log1pf.c,v 1.9 2005/12/04 12:30:44 bde Exp $"; -#endif +#include +__FBSDID("$FreeBSD: src/lib/msun/src/s_log1pf.c,v 1.10 2008/01/19 18:13:21 bde Exp $"); + +#include #include "math.h" #include "math_private.h" @@ -62,7 +63,7 @@ if (hx >= 0x7f800000) return x+x; if(k!=0) { if(hx<0x5a000000) { - *(volatile float *)&u = (float)1.0+x; + STRICT_ASSIGN(float,u,(float)1.0+x); GET_FLOAT_WORD(hu,u); k = (hu>>23)-127; /* correction term */ ==== //depot/projects/dtrace/src/lib/msun/src/s_rint.c#5 (text+ko) ==== @@ -11,7 +11,7 @@ */ #ifndef lint -static char rcsid[] = "$FreeBSD: src/lib/msun/src/s_rint.c,v 1.14 2008/01/14 02:12:06 das Exp $"; +static char rcsid[] = "$FreeBSD: src/lib/msun/src/s_rint.c,v 1.15 2008/01/19 16:37:57 bde Exp $"; #endif /* @@ -51,7 +51,7 @@ i0 &= 0xfffe0000; i0 |= ((i1|-i1)>>12)&0x80000; SET_HIGH_WORD(x,i0); - w = TWO52[sx]+x; + STRICT_ASSIGN(double,w,TWO52[sx]+x); t = w-TWO52[sx]; GET_HIGH_WORD(i0,t); SET_HIGH_WORD(t,(i0&0x7fffffff)|(sx<<31)); @@ -84,7 +84,7 @@ if((i1&i)!=0) i1 = (i1&(~i))|((0x40000000)>>(j0-20)); } INSERT_WORDS(x,i0,i1); - *(volatile double *)&w = TWO52[sx]+x; /* clip any extra precision */ + STRICT_ASSIGN(double,w,TWO52[sx]+x); return w-TWO52[sx]; } ==== //depot/projects/dtrace/src/lib/msun/src/s_rintf.c#4 (text+ko) ==== @@ -14,10 +14,12 @@ */ #ifndef lint -static char rcsid[] = "$FreeBSD: src/lib/msun/src/s_rintf.c,v 1.10 2005/12/03 09:00:29 bde Exp $"; +static char rcsid[] = "$FreeBSD: src/lib/msun/src/s_rintf.c,v 1.11 2008/01/19 16:37:57 bde Exp $"; #endif -#include +#include +#include + #include "math.h" #include "math_private.h" @@ -31,20 +33,20 @@ rintf(float x) { int32_t i0,j0,sx; - volatile float w,t; /* volatile works around gcc bug */ + float w,t; GET_FLOAT_WORD(i0,x); sx = (i0>>31)&1; j0 = ((i0>>23)&0xff)-0x7f; if(j0<23) { if(j0<0) { if((i0&0x7fffffff)==0) return x; - w = TWO23[sx]+x; + STRICT_ASSIGN(float,w,TWO23[sx]+x); t = w-TWO23[sx]; GET_FLOAT_WORD(i0,t); SET_FLOAT_WORD(t,(i0&0x7fffffff)|(sx<<31)); return t; } - w = TWO23[sx]+x; + STRICT_ASSIGN(float,w,TWO23[sx]+x); return w-TWO23[sx]; } if(j0==0x80) return x+x; /* inf or NaN */ ==== //depot/projects/dtrace/src/sys/fs/coda/cnode.h#2 (text+ko) ==== @@ -27,7 +27,7 @@ * Mellon the rights to redistribute these changes without encumbrance. * * @(#) src/sys/coda/cnode.h,v 1.1.1.1 1998/08/29 21:14:52 rvb Exp $ - * $FreeBSD: src/sys/fs/coda/cnode.h,v 1.21 2007/07/12 21:04:57 rwatson Exp $ + * $FreeBSD: src/sys/fs/coda/cnode.h,v 1.22 2008/01/19 14:32:44 rwatson Exp $ * */ @@ -74,15 +74,9 @@ #define CODA_FREE(ptr, size) free((ptr), M_CODA) /* - * global cache state control - */ -extern int coda_nc_use; - -/* * Used to select debugging statements throughout the cfs code. */ extern int codadebug; -extern int coda_nc_debug; extern int coda_printf_delay; extern int coda_vnop_print_entry; extern int coda_psdev_print_entry; ==== //depot/projects/dtrace/src/sys/fs/coda/coda_namecache.h#2 (text+ko) ==== @@ -27,7 +27,7 @@ * Mellon the rights to redistribute these changes without encumbrance. * * @(#) src/sys/coda/coda_namecache.h,v 1.1.1.1 1998/08/29 21:14:52 rvb Exp $ - * $FreeBSD: src/sys/fs/coda/coda_namecache.h,v 1.11 2007/07/12 20:40:37 rwatson Exp $ + * $FreeBSD: src/sys/fs/coda/coda_namecache.h,v 1.13 2008/01/19 19:21:07 rwatson Exp $ * */ @@ -63,13 +63,8 @@ * 2nd try -- same, except dir fid.vnode instead of cp */ -#ifdef oldhash -#define CODA_NC_HASH(name, namelen, cp) \ - ((name[0] + name[namelen-1] + namelen + (int)(intptr_t)(cp)) & (coda_nc_hashsize-1)) -#else #define CODA_NC_HASH(name, namelen, cp) \ ((name[0] + (name[namelen-1]<<4) + namelen + (((int)(intptr_t)cp)>>8)) & (coda_nc_hashsize-1)) -#endif #define CODA_NAMEMATCH(cp, name, namelen, dcp) \ ((namelen == cp->namelen) && (dcp == cp->dcp) && \ @@ -136,21 +131,28 @@ #define CODA_NC_DEBUG(N, STMT) { if (coda_nc_debug & (1 < -__FBSDID("$FreeBSD: src/sys/fs/coda/coda_psdev.c,v 1.39 2007/07/12 21:04:57 rwatson Exp $"); - - -extern int coda_nc_initialized; /* Set if cache has been initialized */ +__FBSDID("$FreeBSD: src/sys/fs/coda/coda_psdev.c,v 1.40 2008/01/19 14:32:44 rwatson Exp $"); #include #include ==== //depot/projects/dtrace/src/sys/fs/coda/coda_vfsops.c#4 (text+ko) ==== @@ -41,7 +41,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/fs/coda/coda_vfsops.c,v 1.69 2008/01/10 01:10:44 attilio Exp $"); +__FBSDID("$FreeBSD: src/sys/fs/coda/coda_vfsops.c,v 1.72 2008/01/19 16:39:14 rwatson Exp $"); #include #include @@ -77,9 +77,6 @@ #define MARK_INT_FAIL(op) (coda_vfsopstats[op].unsat_intrn++) #define MARK_INT_GEN(op) (coda_vfsopstats[op].gen_intrn++) -extern int coda_nc_initialized; /* Set if cache has been initialized */ -extern int vc_nb_open(struct cdev *, int, int, struct thread *); - int coda_vfsopstats_init(void) { @@ -227,10 +224,10 @@ printf("coda_unmount: ROOT: vp %p, cp %p\n", mi->mi_rootvp, VTOC(mi->mi_rootvp)); #endif vrele(mi->mi_rootvp); + mi->mi_rootvp = NULL; vrele(coda_ctlvp); + coda_ctlvp = NULL; active = coda_kill(vfsp, NOT_DOWNCALL); - ASSERT_VOP_LOCKED(mi->mi_rootvp, "coda_unmount"); - mi->mi_rootvp->v_vflag &= ~VV_ROOT; error = vflush(mi->mi_vfsp, 0, FORCECLOSE, td); #ifdef CODA_VERBOSE printf("coda_unmount: active = %d, vflush active %d\n", active, error); @@ -243,7 +240,6 @@ /* No more vfsp's to hold onto */ mi->mi_vfsp = NULL; - mi->mi_rootvp = NULL; if (error) MARK_INT_FAIL(CODA_UMOUNT_STATS); @@ -375,13 +371,11 @@ return(EINVAL); } - bzero(sbp, sizeof(struct statfs)); /* XXX - what to do about f_flags, others? --bnoble */ /* Below This is what AFS does #define NB_SFS_SIZ 0x895440 */ - /* Note: Normal fs's have a bsize of 0x400 == 1024 */ - sbp->f_type = vfsp->mnt_vfc->vfc_typenum; + sbp->f_flags = 0; sbp->f_bsize = 8192; /* XXX */ sbp->f_iosize = 8192; /* XXX */ #define NB_SFS_SIZ 0x8AB75D @@ -390,9 +384,6 @@ sbp->f_bavail = NB_SFS_SIZ; sbp->f_files = NB_SFS_SIZ; sbp->f_ffree = NB_SFS_SIZ; - bcopy((caddr_t)&(vfsp->mnt_stat.f_fsid), (caddr_t)&(sbp->f_fsid), sizeof (fsid_t)); - snprintf(sbp->f_mntonname, sizeof(sbp->f_mntonname), "/coda"); - snprintf(sbp->f_fstypename, sizeof(sbp->f_fstypename), "coda"); /* MARK_INT_SAT(CODA_STATFS_STATS); */ return(0); } ==== //depot/projects/dtrace/src/sys/fs/coda/coda_vnops.c#4 (text+ko) ==== @@ -42,7 +42,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/fs/coda/coda_vnops.c,v 1.78 2008/01/13 14:44:02 attilio Exp $"); +__FBSDID("$FreeBSD: src/sys/fs/coda/coda_vnops.c,v 1.83 2008/01/19 17:12:44 rwatson Exp $"); #include #include @@ -106,10 +106,9 @@ /* Definition of the vnode operation vector */ struct vop_vector coda_vnodeops = { - .vop_default = VOP_PANIC, + .vop_default = &default_vnodeops, .vop_lookup = coda_lookup, /* lookup */ .vop_create = coda_create, /* create */ - .vop_mknod = VOP_PANIC, /* mknod */ .vop_open = coda_open, /* open */ .vop_close = coda_close, /* close */ .vop_access = coda_access, /* access */ @@ -132,11 +131,9 @@ .vop_lock1 = coda_lock, /* lock */ .vop_unlock = coda_unlock, /* unlock */ .vop_bmap = coda_bmap, /* bmap */ - .vop_print = VOP_PANIC, /* print */ + .vop_print = VOP_NULL, /* print */ .vop_islocked = coda_islocked, /* islocked */ .vop_pathconf = coda_pathconf, /* pathconf */ - .vop_advlock = VOP_NULL, /* advlock */ - .vop_lease = VOP_NULL, /* lease */ .vop_poll = vop_stdpoll, .vop_getpages = vop_stdgetpages, /* pager intf.*/ .vop_putpages = vop_stdputpages, /* pager intf.*/ @@ -221,9 +218,6 @@ CODADEBUG( CODA_OPEN,myprintf(("open: vp %p result %d\n", vp, error));) - /* Keep a reference until the close comes in. */ - vref(*vpp); - /* Save the vnode pointer for the cache file. */ if (cp->c_ovp == NULL) { cp->c_ovp = vp; @@ -244,6 +238,8 @@ if (error) { printf("coda_open: VOP_OPEN on container failed %d\n", error); return (error); + } else { + (*vpp)->v_object = vp->v_object; } /* grab (above) does this when it calls newvnode unless it's in the cache*/ @@ -291,8 +287,6 @@ error = venus_close(vtomi(vp), &cp->c_fid, flag, cred, td->td_proc); else error = ENODEV; - vrele(vp); - CODADEBUG(CODA_CLOSE, myprintf(("close: result %d\n",error)); ) return(error); } @@ -747,6 +741,8 @@ CODADEBUG(CODA_INACTIVE, myprintf(("in inactive, %s, vfsp %p\n", coda_f2s(&cp->c_fid), vp->v_mount));) + + vp->v_object = NULL; /* If an array has been allocated to hold the symlink, deallocate it */ if ((coda_symlink_cache) && (VALID_SYMLINK(cp))) { @@ -1292,7 +1288,11 @@ /* Invalidate the parent's attr cache, the modification time has changed */ VTOC(dvp)->c_flags &= ~C_VATTR; - + + if ((error = VOP_LOCK(*vpp, LK_EXCLUSIVE))) { + panic("coda_create: couldn't lock child"); + } + CODADEBUG( CODA_MKDIR, myprintf(("mkdir: %s result %d\n", coda_f2s(&VFid), error)); ) } else { @@ -1552,7 +1552,7 @@ cache_purge(vp); coda_free(VTOC(vp)); vp->v_data = NULL; - vnode_destroy_vobject(vp); + vp->v_object = NULL; return (0); } ==== //depot/projects/dtrace/src/sys/gnu/fs/xfs/FreeBSD/xfs_buf.c#4 (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/gnu/fs/xfs/FreeBSD/xfs_buf.c,v 1.2 2006/06/09 06:04:05 rodrigc Exp $ + * $FreeBSD: src/sys/gnu/fs/xfs/FreeBSD/xfs_buf.c,v 1.3 2008/01/19 17:36:22 attilio Exp $ */ #include "xfs.h" @@ -86,7 +86,7 @@ bp->b_bufsize = size; bp->b_bcount = size; - KASSERT(BUF_REFCNT(bp) == 1, + KASSERT(BUF_ISLOCKED(bp), ("xfs_buf_get_empty: bp %p not locked",bp)); xfs_buf_set_target(bp, target); @@ -103,7 +103,7 @@ bp = geteblk(len); if (bp != NULL) { - KASSERT(BUF_REFCNT(bp) == 1, + KASSERT(BUF_ISLOCKED(bp), ("xfs_buf_get_empty: bp %p not locked",bp)); xfs_buf_set_target(bp, target); @@ -163,7 +163,7 @@ if ((bp->b_flags & B_ASYNC) == 0) { error = bufwait(bp); #if 0 - if (BUF_REFCNT(bp) > 1) + if (BUF_LOCKRECURSED(bp)) BUF_UNLOCK(bp); else brelse(bp); ==== //depot/projects/dtrace/src/sys/gnu/fs/xfs/FreeBSD/xfs_buf.h#4 (text+ko) ==== @@ -160,7 +160,6 @@ #define XFS_BUF_HOLD(x) ((void)0) #define XFS_BUF_UNHOLD(x) ((void)0) -#define XFS_BUF_ISHOLD(x) BUF_REFCNT(x) #define XFS_BUF_READ(x) ((x)->b_iocmd = BIO_READ) #define XFS_BUF_UNREAD(x) ((x)->b_iocmd = 0) @@ -234,7 +233,7 @@ #define XFS_BUF_SET_VTYPE(bp, type) #define XFS_BUF_SET_REF(bp, ref) -#define XFS_BUF_VALUSEMA(bp) (BUF_REFCNT(bp)? 0 : 1) +#define XFS_BUF_VALUSEMA(bp) (BUF_ISLOCKED(bp) ? 0 : 1) #define XFS_BUF_CPSEMA(bp) \ (BUF_LOCK(bp, LK_EXCLUSIVE|LK_CANRECURSE | LK_SLEEPFAIL, NULL) == 0) ==== //depot/projects/dtrace/src/sys/kern/kern_shutdown.c#13 (text+ko) ==== @@ -35,7 +35,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/kern/kern_shutdown.c,v 1.187 2007/12/26 11:32:33 rwatson Exp $"); +__FBSDID("$FreeBSD: src/sys/kern/kern_shutdown.c,v 1.188 2008/01/19 17:36:22 attilio Exp $"); #include "opt_ddb.h" #include "opt_kdb.h" @@ -255,7 +255,7 @@ isbufbusy(struct buf *bp) { if (((bp->b_flags & (B_INVAL | B_PERSISTENT)) == 0 && - BUF_REFCNT(bp) > 0) || + BUF_ISLOCKED(bp)) || ((bp->b_flags & (B_DELWRI | B_INVAL)) == B_DELWRI)) return (1); return (0); ==== //depot/projects/dtrace/src/sys/kern/vfs_bio.c#18 (text+ko) ==== @@ -39,7 +39,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/kern/vfs_bio.c,v 1.534 2008/01/13 14:44:09 attilio Exp $"); +__FBSDID("$FreeBSD: src/sys/kern/vfs_bio.c,v 1.535 2008/01/19 17:36:22 attilio Exp $"); #include #include @@ -658,7 +658,7 @@ { CTR3(KTR_BUF, "bremfree(%p) vp %p flags %X", bp, bp->b_vp, bp->b_flags); - KASSERT(BUF_REFCNT(bp), ("bremfree: buf must be locked.")); + KASSERT(BUF_ISLOCKED(bp), ("bremfree: buf must be locked.")); KASSERT((bp->b_flags & B_REMFREE) == 0, ("bremfree: buffer %p already marked for delayed removal.", bp)); KASSERT(bp->b_qindex != QUEUE_NONE, @@ -695,7 +695,7 @@ { CTR3(KTR_BUF, "bremfreel(%p) vp %p flags %X", bp, bp->b_vp, bp->b_flags); - KASSERT(BUF_REFCNT(bp), ("bremfreel: buffer %p not locked.", bp)); + KASSERT(BUF_ISLOCKED(bp), ("bremfreel: buffer %p not locked.", bp)); KASSERT(bp->b_qindex != QUEUE_NONE, ("bremfreel: buffer %p not on a queue.", bp)); mtx_assert(&bqlock, MA_OWNED); @@ -834,7 +834,7 @@ oldflags = bp->b_flags; - if (BUF_REFCNT(bp) == 0) + if (!BUF_ISLOCKED(bp)) panic("bufwrite: buffer is not busy???"); if (bp->b_pin_count > 0) @@ -952,7 +952,7 @@ CTR3(KTR_BUF, "bdwrite(%p) vp %p flags %X", bp, bp->b_vp, bp->b_flags); KASSERT(bp->b_bufobj != NULL, ("No b_bufobj %p", bp)); - KASSERT(BUF_REFCNT(bp) != 0, ("bdwrite: buffer is not busy")); + KASSERT(BUF_ISLOCKED(bp), ("bdwrite: buffer is not busy")); if (bp->b_flags & B_INVAL) { brelse(bp); @@ -1047,7 +1047,7 @@ CTR3(KTR_BUF, "bdirty(%p) vp %p flags %X", bp, bp->b_vp, bp->b_flags); - KASSERT(BUF_REFCNT(bp) == 1, ("bdirty: bp %p not locked",bp)); + KASSERT(BUF_ISLOCKED(bp), ("bdirty: bp %p not locked",bp)); KASSERT(bp->b_bufobj != NULL, ("No b_bufobj %p", bp)); KASSERT(bp->b_flags & B_REMFREE || bp->b_qindex == QUEUE_NONE, ("bdirty: buffer %p still on queue %d", bp, bp->b_qindex)); @@ -1081,7 +1081,7 @@ KASSERT(bp->b_bufobj != NULL, ("No b_bufobj %p", bp)); KASSERT(bp->b_flags & B_REMFREE || bp->b_qindex == QUEUE_NONE, ("bundirty: buffer %p still on queue %d", bp, bp->b_qindex)); - KASSERT(BUF_REFCNT(bp) == 1, ("bundirty: bp %p not locked",bp)); + KASSERT(BUF_ISLOCKED(bp), ("bundirty: bp %p not locked",bp)); if (bp->b_flags & B_DELWRI) { bp->b_flags &= ~B_DELWRI; @@ -1341,7 +1341,7 @@ brelvp(bp); } - if (BUF_REFCNT(bp) > 1) { + if (BUF_LOCKRECURSED(bp)) { /* do not release to free list */ BUF_UNLOCK(bp); return; @@ -1446,7 +1446,7 @@ KASSERT(!(bp->b_flags & (B_CLUSTER|B_PAGING)), ("bqrelse: inappropriate B_PAGING or B_CLUSTER bp %p", bp)); - if (BUF_REFCNT(bp) > 1) { + if (BUF_LOCKRECURSED(bp)) { /* do not release to free list */ BUF_UNLOCK(bp); return; @@ -2660,7 +2660,7 @@ bp->b_flags &= ~B_DONE; } CTR4(KTR_BUF, "getblk(%p, %ld, %d) = %p", vp, (long)blkno, size, bp); - KASSERT(BUF_REFCNT(bp) == 1, ("getblk: bp %p not locked",bp)); + KASSERT(BUF_ISLOCKED(bp), ("getblk: bp %p not locked",bp)); KASSERT(bp->b_bufobj == bo, ("bp %p wrong b_bufobj %p should be %p", bp, bp->b_bufobj, bo)); return (bp); @@ -2681,7 +2681,7 @@ continue; allocbuf(bp, size); bp->b_flags |= B_INVAL; /* b_dep cleared by getnewbuf() */ - KASSERT(BUF_REFCNT(bp) == 1, ("geteblk: bp %p not locked",bp)); + KASSERT(BUF_ISLOCKED(bp), ("geteblk: bp %p not locked",bp)); return (bp); } @@ -2707,7 +2707,7 @@ int newbsize, mbsize; int i; - if (BUF_REFCNT(bp) == 0) + if (!BUF_ISLOCKED(bp)) panic("allocbuf: buffer not busy"); if (bp->b_kvasize < size) @@ -3150,8 +3150,7 @@ CTR3(KTR_BUF, "bufdone(%p) vp %p flags %X", bp, bp->b_vp, bp->b_flags); dropobj = NULL; - KASSERT(BUF_REFCNT(bp) > 0, ("biodone: bp %p not busy %d", bp, - BUF_REFCNT(bp))); + KASSERT(BUF_ISLOCKED(bp), ("biodone: bp %p not busy", bp)); KASSERT(!(bp->b_flags & B_DONE), ("biodone: bp %p already done", bp)); runningbufwakeup(bp); @@ -3176,8 +3175,7 @@ void bufdone_finish(struct buf *bp) { - KASSERT(BUF_REFCNT(bp) > 0, ("biodone: bp %p not busy %d", bp, - BUF_REFCNT(bp))); + KASSERT(BUF_ISLOCKED(bp), ("biodone: bp %p not busy", bp)); if (!LIST_EMPTY(&bp->b_dep)) buf_complete(bp); @@ -3943,7 +3941,7 @@ for (i = 0; i < nbuf; i++) { bp = &buf[i]; - if (lockcount(&bp->b_lock)) { + if (BUF_ISLOCKED(bp)) { db_show_buffer((uintptr_t)bp, 1, 0, NULL); db_printf("\n"); } ==== //depot/projects/dtrace/src/sys/kern/vfs_subr.c#28 (text+ko) ==== @@ -39,7 +39,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/kern/vfs_subr.c,v 1.715 2008/01/13 14:44:10 attilio Exp $"); +__FBSDID("$FreeBSD: src/sys/kern/vfs_subr.c,v 1.716 2008/01/19 17:36:22 attilio Exp $"); #include "opt_ddb.h" #include "opt_mac.h" @@ -3570,7 +3570,7 @@ if ((bp->b_flags & B_CLUSTER) != 0) return; - if (BUF_REFCNT(bp) < 1) { + if (!BUF_ISLOCKED(bp)) { if (vfs_badlock_print) printf( "VOP_STRATEGY: bp is not locked but should be\n"); ==== //depot/projects/dtrace/src/sys/nfs4client/nfs4_vnops.c#9 (text+ko) ==== @@ -59,7 +59,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/nfs4client/nfs4_vnops.c,v 1.39 2008/01/13 14:44:11 attilio Exp $"); +__FBSDID("$FreeBSD: src/sys/nfs4client/nfs4_vnops.c,v 1.40 2008/01/19 17:36:23 attilio Exp $"); /* * vnode op calls for Sun NFS version 2 and 3 @@ -2446,8 +2446,9 @@ struct ucred *cr; int error = 0; - KASSERT(!(bp->b_flags & B_DONE), ("nfs4_strategy: buffer %p unexpectedly marked B_DONE", bp)); - KASSERT(BUF_REFCNT(bp) > 0, ("nfs4_strategy: buffer %p not locked", bp)); + KASSERT(!(bp->b_flags & B_DONE), + ("nfs4_strategy: buffer %p unexpectedly marked B_DONE", bp)); + KASSERT(BUF_ISLOCKED(bp), ("nfs4_strategy: buffer %p not locked", bp)); if (bp->b_iocmd == BIO_READ) cr = bp->b_rcred; @@ -2525,7 +2526,7 @@ bveccount = 0; VI_LOCK(vp); TAILQ_FOREACH_SAFE(bp, &vp->v_bufobj.bo_dirty.bv_hd, b_bobufs, nbp) { - if (BUF_REFCNT(bp) == 0 && + if (!BUF_ISLOCKED(bp) && (bp->b_flags & (B_DELWRI | B_NEEDCOMMIT)) == (B_DELWRI | B_NEEDCOMMIT)) bveccount++; @@ -2807,7 +2808,7 @@ off_t off; #endif - if (BUF_REFCNT(bp) == 0) + if (!BUF_ISLOCKED(bp)) panic("bwrite: buffer is not locked???"); if (bp->b_flags & B_INVAL) { ==== //depot/projects/dtrace/src/sys/nfsclient/nfs_subs.c#10 (text+ko) ==== @@ -33,7 +33,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/nfsclient/nfs_subs.c,v 1.149 2008/01/13 14:44:12 attilio Exp $"); +__FBSDID("$FreeBSD: src/sys/nfsclient/nfs_subs.c,v 1.150 2008/01/19 17:36:23 attilio Exp $"); /* * These functions support the macros and help fiddle mbuf chains for @@ -918,7 +918,7 @@ } MNT_IUNLOCK(mp); TAILQ_FOREACH_SAFE(bp, &vp->v_bufobj.bo_dirty.bv_hd, b_bobufs, nbp) { - if (BUF_REFCNT(bp) == 0 && + if (!BUF_ISLOCKED(bp) && (bp->b_flags & (B_DELWRI | B_NEEDCOMMIT)) == (B_DELWRI | B_NEEDCOMMIT)) bp->b_flags &= ~(B_NEEDCOMMIT | B_CLUSTEROK); ==== //depot/projects/dtrace/src/sys/nfsclient/nfs_vnops.c#13 (text+ko) ==== @@ -33,7 +33,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/nfsclient/nfs_vnops.c,v 1.279 2008/01/13 14:44:12 attilio Exp $"); +__FBSDID("$FreeBSD: src/sys/nfsclient/nfs_vnops.c,v 1.280 2008/01/19 17:36:23 attilio Exp $"); /* * vnode op calls for Sun NFS version 2 and 3 @@ -2692,8 +2692,9 @@ struct buf *bp = ap->a_bp; struct ucred *cr; - KASSERT(!(bp->b_flags & B_DONE), ("nfs_strategy: buffer %p unexpectedly marked B_DONE", bp)); - KASSERT(BUF_REFCNT(bp) > 0, ("nfs_strategy: buffer %p not locked", bp)); + KASSERT(!(bp->b_flags & B_DONE), + ("nfs_strategy: buffer %p unexpectedly marked B_DONE", bp)); + KASSERT(BUF_ISLOCKED(bp), ("nfs_strategy: buffer %p not locked", bp)); if (bp->b_iocmd == BIO_READ) cr = bp->b_rcred; @@ -2771,7 +2772,7 @@ bveccount = 0; VI_LOCK(vp); TAILQ_FOREACH_SAFE(bp, &vp->v_bufobj.bo_dirty.bv_hd, b_bobufs, nbp) { - if (BUF_REFCNT(bp) == 0 && + if (!BUF_ISLOCKED(bp) && (bp->b_flags & (B_DELWRI | B_NEEDCOMMIT)) == (B_DELWRI | B_NEEDCOMMIT)) bveccount++; @@ -3087,7 +3088,7 @@ off_t off; #endif - if (BUF_REFCNT(bp) == 0) + if (!BUF_ISLOCKED(bp)) panic("bwrite: buffer is not locked???"); if (bp->b_flags & B_INVAL) { ==== //depot/projects/dtrace/src/sys/sys/buf.h#7 (text+ko) ==== @@ -32,7 +32,7 @@ * SUCH DAMAGE. * * @(#)buf.h 8.9 (Berkeley) 3/30/95 - * $FreeBSD: src/sys/sys/buf.h,v 1.197 2008/01/08 23:48:31 attilio Exp $ + * $FreeBSD: src/sys/sys/buf.h,v 1.198 2008/01/19 17:36:23 attilio Exp $ */ #ifndef _SYS_BUF_H_ @@ -320,11 +320,22 @@ } /* + * Check if a buffer lock is recursed. + */ +#define BUF_LOCKRECURSED(bp) \ + (lockmgr_recursed(&(bp)->b_lock)) + +/* + * Check if a buffer lock is currently held. + */ +#define BUF_ISLOCKED(bp) \ + (lockstatus(&(bp)->b_lock, curthread)) +/* * Free a buffer lock. */ #define BUF_LOCKFREE(bp) \ do { \ - if (BUF_REFCNT(bp) > 0) \ + if (BUF_ISLOCKED(bp)) \ panic("free locked buf"); \ lockdestroy(&(bp)->b_lock); \ } while (0) @@ -344,29 +355,6 @@ lockmgr_disown(&bp->b_lock); } #endif -/* - * Find out the number of references to a lock. - */ -static __inline int BUF_REFCNT(struct buf *); -static __inline int -BUF_REFCNT(struct buf *bp) -{ - int s, ret; - - /* - * When the system is panicing, the lock manager grants all lock - * requests whether or not the lock is available. To avoid "unlocked - * buffer" panics after a crash, we just claim that all buffers - * are locked when cleaning up after a system panic. - */ - if (panicstr != NULL) - return (1); - s = splbio(); - ret = lockcount(&(bp)->b_lock); - splx(s); - return ret; -} - /* * Find out the number of waiters on a lock. ==== //depot/projects/dtrace/src/sys/sys/lockmgr.h#11 (text+ko) ==== @@ -31,7 +31,7 @@ * SUCH DAMAGE. * * @(#)lock.h 8.12 (Berkeley) 5/19/95 - * $FreeBSD: src/sys/sys/lockmgr.h,v 1.56 2008/01/08 23:48:31 attilio Exp $ + * $FreeBSD: src/sys/sys/lockmgr.h,v 1.57 2008/01/19 17:36:23 attilio Exp $ */ #ifndef _SYS_LOCKMGR_H_ @@ -204,6 +204,8 @@ int lockwaiters(struct lock *); #define lockmgr(lock, flags, mtx, td) _lockmgr((lock), (flags), (mtx), (td), __FILE__, __LINE__) +#define lockmgr_recursed(lkp) \ + ((lkp)->lk_exclusivecount > 1) #ifdef DDB int lockmgr_chain(struct thread *td, struct thread **ownerp); #endif ==== //depot/projects/dtrace/src/sys/sys/param.h#33 (text+ko) ==== @@ -32,7 +32,7 @@ * SUCH DAMAGE. * * @(#)param.h 8.3 (Berkeley) 4/4/95 - * $FreeBSD: src/sys/sys/param.h,v 1.325 2008/01/13 14:48:51 attilio Exp $ + * $FreeBSD: src/sys/sys/param.h,v 1.326 2008/01/19 17:39:25 attilio Exp $ */ #ifndef _SYS_PARAM_H_ @@ -57,7 +57,7 @@ * is created, otherwise 1. */ #undef __FreeBSD_version -#define __FreeBSD_version 800011 /* Master, propagated to newvers */ +#define __FreeBSD_version 800012 /* Master, propagated to newvers */ #ifndef LOCORE #include ==== //depot/projects/dtrace/src/sys/ufs/ffs/ffs_vfsops.c#19 (text+ko) ==== @@ -30,7 +30,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/ufs/ffs/ffs_vfsops.c,v 1.333 2008/01/13 14:44:14 attilio Exp $"); +__FBSDID("$FreeBSD: src/sys/ufs/ffs/ffs_vfsops.c,v 1.334 2008/01/19 17:36:23 attilio Exp $"); #include "opt_mac.h" #include "opt_quota.h" @@ -1718,7 +1718,7 @@ oldflags = bp->b_flags; - if (BUF_REFCNT(bp) == 0) + if (!BUF_ISLOCKED(bp)) panic("bufwrite: buffer is not busy???"); s = splbio(); /* ==== //depot/projects/dtrace/www/share/sgml/news.xml#35 (text+ko) ==== @@ -20,7 +20,7 @@ - $FreeBSD: www/share/sgml/news.xml,v 1.137 2008/01/18 18:56:02 bmah Exp $ + $FreeBSD: www/share/sgml/news.xml,v 1.138 2008/01/19 20:20:00 jkois Exp $ @@ -36,14 +36,14 @@ FreeBSD 6.3-RELEASE Available -

FreeBSD +

FreeBSD 6.3-RELEASE is now available. Please be sure to check the release errata + href="&enbase;/releases/6.3R/errata.html">release errata before installation for any late-breaking news and/or issues with 6.3. More information about FreeBSD releases can be found on the Release Information + href="&enbase;/releases/index.html">Release Information page.

@@ -183,7 +183,7 @@ the 7.0-BETA4 ISO images for Tier-1 architectures are now available for download on most + href="&enbase;/doc/en_US.ISO8859-1/books/handbook/mirrors-ftp.html"> &os; mirror sites. We ask our users to report any outstanding bugs, as this will presumably be the last BETA release before the first RC release.

@@ -217,7 +217,7 @@ the 7.0-BETA3 ISO images for Tier-1 architectures are now available for download on most + href="&enbase;/doc/en_US.ISO8859-1/books/handbook/mirrors-ftp.html"> &os; mirror sites. We ask our users to report any outstanding bugs.

@@ -232,7 +232,7 @@ the 7.0-BETA2 ISO images for Tier-1 architectures are now available for download on most + href="&enbase;/doc/en_US.ISO8859-1/books/handbook/mirrors-ftp.html"> &os; mirror sites. We ask our users to report any outstanding bugs, as this will presumably be the last BETA >>> TRUNCATED FOR MAIL (1000 lines) <<<