PERFORCE change 143716 for review
Julian Elischer
julian at FreeBSD.org
Wed Jun 18 21:26:04 UTC 2008
http://perforce.freebsd.org/chv.cgi?CH=143716
Change 143716 by julian at julian_trafmon1 on 2008/06/18 21:25:59
IFC at 143713
Affected files ...
.. //depot/projects/vimage-commit2/src/sys/boot/i386/libi386/time.c#2 integrate
.. //depot/projects/vimage-commit2/src/sys/compat/ndis/subr_ntoskrnl.c#2 integrate
.. //depot/projects/vimage-commit2/src/sys/ddb/db_ps.c#2 integrate
.. //depot/projects/vimage-commit2/src/sys/dev/smc/if_smc.c#5 integrate
.. //depot/projects/vimage-commit2/src/sys/fs/devfs/devfs_devs.c#2 integrate
.. //depot/projects/vimage-commit2/src/sys/fs/devfs/devfs_int.h#2 integrate
.. //depot/projects/vimage-commit2/src/sys/fs/devfs/devfs_vnops.c#2 integrate
.. //depot/projects/vimage-commit2/src/sys/fs/tmpfs/tmpfs_subr.c#2 integrate
.. //depot/projects/vimage-commit2/src/sys/geom/part/g_part.c#2 integrate
.. //depot/projects/vimage-commit2/src/sys/geom/part/g_part.h#2 integrate
.. //depot/projects/vimage-commit2/src/sys/geom/part/g_part_if.m#2 integrate
.. //depot/projects/vimage-commit2/src/sys/geom/part/g_part_mbr.c#3 integrate
.. //depot/projects/vimage-commit2/src/sys/kern/kern_conf.c#4 integrate
.. //depot/projects/vimage-commit2/src/sys/kern/kern_dtrace.c#2 integrate
.. //depot/projects/vimage-commit2/src/sys/netinet/sctp_pcb.c#5 integrate
.. //depot/projects/vimage-commit2/src/sys/netinet/sctp_pcb.h#3 integrate
.. //depot/projects/vimage-commit2/src/sys/netinet/sctp_usrreq.c#5 integrate
.. //depot/projects/vimage-commit2/src/sys/netinet/sctp_var.h#3 integrate
.. //depot/projects/vimage-commit2/src/sys/netinet/tcp_syncache.c#3 integrate
.. //depot/projects/vimage-commit2/src/sys/pci/if_rl.c#2 integrate
.. //depot/projects/vimage-commit2/src/sys/pci/if_rlreg.h#2 integrate
.. //depot/projects/vimage-commit2/src/sys/pci/nfsmb.c#2 integrate
.. //depot/projects/vimage-commit2/src/sys/sys/conf.h#4 integrate
.. //depot/projects/vimage-commit2/src/sys/sys/param.h#3 integrate
Differences ...
==== //depot/projects/vimage-commit2/src/sys/boot/i386/libi386/time.c#2 (text+ko) ====
@@ -25,25 +25,23 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/boot/i386/libi386/time.c,v 1.5 2003/08/25 23:28:31 obrien Exp $");
+__FBSDID("$FreeBSD: src/sys/boot/i386/libi386/time.c,v 1.6 2008/06/16 17:04:04 olli Exp $");
#include <stand.h>
#include <btxv86.h>
#include "bootstrap.h"
#include "libi386.h"
+static int bios_seconds(void);
+
/*
- * Return the time in seconds since the beginning of the day.
+ * Return the BIOS time-of-day value.
*
- * If we pass midnight, don't wrap back to 0.
- *
* XXX uses undocumented BCD support from libstand.
*/
-
-time_t
-time(time_t *t)
+static int
+bios_seconds(void)
{
- static time_t lasttime, now;
int hr, minute, sec;
v86.ctl = 0;
@@ -55,7 +53,33 @@
minute = bcd2bin(v86.ecx & 0xff); /* minute in %cl */
sec = bcd2bin((v86.edx & 0xff00) >> 8); /* second in %dh */
- now = hr * 3600 + minute * 60 + sec;
+ return (hr * 3600 + minute * 60 + sec);
+}
+
+/*
+ * Return the time in seconds since the beginning of the day.
+ *
+ * Some BIOSes (notably qemu) don't correctly read the RTC
+ * registers in an atomic way, sometimes returning bogus values.
+ * Therefore we "debounce" the reading by accepting it only when
+ * we got two identical values in succession.
+ *
+ * If we pass midnight, don't wrap back to 0.
+ */
+time_t
+time(time_t *t)
+{
+ static time_t lasttime;
+ time_t now, check;
+ int try;
+
+ try = 0;
+ check = bios_seconds();
+ do {
+ now = check;
+ check = bios_seconds();
+ } while (now != check && ++try < 1000);
+
if (now < lasttime)
now += 24 * 3600;
lasttime = now;
==== //depot/projects/vimage-commit2/src/sys/compat/ndis/subr_ntoskrnl.c#2 (text+ko) ====
@@ -31,7 +31,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/compat/ndis/subr_ntoskrnl.c,v 1.95 2008/05/30 06:31:55 weongyo Exp $");
+__FBSDID("$FreeBSD: src/sys/compat/ndis/subr_ntoskrnl.c,v 1.96 2008/06/15 13:37:29 cokane Exp $");
#include <sys/ctype.h>
#include <sys/unistd.h>
@@ -225,6 +225,8 @@
static ndis_status PsCreateSystemThread(ndis_handle *,
uint32_t, void *, ndis_handle, void *, void *, void *);
static ndis_status PsTerminateSystemThread(ndis_status);
+static ndis_status IoGetDeviceObjectPointer(unicode_string *,
+ uint32_t, void *, device_object *);
static ndis_status IoGetDeviceProperty(device_object *, uint32_t,
uint32_t, void *, uint32_t *);
static void KeInitializeMutex(kmutant *, uint32_t);
@@ -3235,6 +3237,16 @@
}
static ndis_status
+IoGetDeviceObjectPointer(name, reqaccess, fileobj, devobj)
+ unicode_string *name;
+ uint32_t reqaccess;
+ void *fileobj;
+ device_object *devobj;
+{
+ return(STATUS_SUCCESS);
+}
+
+static ndis_status
IoGetDeviceProperty(devobj, regprop, buflen, prop, reslen)
device_object *devobj;
uint32_t regprop;
@@ -4391,6 +4403,7 @@
IMPORT_SFUNC(MmUnmapIoSpace, 2),
IMPORT_SFUNC(KeInitializeSpinLock, 1),
IMPORT_SFUNC(IoIsWdmVersionAvailable, 2),
+ IMPORT_SFUNC(IoGetDeviceObjectPointer, 4),
IMPORT_SFUNC(IoGetDeviceProperty, 5),
IMPORT_SFUNC(IoAllocateWorkItem, 1),
IMPORT_SFUNC(IoFreeWorkItem, 1),
==== //depot/projects/vimage-commit2/src/sys/ddb/db_ps.c#2 (text+ko) ====
@@ -28,7 +28,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/ddb/db_ps.c,v 1.68 2008/03/25 20:36:32 sam Exp $");
+__FBSDID("$FreeBSD: src/sys/ddb/db_ps.c,v 1.69 2008/06/18 20:42:01 attilio Exp $");
#include <sys/param.h>
#include <sys/cons.h>
@@ -292,6 +292,7 @@
DB_SHOW_COMMAND(thread, db_show_thread)
{
struct thread *td;
+ struct lock_object *lock;
boolean_t comma;
/* Determine which thread to examine. */
@@ -299,6 +300,7 @@
td = db_lookup_thread(addr, FALSE);
else
td = kdb_thread;
+ lock = (struct lock_object *)td->td_lock;
db_printf("Thread %d at %p:\n", td->td_tid, td);
db_printf(" proc (pid %d): %p\n", td->td_proc->p_pid, td->td_proc);
@@ -365,6 +367,7 @@
db_printf(" wmesg: %s wchan: %p\n", td->td_wmesg,
td->td_wchan);
db_printf(" priority: %d\n", td->td_priority);
+ db_printf(" container lock: %s (%p)\n", lock->lo_name, lock);
}
DB_SHOW_COMMAND(proc, db_show_proc)
==== //depot/projects/vimage-commit2/src/sys/dev/smc/if_smc.c#5 (text+ko) ====
@@ -23,7 +23,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/smc/if_smc.c,v 1.5 2008/06/13 00:48:09 benno Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/smc/if_smc.c,v 1.6 2008/06/17 05:48:42 benno Exp $");
/*
* Driver for SMSC LAN91C111, may work for older variants.
@@ -394,6 +394,13 @@
smc_stop(sc);
SMC_UNLOCK(sc);
+ if (sc->smc_ifp != NULL) {
+ ether_ifdetach(sc->smc_ifp);
+ }
+
+ callout_drain(&sc->smc_watchdog);
+ callout_drain(&sc->smc_mii_tick_ch);
+
#ifdef DEVICE_POLLING
if (sc->smc_ifp->if_capenable & IFCAP_POLLING)
ether_poll_deregister(sc->smc_ifp);
@@ -409,10 +416,8 @@
taskqueue_free(sc->smc_tq);
sc->smc_tq = NULL;
}
-
if (sc->smc_ifp != NULL) {
- ether_ifdetach(sc->smc_ifp);
if_free(sc->smc_ifp);
}
==== //depot/projects/vimage-commit2/src/sys/fs/devfs/devfs_devs.c#2 (text+ko) ====
@@ -25,7 +25,7 @@
*
* From: FreeBSD: src/sys/miscfs/kernfs/kernfs_vfsops.c 1.36
*
- * $FreeBSD: src/sys/fs/devfs/devfs_devs.c,v 1.53 2008/01/13 14:44:03 attilio Exp $
+ * $FreeBSD: src/sys/fs/devfs/devfs_devs.c,v 1.54 2008/06/16 17:34:59 kib Exp $
*/
#include "opt_mac.h"
@@ -125,7 +125,6 @@
cdp->cdp_maxdirent = 0;
cdev = &cdp->cdp_c;
- cdev->si_priv = cdp;
cdev->si_name = cdev->__si_namebuf;
LIST_INIT(&cdev->si_children);
@@ -137,7 +136,7 @@
{
struct cdev_priv *cdp;
- cdp = cdev->si_priv;
+ cdp = cdev2priv(cdev);
if (cdev->si_cred != NULL)
crfree(cdev->si_cred);
if (cdp->cdp_inode > 0)
@@ -510,7 +509,7 @@
struct cdev_priv *cdp;
mtx_assert(&devmtx, MA_OWNED);
- cdp = dev->si_priv;
+ cdp = cdev2priv(dev);
cdp->cdp_flags |= CDP_ACTIVE;
cdp->cdp_inode = alloc_unrl(devfs_inos);
dev_refl(dev);
@@ -524,7 +523,7 @@
struct cdev_priv *cdp;
mtx_assert(&devmtx, MA_OWNED);
- cdp = dev->si_priv;
+ cdp = cdev2priv(dev);
cdp->cdp_flags &= ~CDP_ACTIVE;
devfs_generation++;
}
==== //depot/projects/vimage-commit2/src/sys/fs/devfs/devfs_int.h#2 (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/fs/devfs/devfs_int.h,v 1.5 2008/05/21 09:31:44 kib Exp $
+ * $FreeBSD: src/sys/fs/devfs/devfs_int.h,v 1.6 2008/06/16 17:34:59 kib Exp $
*/
/*
@@ -68,6 +68,8 @@
LIST_HEAD(, cdev_privdata) cdp_fdpriv;
};
+#define cdev2priv(c) member2struct(cdev_priv, cdp_c, c)
+
struct cdev *devfs_alloc(void);
void devfs_free(struct cdev *);
void devfs_create(struct cdev *dev);
==== //depot/projects/vimage-commit2/src/sys/fs/devfs/devfs_vnops.c#2 (text+ko) ====
@@ -31,7 +31,7 @@
* @(#)kernfs_vnops.c 8.15 (Berkeley) 5/21/95
* From: FreeBSD: src/sys/miscfs/kernfs/kernfs_vnops.c 1.43
*
- * $FreeBSD: src/sys/fs/devfs/devfs_vnops.c,v 1.162 2008/06/05 09:15:47 kib Exp $
+ * $FreeBSD: src/sys/fs/devfs/devfs_vnops.c,v 1.163 2008/06/16 17:34:59 kib Exp $
*/
/*
@@ -132,7 +132,7 @@
fp = curthread->td_fpop;
if (fp == NULL)
return (ENOENT);
- cdp = ((struct cdev *)fp->f_data)->si_priv;
+ cdp = cdev2priv((struct cdev *)fp->f_data);
p = malloc(sizeof(struct cdev_privdata), M_CDEVPDATA, M_WAITOK);
p->cdpd_data = priv;
p->cdpd_dtr = priv_dtr;
@@ -541,7 +541,7 @@
fix(dev->si_ctime);
vap->va_ctime = dev->si_ctime;
- vap->va_rdev = dev->si_priv->cdp_inode;
+ vap->va_rdev = cdev2priv(dev)->cdp_inode;
}
vap->va_gen = 0;
vap->va_flags = 0;
@@ -742,7 +742,7 @@
}
dev_lock();
- dde = &cdev->si_priv->cdp_dirents[dmp->dm_idx];
+ dde = &cdev2priv(cdev)->cdp_dirents[dmp->dm_idx];
if (dde != NULL && *dde != NULL)
de = *dde;
dev_unlock();
@@ -1141,7 +1141,7 @@
KASSERT((ap->a_flags & REVOKEALL) != 0, ("devfs_revoke !REVOKEALL"));
dev = vp->v_rdev;
- cdp = dev->si_priv;
+ cdp = cdev2priv(dev);
dev_lock();
cdp->cdp_inuse++;
@@ -1419,7 +1419,7 @@
{
if (x == NULL)
return (NODEV);
- return (x->si_priv->cdp_inode);
+ return (cdev2priv(x)->cdp_inode);
}
static struct fileops devfs_ops_f = {
==== //depot/projects/vimage-commit2/src/sys/fs/tmpfs/tmpfs_subr.c#2 (text+ko) ====
@@ -41,7 +41,7 @@
* Efficient memory file system supporting functions.
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/fs/tmpfs/tmpfs_subr.c,v 1.16 2008/02/25 18:45:56 attilio Exp $");
+__FBSDID("$FreeBSD: src/sys/fs/tmpfs/tmpfs_subr.c,v 1.17 2008/06/15 18:40:58 kib Exp $");
#include <sys/param.h>
#include <sys/namei.h>
@@ -391,11 +391,8 @@
vnode_pager_setsize(vp, node->tn_size);
error = insmntque(vp, mp);
- if (error) {
- vgone(vp);
- vput(vp);
+ if (error)
vp = NULL;
- }
unlock:
TMPFS_NODE_LOCK(node);
==== //depot/projects/vimage-commit2/src/sys/geom/part/g_part.c#2 (text+ko) ====
@@ -1,5 +1,5 @@
/*-
- * Copyright (c) 2002, 2005, 2006, 2007 Marcel Moolenaar
+ * Copyright (c) 2002, 2005-2008 Marcel Moolenaar
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -25,7 +25,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/geom/part/g_part.c,v 1.18 2008/04/23 20:13:05 marcel Exp $");
+__FBSDID("$FreeBSD: src/sys/geom/part/g_part.c,v 1.19 2008/06/18 01:13:34 marcel Exp $");
#include <sys/param.h>
#include <sys/bio.h>
@@ -121,7 +121,9 @@
G_PART_CTL_MOVE,
G_PART_CTL_RECOVER,
G_PART_CTL_RESIZE,
- G_PART_CTL_UNDO
+ G_PART_CTL_SET,
+ G_PART_CTL_UNDO,
+ G_PART_CTL_UNSET
};
/*
@@ -954,6 +956,53 @@
}
static int
+g_part_ctl_setunset(struct gctl_req *req, struct g_part_parms *gpp,
+ unsigned int set)
+{
+ char buf[32];
+ struct g_geom *gp;
+ struct g_part_entry *entry;
+ struct g_part_table *table;
+ struct sbuf *sb;
+ int error;
+
+ gp = gpp->gpp_geom;
+ G_PART_TRACE((G_T_TOPOLOGY, "%s(%s)", __func__, gp->name));
+ g_topology_assert();
+
+ table = gp->softc;
+
+ LIST_FOREACH(entry, &table->gpt_entry, gpe_entry) {
+ if (entry->gpe_deleted || entry->gpe_internal)
+ continue;
+ if (entry->gpe_index == gpp->gpp_index)
+ break;
+ }
+ if (entry == NULL) {
+ gctl_error(req, "%d index '%d'", ENOENT, gpp->gpp_index);
+ return (ENOENT);
+ }
+
+ error = G_PART_SETUNSET(table, entry, gpp->gpp_attrib, set);
+ if (error) {
+ gctl_error(req, "%d attrib '%s'", error, gpp->gpp_attrib);
+ return (error);
+ }
+
+ /* Provide feedback if so requested. */
+ if (gpp->gpp_parms & G_PART_PARM_OUTPUT) {
+ sb = sbuf_new(NULL, NULL, 0, SBUF_AUTOEXTEND);
+ sbuf_printf(sb, "%s%s has %s %sset\n", gp->name,
+ G_PART_NAME(table, entry, buf, sizeof(buf)),
+ gpp->gpp_attrib, (set) ? "" : "un");
+ sbuf_finish(sb);
+ gctl_set_param(req, "output", sbuf_data(sb), sbuf_len(sb) + 1);
+ sbuf_delete(sb);
+ }
+ return (0);
+}
+
+static int
g_part_ctl_undo(struct gctl_req *req, struct g_part_parms *gpp)
{
struct g_consumer *cp;
@@ -1129,11 +1178,22 @@
mparms |= G_PART_PARM_GEOM | G_PART_PARM_INDEX;
}
break;
+ case 's':
+ if (!strcmp(verb, "set")) {
+ ctlreq = G_PART_CTL_SET;
+ mparms |= G_PART_PARM_ATTRIB | G_PART_PARM_GEOM |
+ G_PART_PARM_INDEX;
+ }
+ break;
case 'u':
if (!strcmp(verb, "undo")) {
ctlreq = G_PART_CTL_UNDO;
mparms |= G_PART_PARM_GEOM;
modifies = 0;
+ } else if (!strcmp(verb, "unset")) {
+ ctlreq = G_PART_CTL_UNSET;
+ mparms |= G_PART_PARM_ATTRIB | G_PART_PARM_GEOM |
+ G_PART_PARM_INDEX;
}
break;
}
@@ -1147,6 +1207,10 @@
ap = &req->arg[i];
parm = 0;
switch (ap->name[0]) {
+ case 'a':
+ if (!strcmp(ap->name, "attrib"))
+ parm = G_PART_PARM_ATTRIB;
+ break;
case 'b':
if (!strcmp(ap->name, "bootcode"))
parm = G_PART_PARM_BOOTCODE;
@@ -1215,6 +1279,9 @@
return;
}
switch (parm) {
+ case G_PART_PARM_ATTRIB:
+ error = g_part_parm_str(p, &gpp.gpp_attrib);
+ break;
case G_PART_PARM_BOOTCODE:
gpp.gpp_codeptr = p;
gpp.gpp_codesize = len;
@@ -1328,9 +1395,15 @@
case G_PART_CTL_RESIZE:
error = g_part_ctl_resize(req, &gpp);
break;
+ case G_PART_CTL_SET:
+ error = g_part_ctl_setunset(req, &gpp, 1);
+ break;
case G_PART_CTL_UNDO:
error = g_part_ctl_undo(req, &gpp);
break;
+ case G_PART_CTL_UNSET:
+ error = g_part_ctl_setunset(req, &gpp, 0);
+ break;
}
/* Implement automatic commit. */
==== //depot/projects/vimage-commit2/src/sys/geom/part/g_part.h#2 (text+ko) ====
@@ -1,5 +1,5 @@
/*-
- * Copyright (c) 2006, 2007 Marcel Moolenaar
+ * Copyright (c) 2006-2008 Marcel Moolenaar
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -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/geom/part/g_part.h,v 1.9 2008/04/13 19:54:54 marcel Exp $
+ * $FreeBSD: src/sys/geom/part/g_part.h,v 1.10 2008/06/18 01:13:34 marcel Exp $
*/
#ifndef _GEOM_PART_H_
@@ -136,6 +136,7 @@
#define G_PART_PARM_TYPE 0x0400
#define G_PART_PARM_VERSION 0x0800
#define G_PART_PARM_BOOTCODE 0x1000
+#define G_PART_PARM_ATTRIB 0x2000
struct g_part_parms {
unsigned int gpp_parms;
@@ -152,6 +153,7 @@
unsigned int gpp_version;
const void *gpp_codeptr;
unsigned int gpp_codesize;
+ const char *gpp_attrib;
};
void g_part_geometry_heads(off_t, u_int, off_t *, u_int *);
==== //depot/projects/vimage-commit2/src/sys/geom/part/g_part_if.m#2 (text+ko) ====
@@ -1,5 +1,5 @@
#-
-# Copyright (c) 2006, 2007 Marcel Moolenaar
+# Copyright (c) 2006-2008 Marcel Moolenaar
# All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
@@ -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/geom/part/g_part_if.m,v 1.3 2008/04/13 19:54:54 marcel Exp $
+# $FreeBSD: src/sys/geom/part/g_part_if.m,v 1.4 2008/06/18 01:13:34 marcel Exp $
#include <sys/param.h>
#include <sys/lock.h>
@@ -108,6 +108,14 @@
struct g_consumer *cp;
};
+# setunset() - set or unset partition entry attributes.
+METHOD int setunset {
+ struct g_part_table *table;
+ struct g_part_entry *entry;
+ const char *attrib;
+ unsigned int set;
+};
+
# type() - return a string representation of the partition type.
# Preferrably, the alias names.
METHOD const char * type {
==== //depot/projects/vimage-commit2/src/sys/geom/part/g_part_mbr.c#3 (text+ko) ====
@@ -1,5 +1,5 @@
/*-
- * Copyright (c) 2007 Marcel Moolenaar
+ * Copyright (c) 2007, 2008 Marcel Moolenaar
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -25,7 +25,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/geom/part/g_part_mbr.c,v 1.8 2008/06/12 05:56:03 marcel Exp $");
+__FBSDID("$FreeBSD: src/sys/geom/part/g_part_mbr.c,v 1.9 2008/06/18 01:13:34 marcel Exp $");
#include <sys/param.h>
#include <sys/bio.h>
@@ -71,6 +71,8 @@
char *, size_t);
static int g_part_mbr_probe(struct g_part_table *, struct g_consumer *);
static int g_part_mbr_read(struct g_part_table *, struct g_consumer *);
+static int g_part_mbr_setunset(struct g_part_table *, struct g_part_entry *,
+ const char *, unsigned int);
static const char *g_part_mbr_type(struct g_part_table *, struct g_part_entry *,
char *, size_t);
static int g_part_mbr_write(struct g_part_table *, struct g_consumer *);
@@ -86,6 +88,7 @@
KOBJMETHOD(g_part_name, g_part_mbr_name),
KOBJMETHOD(g_part_probe, g_part_mbr_probe),
KOBJMETHOD(g_part_read, g_part_mbr_read),
+ KOBJMETHOD(g_part_setunset, g_part_mbr_setunset),
KOBJMETHOD(g_part_type, g_part_mbr_type),
KOBJMETHOD(g_part_write, g_part_mbr_write),
{ 0, 0 }
@@ -262,6 +265,8 @@
/* confxml: partition entry information */
sbuf_printf(sb, "%s<rawtype>%u</rawtype>\n", indent,
entry->ent.dp_typ);
+ if (entry->ent.dp_flag & 0x80)
+ sbuf_printf(sb, "%s<attrib>active</attrib>\n", indent);
} else {
/* confxml: scheme information */
}
@@ -420,6 +425,43 @@
return (0);
}
+static int
+g_part_mbr_setunset(struct g_part_table *table, struct g_part_entry *baseentry,
+ const char *attrib, unsigned int set)
+{
+ struct g_part_entry *iter;
+ struct g_part_mbr_entry *entry;
+ int changed;
+
+ if (strcasecmp(attrib, "active") != 0)
+ return (EINVAL);
+
+ /* Only one entry can have the active attribute. */
+ LIST_FOREACH(iter, &table->gpt_entry, gpe_entry) {
+ if (iter->gpe_deleted)
+ continue;
+ changed = 0;
+ entry = (struct g_part_mbr_entry *)iter;
+ if (iter == baseentry) {
+ if (set && (entry->ent.dp_flag & 0x80) == 0) {
+ entry->ent.dp_flag |= 0x80;
+ changed = 1;
+ } else if (!set && (entry->ent.dp_flag & 0x80)) {
+ entry->ent.dp_flag &= ~0x80;
+ changed = 1;
+ }
+ } else {
+ if (set && (entry->ent.dp_flag & 0x80)) {
+ entry->ent.dp_flag &= ~0x80;
+ changed = 1;
+ }
+ }
+ if (changed && !iter->gpe_created)
+ iter->gpe_modified = 1;
+ }
+ return (0);
+}
+
static const char *
g_part_mbr_type(struct g_part_table *basetable, struct g_part_entry *baseentry,
char *buf, size_t bufsz)
==== //depot/projects/vimage-commit2/src/sys/kern/kern_conf.c#4 (text+ko) ====
@@ -25,7 +25,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/kern/kern_conf.c,v 1.217 2008/06/12 08:30:54 ed Exp $");
+__FBSDID("$FreeBSD: src/sys/kern/kern_conf.c,v 1.218 2008/06/16 17:34:59 kib Exp $");
#include <sys/param.h>
#include <sys/kernel.h>
@@ -115,7 +115,7 @@
struct cdev_priv *cdp;
mtx_assert(&devmtx, MA_OWNED);
- cdp = cdev->si_priv;
+ cdp = cdev2priv(cdev);
TAILQ_INSERT_HEAD(&cdevp_free_list, cdp, cdp_list);
}
@@ -187,7 +187,7 @@
dev_lock();
csw = dev->si_devsw;
if (csw != NULL) {
- cdp = dev->si_priv;
+ cdp = cdev2priv(dev);
if ((cdp->cdp_flags & CDP_SCHED_DTR) == 0)
dev->si_threadcount++;
else
@@ -208,7 +208,7 @@
dev_lock();
*devp = vp->v_rdev;
if (*devp != NULL) {
- cdp = (*devp)->si_priv;
+ cdp = cdev2priv(*devp);
if ((cdp->cdp_flags & CDP_SCHED_DTR) == 0) {
csw = (*devp)->si_devsw;
if (csw != NULL)
@@ -851,7 +851,7 @@
dev_unlock();
notify_destroy(dev);
mtx_lock(&cdevpriv_mtx);
- LIST_FOREACH_SAFE(p, &dev->si_priv->cdp_fdpriv, cdpd_list, p1) {
+ LIST_FOREACH_SAFE(p, &cdev2priv(dev)->cdp_fdpriv, cdpd_list, p1) {
devfs_destroy_cdevpriv(p);
mtx_lock(&cdevpriv_mtx);
}
@@ -1071,7 +1071,7 @@
KASSERT(dev->si_flags & SI_CLONELIST,
("Dev %p(%s) should be on clonelist", dev, dev->si_name));
dev->si_flags &= ~SI_CLONELIST;
- cp = dev->si_priv;
+ cp = cdev2priv(dev);
if (!(cp->cdp_flags & CDP_SCHED_DTR)) {
cp->cdp_flags |= CDP_SCHED_DTR;
KASSERT(dev->si_flags & SI_NAMED,
@@ -1125,7 +1125,7 @@
struct cdev_priv *cp;
mtx_assert(&devmtx, MA_OWNED);
- cp = dev->si_priv;
+ cp = cdev2priv(dev);
if (cp->cdp_flags & CDP_SCHED_DTR) {
dev_unlock();
return (0);
==== //depot/projects/vimage-commit2/src/sys/kern/kern_dtrace.c#2 (text+ko) ====
@@ -25,7 +25,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/kern/kern_dtrace.c,v 1.1 2008/05/18 19:43:52 jb Exp $");
+__FBSDID("$FreeBSD: src/sys/kern/kern_dtrace.c,v 1.2 2008/06/16 04:44:29 jb Exp $");
#include "opt_kdb.h"
@@ -106,15 +106,3 @@
}
SYSINIT(kdtrace, SI_SUB_KDTRACE, SI_ORDER_FIRST, init_dtrace, NULL);
-
-#ifndef KDB
-/*
- * This is a stub for the kernel debugger for the DTrace actions to call
- * when the kernel has been built without KDB.
- */
-void
-kdb_enter(const char *why, const char *msg)
-{
- printf("Cannot enter kernel debugger - No KDB in kernel.\n%s - %s\n", why, msg);
-}
-#endif
==== //depot/projects/vimage-commit2/src/sys/netinet/sctp_pcb.c#5 (text+ko) ====
@@ -31,7 +31,7 @@
/* $KAME: sctp_pcb.c,v 1.38 2005/03/06 16:04:18 itojun Exp $ */
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/netinet/sctp_pcb.c,v 1.69 2008/06/14 07:58:05 rrs Exp $");
+__FBSDID("$FreeBSD: src/sys/netinet/sctp_pcb.c,v 1.70 2008/06/15 12:31:23 rrs Exp $");
#include <netinet/sctp_os.h>
#include <sys/proc.h>
@@ -5330,6 +5330,7 @@
#if defined(SCTP_USE_THREAD_BASED_ITERATOR)
SCTP_BASE_INFO(iterator_running) = 0;
+ SCTP_BASE_INFO(threads_must_exit) = 0;
sctp_startup_iterator();
#endif
@@ -5357,6 +5358,11 @@
int i;
/* FIXME MT */
+ SCTP_BASE_INFO(threads_must_exit) = 1;
+#if defined(SCTP_USE_THREAD_BASED_ITERATOR)
+ /* Wake the thread up so it will exit now */
+ sctp_wakeup_iterator();
+#endif
/*
* free the vrf/ifn/ifa lists and hashes (be sure address monitor is
* destroyed first).
@@ -5428,6 +5434,16 @@
SCTP_ZONE_DESTROY(SCTP_BASE_INFO(ipi_zone_strmoq));
SCTP_ZONE_DESTROY(SCTP_BASE_INFO(ipi_zone_asconf));
SCTP_ZONE_DESTROY(SCTP_BASE_INFO(ipi_zone_asconf_ack));
+ /* Get rid of other stuff to */
+ if (SCTP_BASE_INFO(sctp_asochash) != NULL)
+ SCTP_HASH_FREE(SCTP_BASE_INFO(sctp_asochash), SCTP_BASE_INFO(hashasocmark));
+ if (SCTP_BASE_INFO(sctp_ephash) != NULL)
+ SCTP_HASH_FREE(SCTP_BASE_INFO(sctp_ephash), SCTP_BASE_INFO(hashmark));
+ if (SCTP_BASE_INFO(sctp_tcpephash) != NULL)
+ SCTP_HASH_FREE(SCTP_BASE_INFO(sctp_tcpephash), SCTP_BASE_INFO(hashtcpmark));
+ if (SCTP_BASE_INFO(sctp_restarthash) != NULL)
+ SCTP_HASH_FREE(SCTP_BASE_INFO(sctp_restarthash), SCTP_BASE_INFO(hashrestartmark));
+
}
==== //depot/projects/vimage-commit2/src/sys/netinet/sctp_pcb.h#3 (text+ko) ====
@@ -31,7 +31,7 @@
/* $KAME: sctp_pcb.h,v 1.21 2005/07/16 01:18:47 suz Exp $ */
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/netinet/sctp_pcb.h,v 1.35 2008/06/14 07:58:05 rrs Exp $");
+__FBSDID("$FreeBSD: src/sys/netinet/sctp_pcb.h,v 1.36 2008/06/15 12:31:23 rrs Exp $");
#ifndef __sctp_pcb_h__
#define __sctp_pcb_h__
@@ -177,7 +177,7 @@
struct sctpladdr addr_wq;
struct sctpiterators iteratorhead;
-
+ int threads_must_exit;
/* ep zone info */
sctp_zone_t ipi_zone_ep;
sctp_zone_t ipi_zone_asoc;
==== //depot/projects/vimage-commit2/src/sys/netinet/sctp_usrreq.c#5 (text+ko) ====
@@ -31,7 +31,7 @@
/* $KAME: sctp_usrreq.c,v 1.48 2005/03/07 23:26:08 itojun Exp $ */
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/netinet/sctp_usrreq.c,v 1.56 2008/06/14 07:58:05 rrs Exp $");
+__FBSDID("$FreeBSD: src/sys/netinet/sctp_usrreq.c,v 1.57 2008/06/15 12:31:23 rrs Exp $");
#include <netinet/sctp_os.h>
#include <sys/proc.h>
#include <netinet/sctp_pcb.h>
@@ -98,23 +98,6 @@
sctp_pcb_finish();
}
-/*
- * cleanup of the SCTP_BASE_INFO() structure.
- * Assumes that the SCTP_BASE_INFO() lock is held.
- */
-void
-sctp_pcbinfo_cleanup(void)
-{
- /* free the hash tables */
- if (SCTP_BASE_INFO(sctp_asochash) != NULL)
- SCTP_HASH_FREE(SCTP_BASE_INFO(sctp_asochash), SCTP_BASE_INFO(hashasocmark));
- if (SCTP_BASE_INFO(sctp_ephash) != NULL)
- SCTP_HASH_FREE(SCTP_BASE_INFO(sctp_ephash), SCTP_BASE_INFO(hashmark));
- if (SCTP_BASE_INFO(sctp_tcpephash) != NULL)
- SCTP_HASH_FREE(SCTP_BASE_INFO(sctp_tcpephash), SCTP_BASE_INFO(hashtcpmark));
- if (SCTP_BASE_INFO(sctp_restarthash) != NULL)
- SCTP_HASH_FREE(SCTP_BASE_INFO(sctp_restarthash), SCTP_BASE_INFO(hashrestartmark));
-}
void
==== //depot/projects/vimage-commit2/src/sys/netinet/sctp_var.h#3 (text+ko) ====
@@ -31,7 +31,7 @@
/* $KAME: sctp_var.h,v 1.24 2005/03/06 16:04:19 itojun Exp $ */
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/netinet/sctp_var.h,v 1.25 2008/06/14 07:58:05 rrs Exp $");
+__FBSDID("$FreeBSD: src/sys/netinet/sctp_var.h,v 1.26 2008/06/15 12:31:23 rrs Exp $");
#ifndef _NETINET_SCTP_VAR_H_
#define _NETINET_SCTP_VAR_H_
@@ -308,7 +308,6 @@
void sctp_finish(void);
-void sctp_pcbinfo_cleanup(void);
int sctp_flush(struct socket *, int);
int sctp_shutdown __P((struct socket *));
void sctp_notify
==== //depot/projects/vimage-commit2/src/sys/netinet/tcp_syncache.c#3 (text+ko) ====
@@ -31,7 +31,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/netinet/tcp_syncache.c,v 1.145 2008/05/09 23:02:58 julian Exp $");
+__FBSDID("$FreeBSD: src/sys/netinet/tcp_syncache.c,v 1.147 2008/06/16 20:08:22 ups Exp $");
#include "opt_inet.h"
#include "opt_inet6.h"
@@ -907,11 +907,14 @@
goto failed;
}
/*
- * The SEQ must match the received initial receive sequence
- * number + 1 (the SYN) because we didn't ACK any data that
- * may have come with the SYN.
+ * The SEQ must fall in the window starting a the received initial receive
+ * sequence number + 1 (the SYN).
*/
- if (th->th_seq != sc->sc_irs + 1 && !TOEPCB_ISSET(sc)) {
+
+ if ((SEQ_LEQ(th->th_seq, sc->sc_irs) ||
+ SEQ_GT(th->th_seq, sc->sc_irs + sc->sc_wnd )) &&
+ !TOEPCB_ISSET(sc))
+ {
if ((s = tcp_log_addrs(inc, th, NULL, NULL)))
log(LOG_DEBUG, "%s; %s: SEQ %u != IRS+1 %u, segment "
"rejected\n", s, __func__, th->th_seq, sc->sc_irs);
@@ -1616,7 +1619,7 @@
* The secret wasn't updated for the lifetime of a syncookie,
* so this SYN-ACK/ACK is either too old (replay) or totally bogus.
*/
- if (sch->sch_reseed < time_uptime) {
+ if (sch->sch_reseed + SYNCOOKIE_LIFETIME < time_uptime) {
return (NULL);
}
==== //depot/projects/vimage-commit2/src/sys/pci/if_rl.c#2 (text+ko) ====
@@ -31,7 +31,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/pci/if_rl.c,v 1.174 2008/04/10 01:06:05 yongari Exp $");
+__FBSDID("$FreeBSD: src/sys/pci/if_rl.c,v 1.175 2008/06/16 18:32:20 remko Exp $");
/*
* RealTek 8129/8139 PCI NIC driver
@@ -144,6 +144,8 @@
"RealTek 8129 10/100BaseTX" },
{ RT_VENDORID, RT_DEVICEID_8139, RL_8139,
"RealTek 8139 10/100BaseTX" },
+ { RT_VENDORID, RT_DEVICEID_8139D, RL_8139,
+ "RealTek 8139 10/100BaseTX" },
{ RT_VENDORID, RT_DEVICEID_8138, RL_8139,
"RealTek 8139 10/100BaseTX CardBus" },
{ RT_VENDORID, RT_DEVICEID_8100, RL_8139,
==== //depot/projects/vimage-commit2/src/sys/pci/if_rlreg.h#2 (text+ko) ====
@@ -29,7 +29,7 @@
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
* THE POSSIBILITY OF SUCH DAMAGE.
*
- * $FreeBSD: src/sys/pci/if_rlreg.h,v 1.74 2008/03/31 04:03:14 yongari Exp $
+ * $FreeBSD: src/sys/pci/if_rlreg.h,v 1.75 2008/06/16 18:32:20 remko Exp $
*/
/*
@@ -862,6 +862,7 @@
/*
* RealTek chip device IDs.
*/
+#define RT_DEVICEID_8139D 0x8039
#define RT_DEVICEID_8129 0x8129
#define RT_DEVICEID_8101E 0x8136
#define RT_DEVICEID_8138 0x8138
==== //depot/projects/vimage-commit2/src/sys/pci/nfsmb.c#2 (text+ko) ====
@@ -25,7 +25,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/pci/nfsmb.c,v 1.9 2008/06/06 18:29:56 jhb Exp $");
+__FBSDID("$FreeBSD: src/sys/pci/nfsmb.c,v 1.10 2008/06/18 20:39:56 joerg Exp $");
#include <sys/param.h>
#include <sys/bus.h>
@@ -64,6 +64,7 @@
#define NFSMB_DEVICEID_NF4_51_SMB 0x0264
#define NFSMB_DEVICEID_NF4_55_SMB 0x0368
#define NFSMB_DEVICEID_NF4_61_SMB 0x03eb
+#define NFSMB_DEVICEID_NF4_65_SMB 0x0446
/* PCI Configuration space registers */
#define NF2PCI_SMBASE_1 PCIR_BAR(4)
@@ -156,6 +157,7 @@
case NFSMB_DEVICEID_NF4_51_SMB:
case NFSMB_DEVICEID_NF4_55_SMB:
case NFSMB_DEVICEID_NF4_61_SMB:
+ case NFSMB_DEVICEID_NF4_65_SMB:
device_set_desc(dev, "nForce2/3/4 MCP SMBus Controller");
>>> TRUNCATED FOR MAIL (1000 lines) <<<
More information about the p4-projects
mailing list