Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 23 Jun 2006 17:16:44 GMT
From:      John Baldwin <jhb@FreeBSD.org>
To:        Perforce Change Reviews <perforce@freebsd.org>
Subject:   PERFORCE change 99870 for review
Message-ID:  <200606231716.k5NHGiAx035677@repoman.freebsd.org>

next in thread | raw e-mail | index | archive | help
http://perforce.freebsd.org/chv.cgi?CH=99870

Change 99870 by jhb@jhb_mutex on 2006/06/23 17:16:32

	IFC @99868.

Affected files ...

.. //depot/projects/smpng/sys/arm/arm/elf_trampoline.c#8 integrate
.. //depot/projects/smpng/sys/arm/arm/locore.S#12 integrate
.. //depot/projects/smpng/sys/compat/ndis/kern_ndis.c#34 integrate
.. //depot/projects/smpng/sys/dev/acpica/acpi_dock.c#2 integrate
.. //depot/projects/smpng/sys/ia64/ia64/machdep.c#104 integrate
.. //depot/projects/smpng/sys/netinet/ip_fw2.c#72 integrate
.. //depot/projects/smpng/sys/netinet/tcp_syncache.c#50 integrate
.. //depot/projects/smpng/sys/nfsserver/nfs_srvcache.c#12 integrate
.. //depot/projects/smpng/sys/nfsserver/nfsrvcache.h#6 integrate
.. //depot/projects/smpng/sys/sys/gpt.h#7 integrate
.. //depot/projects/smpng/sys/vm/vm_page.c#78 integrate
.. //depot/projects/smpng/sys/vm/vm_pageq.c#20 integrate

Differences ...

==== //depot/projects/smpng/sys/arm/arm/elf_trampoline.c#8 (text+ko) ====

@@ -23,7 +23,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/arm/arm/elf_trampoline.c,v 1.8 2006/06/18 22:46:30 cognet Exp $");
+__FBSDID("$FreeBSD: src/sys/arm/arm/elf_trampoline.c,v 1.9 2006/06/22 22:33:21 cognet Exp $");
 #include <machine/asm.h>
 #include <sys/types.h>
 #include <sys/elf32.h>
@@ -174,7 +174,6 @@
 	__start();
 }
 
-#ifdef KZIP
 static void
 get_cachetype_cp15()
 {
@@ -255,6 +254,7 @@
 }
 
 
+#ifdef KZIP
 static  unsigned char *orig_input, *i_input, *i_output;
 
 

==== //depot/projects/smpng/sys/arm/arm/locore.S#12 (text+ko) ====

@@ -37,9 +37,9 @@
 #include <machine/asm.h>
 #include <machine/armreg.h>
 #include <machine/pte.h>
-__FBSDID("$FreeBSD: src/sys/arm/arm/locore.S,v 1.13 2005/12/21 15:02:31 cognet Exp $");
+__FBSDID("$FreeBSD: src/sys/arm/arm/locore.S,v 1.14 2006/06/21 23:47:25 imp Exp $");
 
-/* What size should this really be ? It is only used by init_arm() */
+/* What size should this really be ? It is only used by initarm() */
 #define INIT_ARM_STACK_SIZE	2048
 
 /*

==== //depot/projects/smpng/sys/compat/ndis/kern_ndis.c#34 (text+ko) ====

@@ -31,7 +31,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/compat/ndis/kern_ndis.c,v 1.91 2005/11/02 18:01:04 wpaul Exp $");
+__FBSDID("$FreeBSD: src/sys/compat/ndis/kern_ndis.c,v 1.92 2006/06/22 13:11:36 dds Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -405,13 +405,16 @@
 	cfg->ndis_oid =
 #if __FreeBSD_version < 502113
 	SYSCTL_ADD_STRING(&sc->ndis_ctx, SYSCTL_CHILDREN(sc->ndis_tree),
+	    OID_AUTO, cfg->ndis_cfg.nc_cfgkey, flag,
+	    cfg->ndis_cfg.nc_val, sizeof(cfg->ndis_cfg.nc_val),
+	    cfg->ndis_cfg.nc_cfgdesc);
 #else
 	SYSCTL_ADD_STRING(device_get_sysctl_ctx(sc->ndis_dev),
 	    SYSCTL_CHILDREN(device_get_sysctl_tree(sc->ndis_dev)),
-#endif
 	    OID_AUTO, cfg->ndis_cfg.nc_cfgkey, flag,
 	    cfg->ndis_cfg.nc_val, sizeof(cfg->ndis_cfg.nc_val),
 	    cfg->ndis_cfg.nc_cfgdesc);
+#endif
 
 	return(0);
 }

==== //depot/projects/smpng/sys/dev/acpica/acpi_dock.c#2 (text) ====

@@ -23,25 +23,20 @@
  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  * SUCH DAMAGE.
  *
- * $FreeBSD: src/sys/dev/acpica/acpi_dock.c,v 1.2 2006/04/16 15:35:12 maxim Exp $
+ * $FreeBSD: src/sys/dev/acpica/acpi_dock.c,v 1.3 2006/06/22 06:34:05 njl Exp $
  */
 
 #include "opt_acpi.h"
 #include <sys/param.h>
+#include <sys/bus.h>
 #include <sys/kernel.h>
-#include <sys/bus.h>
-
-#include <sys/kdb.h>
-
-#include <machine/bus.h>
 #include <sys/module.h>
 
 #include <contrib/dev/acpica/acpi.h>
+#include <contrib/dev/acpica/acnamesp.h>
 #include <dev/acpica/acpivar.h>
 #include <dev/acpica/acpiio.h>
 
-#include <contrib/dev/acpica/acnamesp.h>
-
 /* Hooks for the ACPI CA debugging infrastructure */
 #define _COMPONENT	ACPI_DOCK
 ACPI_MODULE_NAME("DOCK")
@@ -56,6 +51,10 @@
 #define ACPI_DOCK_STATUS_UNDOCKED	0
 #define ACPI_DOCK_STATUS_DOCKED		1
 
+/* Prevent the device from being removed or not. */
+#define ACPI_DOCK_UNLOCK		0
+#define ACPI_DOCK_LOCK			1
+
 struct acpi_dock_softc {
 	int		_sta;
 	int		_bdn;
@@ -68,10 +67,10 @@
 /* Global docking status, for avoiding duplicated docking */
 static	int		acpi_dock_status = ACPI_DOCK_STATUS_UNKNOWN;
 
-ACPI_SERIAL_DECL(dock, "ACPI Dock Station");
+ACPI_SERIAL_DECL(dock, "ACPI Docking Station");
 
 /*
- * Utility
+ * Utility functions
  */
 
 static void
@@ -83,23 +82,15 @@
 	sc = device_get_softc(dev);
 	h = acpi_get_handle(dev);
 
-	if (ACPI_FAILURE(acpi_GetInteger(h, "_STA", &sc->_sta))) {
+	if (ACPI_FAILURE(acpi_GetInteger(h, "_STA", &sc->_sta)))
 		sc->_sta = ACPI_DOCK_STATUS_UNKNOWN;
-	}
-	ACPI_VPRINT(dev, acpi_device_get_parent_softc(dev),
-		    "_STA = %04x\n", sc->_sta);
-
-	if (ACPI_FAILURE(acpi_GetInteger(h, "_BDN", &sc->_bdn))) {
+	if (ACPI_FAILURE(acpi_GetInteger(h, "_BDN", &sc->_bdn)))
 		sc->_bdn = ACPI_DOCK_STATUS_UNKNOWN;
-	}
-	ACPI_VPRINT(dev, acpi_device_get_parent_softc(dev),
-		    "_BDN = %04x\n", sc->_bdn);
-
-	if (ACPI_FAILURE(acpi_GetInteger(h, "_UID", &sc->_uid))) {
+	if (ACPI_FAILURE(acpi_GetInteger(h, "_UID", &sc->_uid)))
 		sc->_uid = ACPI_DOCK_STATUS_UNKNOWN;
-	}
 	ACPI_VPRINT(dev, acpi_device_get_parent_softc(dev),
-		    "_UID = %04x\n", sc->_uid);
+		    "_STA: %04x, _BDN: %04x, _UID: %04x\n", sc->_sta,
+		    sc->_bdn, sc->_uid);
 }
 
 static int
@@ -122,23 +113,21 @@
 	buf.Length = sizeof(retobj);
 	status = AcpiEvaluateObject(h, "_DCK", &args, &buf);
 
-	if (dock == ACPI_DOCK_STATUS_UNDOCKED) {
-		/*
-		 * When _DCK is called with 0, OSPM will ignore the return value.
-		 */
+	/*
+	 * When _DCK is called with 0, OSPM will ignore the return value.
+	 */
+	if (dock == ACPI_DOCK_STATUS_UNDOCKED)
 		return (0);
-	}
 
-	if (ACPI_SUCCESS(status)) {
-		if (retobj.Type == ACPI_TYPE_INTEGER &&
-		    retobj.Integer.Value == 1) {
-			return (0);
-		}
-	}
+	/* If _DCK returned 1, the request succeeded. */
+	if (ACPI_SUCCESS(status) && retobj.Type == ACPI_TYPE_INTEGER &&
+	    retobj.Integer.Value == 1)
+		return (0);
 
 	return (-1);
 }
 
+/* Lock devices while docked. */
 static void
 acpi_dock_execute_lck(device_t dev, int lock)
 {
@@ -158,10 +147,8 @@
 	h = acpi_get_handle(dev);
 	snprintf(ejx, sizeof(ejx), "_EJ%d", state);
 	status = acpi_SetInteger(h, ejx, eject);
-
-	if (ACPI_SUCCESS(status)) {
+	if (ACPI_SUCCESS(status))
 		return (0);
-	}
 
 	return (-1);
 }
@@ -179,17 +166,12 @@
 	ejd_buffer.Pointer = NULL;
 	ejd_buffer.Length = ACPI_ALLOCATE_BUFFER;
 	ret_status = AcpiEvaluateObject(handle, "_EJD", NULL, &ejd_buffer);
-
-	if (ACPI_FAILURE(ret_status)) {
+	if (ACPI_FAILURE(ret_status))
 		goto out;
-	}
 
 	obj = (ACPI_OBJECT *)ejd_buffer.Pointer;
-	if (dock_handle != acpi_GetReference(NULL, obj)) {
-		goto out;
-	}
-
-	ret = 1;
+	if (dock_handle == acpi_GetReference(NULL, obj))
+		ret = 1;
 
 out:
 	if (ejd_buffer.Pointer != NULL)
@@ -199,7 +181,7 @@
 }
 
 /*
- * Dock
+ * Docking functions
  */
 
 static void
@@ -209,9 +191,8 @@
 
 	dev = (device_t)context;
 
-	if (!device_is_enabled(dev)) {
+	if (!device_is_enabled(dev))
 		device_enable(dev);
-	}
 
 	mtx_lock(&Giant);
 	device_probe_and_attach(dev);
@@ -219,7 +200,8 @@
 }
 
 static ACPI_STATUS
-acpi_dock_insert_child(ACPI_HANDLE handle, UINT32 level, void *context, void **status)
+acpi_dock_insert_child(ACPI_HANDLE handle, UINT32 level, void *context,
+    void **status)
 {
 	device_t	dock_dev, dev;
 	ACPI_HANDLE	dock_handle;
@@ -227,9 +209,8 @@
 	dock_dev = (device_t)context;
 	dock_handle = acpi_get_handle(dock_dev);
 
-	if (!acpi_dock_is_ejd_device(dock_handle, handle)) {
+	if (!acpi_dock_is_ejd_device(dock_handle, handle))
 		goto out;
-	}
 
 	ACPI_VPRINT(dock_dev, acpi_device_get_parent_softc(dock_dev),
 		    "inserting device for %s\n", acpi_name(handle));
@@ -251,8 +232,7 @@
 
 	dev = acpi_get_device(handle);
 	if (dev == NULL) {
-		ACPI_VPRINT(dock_dev, acpi_device_get_parent_softc(dock_dev),
-			    "%s has no device, something wrong\n",
+		device_printf(dock_dev, "error: %s has no associated device\n",
 		    acpi_name(handle));
 		goto out;
 	}
@@ -266,9 +246,11 @@
 static void
 acpi_dock_insert_children(device_t dev)
 {
+	ACPI_STATUS	status;
 	ACPI_HANDLE	sb_handle;
 
-	if (ACPI_SUCCESS(AcpiGetHandle(ACPI_ROOT_OBJECT, "\\_SB_", &sb_handle))) {
+	status = AcpiGetHandle(ACPI_ROOT_OBJECT, "\\_SB_", &sb_handle);
+	if (ACPI_SUCCESS(status)) {
 		AcpiWalkNamespace(ACPI_TYPE_DEVICE, sb_handle,
 		    100, acpi_dock_insert_child, dev, NULL);
 	}
@@ -287,26 +269,25 @@
 
 	if (acpi_dock_status == ACPI_DOCK_STATUS_UNDOCKED ||
 	    acpi_dock_status == ACPI_DOCK_STATUS_UNKNOWN) {
-		acpi_dock_execute_lck(dev, 1);
+		acpi_dock_execute_lck(dev, ACPI_DOCK_LOCK);
 		if (acpi_dock_execute_dck(dev, 1) != 0) {
 			device_printf(dev, "_DCK failed\n");
 			return;
 		}
 
-		if (!cold) {
+		if (!cold)
 			acpi_dock_insert_children(dev);
-		}
 		sc->status = acpi_dock_status = ACPI_DOCK_STATUS_DOCKED;
 	}
 }
 
-
 /*
  * Undock
  */
 
 static ACPI_STATUS
-acpi_dock_eject_child(ACPI_HANDLE handle, UINT32 level, void *context, void **status)
+acpi_dock_eject_child(ACPI_HANDLE handle, UINT32 level, void *context,
+    void **status)
 {
 	device_t	dock_dev, dev;
 	ACPI_HANDLE	dock_handle;
@@ -314,12 +295,11 @@
 	dock_dev = *(device_t *)context;
 	dock_handle = acpi_get_handle(dock_dev);
 
-	if (!acpi_dock_is_ejd_device(dock_handle, handle)) {
+	if (!acpi_dock_is_ejd_device(dock_handle, handle))
 		goto out;
-	}
 
 	ACPI_VPRINT(dock_dev, acpi_device_get_parent_softc(dock_dev),
-		    "ejecting device for %s\n", acpi_name(handle));
+	    "ejecting device for %s\n", acpi_name(handle));
 
 	dev = acpi_get_device(handle);
 	if (dev != NULL && device_is_attached(dev)) {
@@ -337,8 +317,10 @@
 acpi_dock_eject_children(device_t dev)
 {
 	ACPI_HANDLE	sb_handle;
+	ACPI_STATUS	status;
 
-	if (ACPI_SUCCESS(AcpiGetHandle(ACPI_ROOT_OBJECT, "\\_SB_", &sb_handle))) {
+	status = AcpiGetHandle(ACPI_ROOT_OBJECT, "\\_SB_", &sb_handle);
+	if (ACPI_SUCCESS(status)) {
 		AcpiWalkNamespace(ACPI_TYPE_DEVICE, sb_handle,
 		    100, acpi_dock_eject_child, &dev, NULL);
 	}
@@ -355,11 +337,10 @@
 	if (acpi_dock_status == ACPI_DOCK_STATUS_DOCKED ||
 	    acpi_dock_status == ACPI_DOCK_STATUS_UNKNOWN) {
 		acpi_dock_eject_children(dev);
-		if (acpi_dock_execute_dck(dev, 0) != 0) {
+		if (acpi_dock_execute_dck(dev, 0) != 0)
 			return;
-		}
 
-		acpi_dock_execute_lck(dev, 0);
+		acpi_dock_execute_lck(dev, ACPI_DOCK_UNLOCK);
 
 		if (acpi_dock_execute_ejx(dev, 1, 0) != 0) {
 			device_printf(dev, "_EJ0 failed\n");
@@ -370,9 +351,8 @@
 	}
 
 	acpi_dock_get_info(dev);
-	if (sc->_sta != 0) {
-		device_printf(dev, "mechanical failures (%#x).\n", sc->_sta);
-	}
+	if (sc->_sta != 0)
+		device_printf(dev, "mechanical failure (%#x).\n", sc->_sta);
 }
 
 /*
@@ -393,12 +373,10 @@
 	 * If the _STA indicates 'present' and 'functioning',
 	 * the system is docked.
 	 */
-	if (ACPI_DEVICE_PRESENT(sc->_sta)) {
+	if (ACPI_DEVICE_PRESENT(sc->_sta))
 		acpi_dock_insert(dev);
-	}
-	if (sc->_sta == 0x0) {
+	if (sc->_sta == 0)
 		acpi_dock_removal(dev);
-	}
 }
 
 /*
@@ -420,11 +398,9 @@
 	case ACPI_DOCK_NOTIFY_DEVICE_CHECK:
 		acpi_dock_device_check(dev);
 		break;
-
 	case ACPI_DOCK_NOTIFY_EJECT_REQUEST:
 		acpi_dock_removal(dev);
 		break;
-
 	default:
 		device_printf(dev, "unknown notify %#x\n", notify);
 		break;
@@ -432,10 +408,6 @@
 	ACPI_SERIAL_END(dock);
 }
 
-/*
- * Sysctl proc
- */
-
 static int
 acpi_dock_status_sysctl(SYSCTL_HANDLER_ARGS)
 {
@@ -443,7 +415,6 @@
 	device_t	dev;
         int		status, err;
 
-
 	err = 0;
         dev = (device_t)arg1;
 	sc = device_get_softc(dev);
@@ -451,9 +422,8 @@
 
 	ACPI_SERIAL_BEGIN(dock);
         err = sysctl_handle_int(oidp, &status, 0, req);
-        if (err != 0 || req->newptr == NULL) {
+        if (err != 0 || req->newptr == NULL)
                 goto out;
-	}
 
 	if (status != ACPI_DOCK_STATUS_UNDOCKED &&
 	    status != ACPI_DOCK_STATUS_DOCKED) {
@@ -461,19 +431,16 @@
                 goto out;
 	}
 
-	if (status == sc->status) {
+	if (status == sc->status)
 		goto out;
-	}
 
 	switch (status) {
 	case ACPI_DOCK_STATUS_UNDOCKED:
 		acpi_dock_removal(dev);
 		break;
-
 	case ACPI_DOCK_STATUS_DOCKED:
 		acpi_dock_device_check(dev);
 		break;
-
 	default:
 		err = EINVAL;
 		break;
@@ -483,10 +450,6 @@
 	return (err);
 }
 
-/*
- * probe/attach
- */
-
 static int
 acpi_dock_probe(device_t dev)
 {
@@ -497,11 +460,15 @@
 	    ACPI_FAILURE(AcpiGetHandle(h, "_DCK", &tmp)))
 		return (ENXIO);
 
-	if (acpi_dock_status == ACPI_DOCK_STATUS_DOCKED) {
+	if (acpi_dock_status == ACPI_DOCK_STATUS_DOCKED)
 		return (ENXIO);
-	}
+
+	device_set_desc(dev, "ACPI Docking Station");
 
-	device_set_desc(dev, "ACPI Dock Station");
+	/*
+	 * XXX Somewhere else in the kernel panics on "sysctl kern" if we
+	 * return a negative value here (reprobe ok).
+	 */
 	return (0);
 }
 
@@ -519,9 +486,8 @@
 	if (h == NULL)
 		return (ENXIO);
 
-	if (acpi_dock_status == ACPI_DOCK_STATUS_DOCKED) {
+	if (acpi_dock_status == ACPI_DOCK_STATUS_DOCKED)
 		return (ENXIO);
-	}
 
 	sc->status = ACPI_DOCK_STATUS_UNKNOWN;
 

==== //depot/projects/smpng/sys/ia64/ia64/machdep.c#104 (text+ko) ====

@@ -26,7 +26,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/ia64/ia64/machdep.c,v 1.207 2006/02/22 18:57:49 jhb Exp $");
+__FBSDID("$FreeBSD: src/sys/ia64/ia64/machdep.c,v 1.208 2006/06/22 00:56:58 marcel Exp $");
 
 #include "opt_compat.h"
 #include "opt_ddb.h"
@@ -219,6 +219,14 @@
 			break;
 		}
 		break;
+	case 0x20:
+		family_name = "Itanium 2";
+		switch (model) {
+		case 0x00:
+			model_name = "Montecito";
+			break;
+		}
+		break;
 	}
 	snprintf(cpu_family, sizeof(cpu_family), "%s", family_name);
 	snprintf(cpu_model, sizeof(cpu_model), "%s", model_name);

==== //depot/projects/smpng/sys/netinet/ip_fw2.c#72 (text+ko) ====

@@ -22,7 +22,7 @@
  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  * SUCH DAMAGE.
  *
- * $FreeBSD: src/sys/netinet/ip_fw2.c,v 1.135 2006/06/15 09:39:22 oleg Exp $
+ * $FreeBSD: src/sys/netinet/ip_fw2.c,v 1.136 2006/06/22 13:22:54 ume Exp $
  */
 
 #define        DEB(x)
@@ -2189,7 +2189,10 @@
 
 			case IPPROTO_ROUTING:	/* RFC 2460 */
 				PULLUP_TO(hlen, ulp, struct ip6_rthdr);
-				if (((struct ip6_rthdr *)ulp)->ip6r_type != 0) {
+				switch (((struct ip6_rthdr *)ulp)->ip6r_type) {
+				case 0:
+					break;
+				default:
 					printf("IPFW2: IPV6 - Unknown Routing "
 					    "Header type(%d)\n",
 					    ((struct ip6_rthdr *)ulp)->ip6r_type);
@@ -2260,11 +2263,20 @@
 				PULLUP_TO(hlen, ulp, struct ip6_ext);
 				break;
 
+			case IPPROTO_IPV6:	/* RFC 2893 */
+				PULLUP_TO(hlen, ulp, struct ip6_hdr);
+				break;
+
+			case IPPROTO_IPV4:	/* RFC 2893 */
+				PULLUP_TO(hlen, ulp, struct ip);
+				break;
+
 			default:
 				printf("IPFW2: IPV6 - Unknown Extension "
 				    "Header(%d), ext_hd=%x\n", proto, ext_hd);
 				if (fw_deny_unknown_exthdrs)
 				    return (IP_FW_DENY);
+				PULLUP_TO(hlen, ulp, struct ip6_ext);
 				break;
 			} /*switch */
 		}

==== //depot/projects/smpng/sys/netinet/tcp_syncache.c#50 (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/netinet/tcp_syncache.c,v 1.93 2006/06/20 08:11:30 andre Exp $
+ * $FreeBSD: src/sys/netinet/tcp_syncache.c,v 1.94 2006/06/22 15:07:45 andre Exp $
  */
 
 #include "opt_inet.h"
@@ -1289,8 +1289,6 @@
 
 static int tcp_msstab[] = { 0, 536, 1460, 8960 };
 
-static MD5_CTX syn_ctx;
-
 #define MD5Add(v)	MD5Update(&syn_ctx, (u_char *)&v, sizeof(v))
 
 struct md5_add {
@@ -1329,6 +1327,7 @@
 	u_int32_t data;
 	int idx, i;
 	struct md5_add add;
+	MD5_CTX syn_ctx;
 
 	idx = ((ticks << SYNCOOKIE_TIMESHIFT) / hz) & SYNCOOKIE_WNDMASK;
 	SYNCOOKIE_RLOCK(tcp_secret[idx]);
@@ -1380,6 +1379,7 @@
 	u_int32_t data;
 	int wnd, idx;
 	struct md5_add add;
+	MD5_CTX syn_ctx;
 
 	data = (th->th_ack - 1) ^ (th->th_seq - 1);	/* remove ISS */
 	idx = data & SYNCOOKIE_WNDMASK;

==== //depot/projects/smpng/sys/nfsserver/nfs_srvcache.c#12 (text+ko) ====

@@ -33,7 +33,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/nfsserver/nfs_srvcache.c,v 1.40 2005/01/07 01:45:51 imp Exp $");
+__FBSDID("$FreeBSD: src/sys/nfsserver/nfs_srvcache.c,v 1.41 2006/06/23 00:42:26 mohans Exp $");
 
 /*
  * Reference: Chet Juszczak, "Improving the Performance and Correctness
@@ -49,6 +49,7 @@
 #include <sys/mutex.h>
 #include <sys/socket.h>
 #include <sys/socketvar.h>	/* for sodupsockaddr */
+#include <sys/eventhandler.h>
 
 #include <netinet/in.h>
 #include <nfs/rpcv2.h>
@@ -57,7 +58,7 @@
 #include <nfsserver/nfsrvcache.h>
 
 static long numnfsrvcache;
-static long desirednfsrvcache = NFSRVCACHESIZ;
+static long desirednfsrvcache;
 
 #define	NFSRCHASH(xid) \
 	(&nfsrvhashtbl[((xid) + ((xid) >> 24)) & nfsrvhash])
@@ -122,15 +123,32 @@
 	FALSE,
 };
 
+/* 
+ * Size the NFS server's duplicate request cache at 1/2 the nmbclsters, floating 
+ * within a (64, 2048) range. This is to prevent all mbuf clusters being tied up 
+ * in the NFS dupreq cache for small values of nmbclusters. 
+ */
+static void
+nfsrvcache_size_change(void *tag)
+{
+	desirednfsrvcache = nmbclusters /2;
+	if (desirednfsrvcache > NFSRVCACHE_MAX_SIZE)
+		desirednfsrvcache = NFSRVCACHE_MAX_SIZE;
+	if (desirednfsrvcache < NFSRVCACHE_MIN_SIZE)
+		desirednfsrvcache = NFSRVCACHE_MIN_SIZE;	
+}
+
 /*
  * Initialize the server request cache list
  */
 void
 nfsrv_initcache(void)
 {
-
+	nfsrvcache_size_change(NULL);
 	nfsrvhashtbl = hashinit(desirednfsrvcache, M_NFSD, &nfsrvhash);
 	TAILQ_INIT(&nfsrvlruhead);
+	EVENTHANDLER_REGISTER(nmbclusters_change, nfsrvcache_size_change, NULL,
+			      EVENTHANDLER_PRI_FIRST);
 }
 
 /*

==== //depot/projects/smpng/sys/nfsserver/nfsrvcache.h#6 (text+ko) ====

@@ -30,7 +30,7 @@
  * SUCH DAMAGE.
  *
  *	@(#)nfsrvcache.h	8.3 (Berkeley) 3/30/95
- * $FreeBSD: src/sys/nfsserver/nfsrvcache.h,v 1.18 2006/04/25 00:21:56 mohans Exp $
+ * $FreeBSD: src/sys/nfsserver/nfsrvcache.h,v 1.19 2006/06/23 00:42:26 mohans Exp $
  */
 
 #ifndef _NFSSERVER_NFSRVCACHE_H_
@@ -41,8 +41,8 @@
 /*
  * Definitions for the server recent request cache
  */
-
-#define	NFSRVCACHESIZ	2048
+#define NFSRVCACHE_MAX_SIZE	2048
+#define NFSRVCACHE_MIN_SIZE	  64
 
 struct nfsrvcache {
 	TAILQ_ENTRY(nfsrvcache) rc_lru;		/* LRU chain */

==== //depot/projects/smpng/sys/sys/gpt.h#7 (text+ko) ====

@@ -23,7 +23,7 @@
  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
  * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  *
- * $FreeBSD: src/sys/sys/gpt.h,v 1.9 2005/09/17 06:34:18 marcel Exp $
+ * $FreeBSD: src/sys/sys/gpt.h,v 1.10 2006/06/22 22:11:12 marcel Exp $
  */
 
 #ifndef _SYS_GPT_H_
@@ -113,4 +113,7 @@
 #define	GPT_ENT_TYPE_LINUX_LVM		\
 	{0xe6d6d379,0xf507,0x44c2,0xa2,0x3c,{0x23,0x8f,0x2a,0x3d,0xf9,0x28}}
 
+#define	GPT_ENT_TYPE_APPLE_HFS		\
+	{0x48465300,0x0000,0x11aa,0xaa,0x11,{0x00,0x30,0x65,0x43,0xec,0xac}}
+
 #endif /* _SYS_GPT_H_ */

==== //depot/projects/smpng/sys/vm/vm_page.c#78 (text+ko) ====

@@ -97,7 +97,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/vm/vm_page.c,v 1.316 2006/05/31 22:55:23 ps Exp $");
+__FBSDID("$FreeBSD: src/sys/vm/vm_page.c,v 1.317 2006/06/23 16:44:24 jhb Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>

==== //depot/projects/smpng/sys/vm/vm_pageq.c#20 (text+ko) ====

@@ -26,7 +26,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/vm/vm_pageq.c,v 1.26 2006/04/25 17:27:24 alc Exp $");
+__FBSDID("$FreeBSD: src/sys/vm/vm_pageq.c,v 1.27 2006/06/23 16:44:24 jhb Exp $");
 
 #include "opt_vmpage.h"
 



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200606231716.k5NHGiAx035677>