PERFORCE change 90459 for review

Alan Cox alc at FreeBSD.org
Thu Jan 26 23:55:15 PST 2006


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

Change 90459 by alc at alc_home on 2006/01/27 07:54:23

	IFC

Affected files ...

.. //depot/projects/superpages/doc/en_US.ISO8859-1/books/handbook/security/chapter.sgml#4 integrate
.. //depot/projects/superpages/src/lib/libc/stdlib/malloc.c#5 integrate
.. //depot/projects/superpages/src/share/man/man5/rc.conf.5#4 integrate
.. //depot/projects/superpages/src/sys/kern/vfs_aio.c#5 integrate
.. //depot/projects/superpages/src/sys/vm/vm_map.c#4 integrate
.. //depot/projects/superpages/src/sys/vm/vm_object.c#6 integrate
.. //depot/projects/superpages/src/sys/vm/vm_pageout.c#7 integrate
.. //depot/projects/superpages/src/sys/vm/vm_pageq.c#8 integrate
.. //depot/projects/superpages/www/en/releases/6.1R/todo.sgml#3 integrate

Differences ...

==== //depot/projects/superpages/doc/en_US.ISO8859-1/books/handbook/security/chapter.sgml#4 (text+ko) ====

@@ -1,7 +1,7 @@
 <!--
      The FreeBSD Documentation Project
 
-     $FreeBSD: doc/en_US.ISO8859-1/books/handbook/security/chapter.sgml,v 1.285 2006/01/22 22:00:18 brd Exp $
+     $FreeBSD: doc/en_US.ISO8859-1/books/handbook/security/chapter.sgml,v 1.286 2006/01/27 05:43:53 brd Exp $
 -->
 
 <chapter id="security">
@@ -4810,12 +4810,11 @@
       <username>root</username>'s email account, are being read.  No
       more configuration will be required here.</para>
 
-    <para>After installation, an administrator must update the database
-      stored locally in
-      <filename role="directory">/var/db/portaudit</filename> by
-      invoking the following command:</para>
+    <para>After installation, an administrator can update the database
+      and view known vulnerabilities in installed packages by invoking
+      the following command:</para>
 
-    <screen>&prompt.root; <userinput>portaudit -F</userinput></screen>
+    <screen>&prompt.root; <userinput>portaudit -Fda</userinput></screen>
 
     <note>
       <para>The database will automatically be updated during the
@@ -4825,12 +4824,13 @@
     </note>
 
     <para>To audit the third party utilities installed as part of
-      the Ports Collection, an administrator need only run the
-      following command:</para>
+      the Ports Collection at anytime, an administrator need only run
+      the following command:</para>
 
     <screen>&prompt.root; <userinput>portaudit -a</userinput></screen>
 
-    <para>An example of output is provided:</para>
+    <para><application>Portaudit</application> will produce something
+      like this for vulnerable packages:</para>
 
     <programlisting>Affected package: cups-base-1.1.22.0_1
 Type of problem: cups-base -- HPGL buffer overflow vulnerability.

==== //depot/projects/superpages/src/lib/libc/stdlib/malloc.c#5 (text+ko) ====

@@ -133,10 +133,19 @@
 
 /******************************************************************************/
 
-#define	MALLOC_DEBUG
+/* 
+ * In order to disable various extra features that may have negative
+ * performance impacts, (assertions, expanded statistics, redzones), define
+ * NO_MALLOC_EXTRAS.
+ */
+/* #define NO_MALLOC_EXTRAS */
+
+#ifndef NO_MALLOC_EXTRAS
+#  define MALLOC_DEBUG
+#endif
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/lib/libc/stdlib/malloc.c,v 1.106 2006/01/26 08:11:23 jasone Exp $");
+__FBSDID("$FreeBSD: src/lib/libc/stdlib/malloc.c,v 1.109 2006/01/27 04:42:10 jasone Exp $");
 
 #include "libc_private.h"
 #ifdef MALLOC_DEBUG
@@ -176,13 +185,16 @@
  * Calculate statistics that can be used to get an idea of how well caching is
  * working.
  */
-#define	MALLOC_STATS
-#define	MALLOC_STATS_ARENAS
+#ifndef NO_MALLOC_EXTRAS
+#  define MALLOC_STATS
+#endif
 
 /*
  * Include redzones before/after every region, and check for buffer overflows.
  */
-#define MALLOC_REDZONES
+#ifndef NO_MALLOC_EXTRAS
+#  define MALLOC_REDZONES
+#endif
 #ifdef MALLOC_REDZONES
 #  define MALLOC_RED_2POW	4
 #  define MALLOC_RED		((size_t)(1 << MALLOC_RED_2POW))
@@ -298,10 +310,10 @@
 	uint64_t	nrequests;
 
 	/*
-	 * Number of best-fit allocations that were successfully serviced by
+	 * Number of exact-fit allocations that were successfully serviced by
 	 * this bin.
 	 */
-	uint64_t	nfit;
+	uint64_t	nserviced;
 
 	/* High-water marks for this bin. */
 	unsigned long	highcached;
@@ -311,7 +323,7 @@
 	 * during normal operation, so is maintained here in order to allow
 	 * calculating the high water mark.
 	 */
-	unsigned	nregions;
+	unsigned long	curcached;
 };
 
 typedef struct arena_stats_s arena_stats_t;
@@ -349,11 +361,8 @@
 
 	/* Frag statistics. */
 	struct {
-		/*
-		 * Number of times a region is cached in the "frag" field of
-		 * the arena.
-		 */
-		uint64_t	ncached;
+		/* Number of times the "frag" field of the arena is refilled. */
+		uint64_t	nrefills;
 
 		/*
 		 * Number of times a region is requested from the "frag" field
@@ -377,18 +386,12 @@
 		uint64_t	nrequests;
 
 		/*
-		 * Number of best-fit allocations that were successfully
+		 * Number of allocation requests that were successfully
 		 * serviced by large_regions.
 		 */
-		uint64_t	nfit;
+		uint64_t	nserviced;
 
 		/*
-		 * Number of allocation requests that were successfully serviced
-		 * large_regions, but that a bin could have serviced.
-		 */
-		uint64_t	noverfit;
-
-		/*
 		 * High-water mark for large_regions (number of nodes in tree).
 		 */
 		unsigned long	highcached;
@@ -1176,7 +1179,7 @@
 	stats_arenas->split.nserviced += arena->stats.split.nserviced;
 
 	/* Frag. */
-	stats_arenas->frag.ncached += arena->stats.frag.ncached;
+	stats_arenas->frag.nrefills += arena->stats.frag.nrefills;
 	stats_arenas->frag.nrequests += arena->stats.frag.nrequests;
 	stats_arenas->frag.nserviced += arena->stats.frag.nserviced;
 
@@ -1184,18 +1187,20 @@
 	for (i = 0; i < NBINS; i++) {
 		stats_arenas->bins[i].nrequests +=
 		    arena->stats.bins[i].nrequests;
-		stats_arenas->bins[i].nfit += arena->stats.bins[i].nfit;
+		stats_arenas->bins[i].nserviced +=
+		    arena->stats.bins[i].nserviced;
 		if (arena->stats.bins[i].highcached
 		    > stats_arenas->bins[i].highcached) {
 		    stats_arenas->bins[i].highcached
 			= arena->stats.bins[i].highcached;
 		}
+		stats_arenas->bins[i].curcached
+		    += arena->stats.bins[i].curcached;
 	}
 
 	/* large and large_regions. */
 	stats_arenas->large.nrequests += arena->stats.large.nrequests;
-	stats_arenas->large.nfit += arena->stats.large.nfit;
-	stats_arenas->large.noverfit += arena->stats.large.noverfit;
+	stats_arenas->large.nserviced += arena->stats.large.nserviced;
 	if (arena->stats.large.highcached > stats_arenas->large.highcached)
 		stats_arenas->large.highcached = arena->stats.large.highcached;
 	stats_arenas->large.curcached += arena->stats.large.curcached;
@@ -1227,28 +1232,29 @@
 	    stats_arenas->split.nserviced);
 
 	malloc_printf("cached frag usage:\n");
-	malloc_printf(" %13s%13s%13s\n", "ncached", "nrequests", "nserviced");
-	malloc_printf(" %13llu%13llu%13llu\n", stats_arenas->frag.ncached,
+	malloc_printf(" %13s%13s%13s\n", "nrefills", "nrequests", "nserviced");
+	malloc_printf(" %13llu%13llu%13llu\n", stats_arenas->frag.nrefills,
 	    stats_arenas->frag.nrequests, stats_arenas->frag.nserviced);
 
 	malloc_printf("bins:\n");
-	malloc_printf(" %4s%7s%13s%13s%11s\n", "bin", 
-	    "size", "nrequests", "nfit", "highcached");
+	malloc_printf(" %4s%7s%13s%13s%11s%11s\n", "bin", 
+	    "size", "nrequests", "nserviced", "highcached", "curcached");
 	for (i = 0; i < NBINS; i++) {
 		malloc_printf(
-		    " %4u%7u%13llu%13llu%11lu\n",
+		    " %4u%7u%13llu%13llu%11lu%11lu\n",
 		    i, ((i + bin_shift) << opt_quantum_2pow),
-		    stats_arenas->bins[i].nrequests, stats_arenas->bins[i].nfit,
-		    stats_arenas->bins[i].highcached);
+		    stats_arenas->bins[i].nrequests,
+		    stats_arenas->bins[i].nserviced,
+		    stats_arenas->bins[i].highcached,
+		    stats_arenas->bins[i].curcached);
 	}
 
 	malloc_printf("large:\n");
-	malloc_printf(" %13s%13s%13s%13s%13s\n", "nrequests", "nfit",
-	    "noverfit", "highcached", "curcached");
-	malloc_printf(" %13llu%13llu%13llu%13lu%13lu\n",
-	    stats_arenas->large.nrequests, stats_arenas->large.nfit,
-	    stats_arenas->large.noverfit, stats_arenas->large.highcached,
-	    stats_arenas->large.curcached);
+	malloc_printf(" %13s%13s%13s%13s\n", "nrequests", "nserviced",
+	    "highcached", "curcached");
+	malloc_printf(" %13llu%13llu%13lu%13lu\n",
+	    stats_arenas->large.nrequests, stats_arenas->large.nserviced,
+	    stats_arenas->large.highcached, stats_arenas->large.curcached);
 
 	malloc_printf("huge\n");
 	malloc_printf(" %13s\n", "nrequests");
@@ -1715,7 +1721,7 @@
 
 	qr_remove(reg, next.u.s.link);
 #ifdef MALLOC_STATS
-	arena->stats.bins[bin].nregions--;
+	arena->stats.bins[bin].curcached--;
 #endif
 	if (qr_next(&tbin->regions, next.u.s.link) == &tbin->regions)
 		arena_mask_unset(arena, bin);
@@ -2066,12 +2072,12 @@
 	qr_new(reg, next.u.s.link);
 	qr_before_insert(&tbin->regions, reg, next.u.s.link);
 #ifdef MALLOC_STATS
-	arena->stats.bins[bin].nregions++;
+	arena->stats.bins[bin].curcached++;
 
-	if (arena->stats.bins[bin].nregions
+	if (arena->stats.bins[bin].curcached
 	    > arena->stats.bins[bin].highcached) {
 		arena->stats.bins[bin].highcached
-		    = arena->stats.bins[bin].nregions;
+		    = arena->stats.bins[bin].curcached;
 	}
 #endif
 }
@@ -2096,12 +2102,12 @@
 	qr_new(reg, next.u.s.link);
 	qr_after_insert(&tbin->regions, reg, next.u.s.link);
 #ifdef MALLOC_STATS
-	arena->stats.bins[bin].nregions++;
+	arena->stats.bins[bin].curcached++;
 
-	if (arena->stats.bins[bin].nregions
+	if (arena->stats.bins[bin].curcached
 	    > arena->stats.bins[bin].highcached) {
 		arena->stats.bins[bin].highcached
-		    = arena->stats.bins[bin].nregions;
+		    = arena->stats.bins[bin].curcached;
 	}
 #endif
 }
@@ -2123,7 +2129,7 @@
 	    == ((bin + bin_shift) << opt_quantum_2pow));
 	qr_remove(ret, next.u.s.link);
 #ifdef MALLOC_STATS
-	arena->stats.bins[bin].nregions--;
+	arena->stats.bins[bin].curcached--;
 #endif
 	if (qr_next(&tbin->regions, next.u.s.link) == &tbin->regions)
 		arena_mask_unset(arena, bin);
@@ -2479,7 +2485,7 @@
 
 			frag = node->reg;
 #ifdef MALLOC_STATS
-			arena->stats.frag.ncached++;
+			arena->stats.frag.nrefills++;
 #endif
 			assert(region_next_free_get(&frag->sep));
 			region_next_free_unset(&frag->sep);
@@ -2499,7 +2505,7 @@
 				/* Use the smallest available region. */
 				arena->frag = arena_bin_pop(arena, bin);
 #ifdef MALLOC_STATS
-				arena->stats.frag.ncached++;
+				arena->stats.frag.nrefills++;
 #endif
 				total_size =
 				    region_next_size_get(&arena->frag->sep);
@@ -2657,7 +2663,6 @@
 #ifdef MALLOC_STATS
 		arena->stats.split.nrequests++;
 #endif
-
 		if (region_next_size_get(&arena->split->sep) >= size) {
 			if (fit) {
 				size_t total_size;
@@ -2778,7 +2783,6 @@
 					}
 #endif
 				}
-
 #ifdef MALLOC_STATS
 				arena->stats.split.nserviced++;
 #endif
@@ -2884,7 +2888,6 @@
 			} else
 				arena_mru_cache(arena, next, next_size);
 		}
-
 #ifdef MALLOC_STATS
 		arena->stats.nsplit++;
 #endif
@@ -2911,7 +2914,7 @@
 		ret = arena_bin_pop(arena, bin);
 		assert(region_next_size_get(&ret->sep) >= size);
 #ifdef MALLOC_STATS
-		arena->stats.bins[bin].nfit++;
+		arena->stats.bins[bin].nserviced++;
 #endif
 		goto RETURN;
 	}
@@ -2967,10 +2970,7 @@
 		arena_reg_fit(arena, size, ret, false);
 
 #ifdef MALLOC_STATS
-	if (size > bin_maxsize)
-		arena->stats.large.nfit++;
-	else
-		arena->stats.large.noverfit++;
+	arena->stats.large.nserviced++;
 #endif
 
 RETURN:
@@ -3962,13 +3962,12 @@
 		}
 	}
 
-RETURN:
 #ifdef MALLOC_STATS
 	malloc_mutex_lock(&arena->mtx);
 	arena->stats.npalloc++;
 	malloc_mutex_unlock(&arena->mtx);
 #endif
-
+RETURN:
 	if (opt_junk) {
 		if (ret != NULL)
 			memset(ret, 0xa5, size);
@@ -4118,12 +4117,12 @@
 
 	idalloc(ptr);
 
-RETURN:
 #ifdef MALLOC_STATS
 	malloc_mutex_lock(&arena->mtx);
 	arena->stats.nralloc++;
 	malloc_mutex_unlock(&arena->mtx);
 #endif
+RETURN:
 	return (ret);
 }
 
@@ -4202,7 +4201,7 @@
 		{
 			arena_stats_t stats_arenas;
 			arena_t *arena;
-			unsigned i;
+			unsigned i, narenas_used;
 
 			/* Print chunk stats. */
 			{
@@ -4221,11 +4220,11 @@
 				    chunks_stats.curchunks);
 			}
 
-#ifdef MALLOC_STATS_ARENAS
 			/* Print stats for each arena. */
-			for (i = 0; i < narenas; i++) {
+			for (i = 0, narenas_used = 0; i < narenas; i++) {
 				arena = arenas[i];
 				if (arena != NULL) {
+					narenas_used++;
 					malloc_printf(
 					    "\narenas[%u] statistics:\n", i);
 					malloc_mutex_lock(&arena->mtx);
@@ -4236,22 +4235,29 @@
 					    " unused arena\n", i);
 				}
 			}
-#endif
 
-			/* Merge arena stats from arenas. */
-			memset(&stats_arenas, 0, sizeof(arena_stats_t));
-			for (i = 0; i < narenas; i++) {
-				arena = arenas[i];
-				if (arena != NULL) {
-					malloc_mutex_lock(&arena->mtx);
-					stats_merge(arena, &stats_arenas);
-					malloc_mutex_unlock(&arena->mtx);
+			/*
+			 * Only print merged stats if multiple arenas were
+			 * used.
+			 */
+			if (narenas_used > 1) {
+				/* Merge arena stats from arenas. */
+				memset(&stats_arenas, 0, sizeof(arena_stats_t));
+				for (i = 0; i < narenas; i++) {
+					arena = arenas[i];
+					if (arena != NULL) {
+						malloc_mutex_lock(&arena->mtx);
+						stats_merge(arena,
+						    &stats_arenas);
+						malloc_mutex_unlock(
+						    &arena->mtx);
+					}
 				}
+
+				/* Print arena stats. */
+				malloc_printf("\nMerged arena statistics:\n");
+				stats_print(&stats_arenas);
 			}
-
-			/* Print arena stats. */
-			malloc_printf("\nMerged arena statistics:\n");
-			stats_print(&stats_arenas);
 		}
 #endif /* #ifdef MALLOC_STATS */
 		malloc_printf("--- End malloc statistics ---\n");

==== //depot/projects/superpages/src/share/man/man5/rc.conf.5#4 (text+ko) ====

@@ -22,7 +22,7 @@
 .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 .\" SUCH DAMAGE.
 .\"
-.\" $FreeBSD: src/share/man/man5/rc.conf.5,v 1.281 2006/01/21 18:08:16 yar Exp $
+.\" $FreeBSD: src/share/man/man5/rc.conf.5,v 1.282 2006/01/27 02:46:08 jkoshy Exp $
 .\"
 .Dd January 21, 2006
 .Dt RC.CONF 5
@@ -68,6 +68,11 @@
 .Va rc_conf_files
 variable below.
 .Pp
+Options are set with
+.Dq Li name=value
+assignments that use
+.Xr sh 1
+syntax.
 The following list provides a name and short description for each
 variable that can be set in the
 .Nm
@@ -3435,6 +3440,7 @@
 .Xr info 1 ,
 .Xr kbdcontrol 1 ,
 .Xr makewhatis 1 ,
+.Xr sh 1 ,
 .Xr vi 1 ,
 .Xr vidcontrol 1 ,
 .Xr ip 4 ,

==== //depot/projects/superpages/src/sys/kern/vfs_aio.c#5 (text+ko) ====

@@ -19,7 +19,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/kern/vfs_aio.c,v 1.216 2006/01/26 08:37:02 davidxu Exp $");
+__FBSDID("$FreeBSD: src/sys/kern/vfs_aio.c,v 1.217 2006/01/27 04:14:16 davidxu Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -1547,7 +1547,6 @@
 		PROC_UNLOCK(p);
 		suword(&uaiocb->_aiocb_private.error, error);
 		suword(&uaiocb->_aiocb_private.status, status);
-		error = 0;
 	} else {
 		error = EINVAL;
 		PROC_UNLOCK(p);

==== //depot/projects/superpages/src/sys/vm/vm_map.c#4 (text+ko) ====

@@ -63,7 +63,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/vm/vm_map.c,v 1.371 2005/12/04 22:55:41 alc Exp $");
+__FBSDID("$FreeBSD: src/sys/vm/vm_map.c,v 1.372 2006/01/27 07:28:50 alc Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -1426,7 +1426,7 @@
 				are_queues_locked = TRUE;
 				vm_page_lock_queues();
 			}
-			if (p->queue == PQ_CACHE)
+			if (VM_PAGE_INQUEUE1(p, PQ_CACHE))
 				vm_page_deactivate(p);
 			mpte = pmap_enter_quick(map->pmap,
 			    addr + ptoa(tmpidx), p, prot, mpte);

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

@@ -63,7 +63,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/vm/vm_object.c,v 1.355 2006/01/25 08:42:58 jeff Exp $");
+__FBSDID("$FreeBSD: src/sys/vm/vm_object.c,v 1.356 2006/01/27 07:28:50 alc Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -705,7 +705,7 @@
 			curgeneration = object->generation;
 			p = vm_page_lookup(object, tscan);
 			if (p == NULL || p->valid == 0 ||
-			    p->queue == PQ_CACHE) {
+			    VM_PAGE_INQUEUE1(p, PQ_CACHE)) {
 				if (--scanlimit == 0)
 					break;
 				++tscan;
@@ -794,7 +794,7 @@
 		if (((p->flags & PG_CLEANCHK) == 0) ||
 			(pi < tstart) || (pi >= tend) ||
 			(p->valid == 0) ||
-		    p->queue == PQ_CACHE) {
+		    VM_PAGE_INQUEUE1(p, PQ_CACHE)) {
 			vm_page_flag_clear(p, PG_CLEANCHK);
 			continue;
 		}
@@ -872,7 +872,7 @@
 				 (tp->flags & PG_CLEANCHK) == 0) ||
 				(tp->busy != 0))
 				break;
-			if (tp->queue == PQ_CACHE) {
+			if (VM_PAGE_INQUEUE1(tp, PQ_CACHE)) {
 				vm_page_flag_clear(tp, PG_CLEANCHK);
 				break;
 			}
@@ -900,7 +900,7 @@
 					 (tp->flags & PG_CLEANCHK) == 0) ||
 					(tp->busy != 0))
 					break;
-				if (tp->queue == PQ_CACHE) {
+				if (VM_PAGE_INQUEUE1(tp, PQ_CACHE)) {
 					vm_page_flag_clear(tp, PG_CLEANCHK);
 					break;
 				}

==== //depot/projects/superpages/src/sys/vm/vm_pageout.c#7 (text+ko) ====

@@ -73,7 +73,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/vm/vm_pageout.c,v 1.271 2005/12/31 14:39:20 netchild Exp $");
+__FBSDID("$FreeBSD: src/sys/vm/vm_pageout.c,v 1.272 2006/01/27 07:28:51 alc Exp $");
 
 #include "opt_vm.h"
 #include <sys/param.h>
@@ -337,7 +337,7 @@
 			ib = 0;
 			break;
 		}
-		if (p->queue == PQ_CACHE ||
+		if (VM_PAGE_INQUEUE1(p, PQ_CACHE) ||
 		    (p->flags & (PG_BUSY|PG_UNMANAGED)) || p->busy) {
 			ib = 0;
 			break;
@@ -367,7 +367,7 @@
 
 		if ((p = vm_page_lookup(object, pindex + is)) == NULL)
 			break;
-		if (p->queue == PQ_CACHE ||
+		if (VM_PAGE_INQUEUE1(p, PQ_CACHE) ||
 		    (p->flags & (PG_BUSY|PG_UNMANAGED)) || p->busy) {
 			break;
 		}

==== //depot/projects/superpages/src/sys/vm/vm_pageq.c#8 (text+ko) ====

@@ -26,7 +26,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/vm/vm_pageq.c,v 1.22 2006/01/24 19:24:54 alc Exp $");
+__FBSDID("$FreeBSD: src/sys/vm/vm_pageq.c,v 1.23 2006/01/27 07:28:51 alc Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -194,7 +194,7 @@
 		TAILQ_REMOVE(&pq->pl, m, pageq);
 		(*pq->cnt)--;
 		pq->lcnt--;
-		if (queue == PQ_CACHE) {
+		if (VM_PAGE_RESOLVEQUEUE(m, queue) == PQ_CACHE) {
 			if (vm_paging_needed())
 				pagedaemon_wakeup();
 		}

==== //depot/projects/superpages/www/en/releases/6.1R/todo.sgml#3 (text+ko) ====

@@ -1,7 +1,7 @@
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" [
 <!ENTITY base CDATA "../..">
 <!ENTITY email 'freebsd-qa'>
-<!ENTITY date "$FreeBSD: www/en/releases/6.1R/todo.sgml,v 1.4 2006/01/26 09:57:12 murray Exp $">
+<!ENTITY date "$FreeBSD: www/en/releases/6.1R/todo.sgml,v 1.6 2006/01/27 05:53:28 murray Exp $">
 <!ENTITY local.rel "6.1">
 <!ENTITY title "FreeBSD 6.1 Open Issues">
 <!ENTITY % navincludes SYSTEM "../../includes.navdownload.sgml"> %navincludes;
@@ -67,6 +67,13 @@
   </tr>
 
   <tr>
+    <td>quota deadlocks</td>
+    <td>&status.unknown;</td>
+    <td></td>
+    <td>Quota support is not locked properly and causes deadlocks.</td>
+  </tr>
+
+  <tr>
     <td>UFS deadlocks on amd64</td>
     <td>&status.unknown;</td>
     <td>tegge</td>
@@ -91,62 +98,9 @@
   <tr>
     <td>sparc64 instability.</td>
     <td>&status.unknown;</td>
-    <td></td>
-    <td>Outstanding recurrent issues include:<pre>
-panic: uma_small_alloc: free page still has mappings!
-cpuid = 0
-KDB: enter: panic
-[thread pid 9124 tid 100318 ]
-Stopped at      kdb_enter+0x3c: ta              %xcc, 1
-db> wh
-Tracing pid 9124 tid 100318 td 0xfffff800f6fb2720
-panic() at panic+0x164
-uma_small_alloc() at uma_small_alloc+0x9c
-slab_zalloc() at slab_zalloc+0x98
-uma_zone_slab() at uma_zone_slab+0x12c
-uma_zalloc_bucket() at uma_zalloc_bucket+0x16c
-uma_zalloc_arg() at uma_zalloc_arg+0x374
-malloc() at malloc+0x114
-allocbuf() at allocbuf+0x208
-getblk() at getblk+0x598
-breadn() at breadn+0x58
-bread() at bread+0x20
-ffs_blkatoff() at ffs_blkatoff+0x64
-ufs_direnter() at ufs_direnter+0x444
-ufs_makeinode() at ufs_makeinode+0x460
-ufs_create() at ufs_create+0x30
-VOP_CREATE_APV() at VOP_CREATE_APV+0xb4
-vn_open_cred() at vn_open_cred+0x188
-vn_open() at vn_open+0x18
-kern_open() at kern_open+0x8c
-pen() at open+0x14
-syscall() at syscall+0x2dc
--- syscall (5, FreeBSD ELF64, open) %o7=0x4034d5b8 --
-
-panic: trap: data access error
-cpuid = 1
-KDB: enter: panic
-[thread pid 2724 tid 100224 ]
-Stopped at      kdb_enter+0x3c: ta              %xcc, 1
-db> wh
-Tracing pid 2724 tid 100224 td 0xfffff8004e55a720
-panic() at panic+0x16c
-trap() at trap+0x3f0
--- data access error %o7=0xc017392c --
-copyout() at copyout+0xb0
-memrw() at memrw+0x2a8
-devfs_read_f() at devfs_read_f+0x9c
-dofileread() at dofileread+0xa4
-read() at read+0x38
-syscall() at syscall+0x2d4
--- syscall (3, FreeBSD ELF64, read) %o7=0x40339328 --
-
-(this one needs a port of
-
-1.117     +57 -33    src/sys/i386/i386/mem.c
-
-which marius is working on)</pre>
-    </td>
+    <td>marius</td>
+    <td>sparc64 installability when accessing /dev/mem.  Contact
+      marius or kris for debugging information.</td>
   </tr>
 
   <tr>
@@ -166,9 +120,8 @@
   <tr>
     <td>serious sparc64 IPv6 panic</td>
     <td>&status.unknown;</td>
-    <td></td>
-    <td>Triggered by just ping6'ing the box.  gnn keeps promising to
-      look at this but hasn't found it yet.  It may even be a MI
+    <td>gnn</td>
+    <td>Triggered by just ping6'ing the box.  It may even be a MI
       issue, the reporter of this bug only uses IPv6 with
       sparc64.</td>
   </tr>


More information about the p4-projects mailing list