PERFORCE change 117902 for review
Robert Watson
rwatson at FreeBSD.org
Wed Apr 11 15:02:49 UTC 2007
http://perforce.freebsd.org/chv.cgi?CH=117902
Change 117902 by rwatson at rwatson_zoo on 2007/04/11 15:02:38
Integrate TrustedBSD priv branch.
Affected files ...
.. //depot/projects/trustedbsd/priv/sys/amd64/conf/GENERIC#7 integrate
.. //depot/projects/trustedbsd/priv/sys/boot/forth/loader.conf#5 integrate
.. //depot/projects/trustedbsd/priv/sys/cam/scsi/scsi_sg.c#2 integrate
.. //depot/projects/trustedbsd/priv/sys/cam/scsi/scsi_sg.h#2 integrate
.. //depot/projects/trustedbsd/priv/sys/compat/linux/linux_ioctl.h#3 integrate
.. //depot/projects/trustedbsd/priv/sys/compat/opensolaris/kern/opensolaris_kmem.c#2 integrate
.. //depot/projects/trustedbsd/priv/sys/compat/opensolaris/kern/opensolaris_kobj.c#2 integrate
.. //depot/projects/trustedbsd/priv/sys/compat/opensolaris/kern/opensolaris_misc.c#1 branch
.. //depot/projects/trustedbsd/priv/sys/compat/opensolaris/kern/opensolaris_string.c#2 integrate
.. //depot/projects/trustedbsd/priv/sys/compat/opensolaris/sys/kmem.h#2 integrate
.. //depot/projects/trustedbsd/priv/sys/compat/opensolaris/sys/kobj.h#2 integrate
.. //depot/projects/trustedbsd/priv/sys/compat/opensolaris/sys/lock.h#1 branch
.. //depot/projects/trustedbsd/priv/sys/compat/opensolaris/sys/misc.h#1 branch
.. //depot/projects/trustedbsd/priv/sys/compat/opensolaris/sys/mutex.h#2 integrate
.. //depot/projects/trustedbsd/priv/sys/compat/opensolaris/sys/rwlock.h#2 integrate
.. //depot/projects/trustedbsd/priv/sys/compat/opensolaris/sys/string.h#2 integrate
.. //depot/projects/trustedbsd/priv/sys/conf/NOTES#11 integrate
.. //depot/projects/trustedbsd/priv/sys/conf/files#13 integrate
.. //depot/projects/trustedbsd/priv/sys/conf/files.ia64#3 integrate
.. //depot/projects/trustedbsd/priv/sys/contrib/dev/acpica/utmisc.c#3 integrate
.. //depot/projects/trustedbsd/priv/sys/contrib/opensolaris/uts/common/fs/zfs/arc.c#2 integrate
.. //depot/projects/trustedbsd/priv/sys/contrib/opensolaris/uts/common/fs/zfs/dmu_objset.c#2 integrate
.. //depot/projects/trustedbsd/priv/sys/contrib/opensolaris/uts/common/fs/zfs/dsl_dataset.c#2 integrate
.. //depot/projects/trustedbsd/priv/sys/contrib/opensolaris/uts/common/fs/zfs/dsl_dir.c#2 integrate
.. //depot/projects/trustedbsd/priv/sys/contrib/opensolaris/uts/common/fs/zfs/spa.c#2 integrate
.. //depot/projects/trustedbsd/priv/sys/contrib/opensolaris/uts/common/fs/zfs/spa_config.c#2 integrate
.. //depot/projects/trustedbsd/priv/sys/contrib/opensolaris/uts/common/fs/zfs/spa_misc.c#2 integrate
.. //depot/projects/trustedbsd/priv/sys/contrib/opensolaris/uts/common/fs/zfs/sys/dsl_dir.h#2 integrate
.. //depot/projects/trustedbsd/priv/sys/contrib/opensolaris/uts/common/fs/zfs/sys/zfs_context.h#2 integrate
.. //depot/projects/trustedbsd/priv/sys/contrib/opensolaris/uts/common/fs/zfs/zap.c#2 integrate
.. //depot/projects/trustedbsd/priv/sys/contrib/opensolaris/uts/common/fs/zfs/zfs_fm.c#2 integrate
.. //depot/projects/trustedbsd/priv/sys/contrib/opensolaris/uts/common/fs/zfs/zfs_vfsops.c#2 integrate
.. //depot/projects/trustedbsd/priv/sys/contrib/opensolaris/uts/common/fs/zfs/zfs_znode.c#2 integrate
.. //depot/projects/trustedbsd/priv/sys/contrib/opensolaris/uts/common/sys/fs/zfs.h#2 integrate
.. //depot/projects/trustedbsd/priv/sys/dev/ata/ata-all.h#4 integrate
.. //depot/projects/trustedbsd/priv/sys/dev/ata/ata-chipset.c#9 integrate
.. //depot/projects/trustedbsd/priv/sys/dev/ata/ata-dma.c#4 integrate
.. //depot/projects/trustedbsd/priv/sys/dev/ath/ah_osdep.c#2 integrate
.. //depot/projects/trustedbsd/priv/sys/dev/cxgb/cxgb_adapter.h#2 integrate
.. //depot/projects/trustedbsd/priv/sys/dev/cxgb/cxgb_lro.c#2 integrate
.. //depot/projects/trustedbsd/priv/sys/dev/cxgb/cxgb_osdep.h#2 integrate
.. //depot/projects/trustedbsd/priv/sys/dev/cxgb/cxgb_sge.c#2 integrate
.. //depot/projects/trustedbsd/priv/sys/dev/cxgb/sys/mvec.h#1 branch
.. //depot/projects/trustedbsd/priv/sys/dev/cxgb/sys/uipc_mvec.c#1 branch
.. //depot/projects/trustedbsd/priv/sys/dev/mii/brgphy.c#7 integrate
.. //depot/projects/trustedbsd/priv/sys/dev/mii/miidevs#6 integrate
.. //depot/projects/trustedbsd/priv/sys/dev/msk/if_msk.c#5 integrate
.. //depot/projects/trustedbsd/priv/sys/geom/eli/g_eli.c#6 integrate
.. //depot/projects/trustedbsd/priv/sys/i386/conf/GENERIC#7 integrate
.. //depot/projects/trustedbsd/priv/sys/ia64/conf/GENERIC#5 integrate
.. //depot/projects/trustedbsd/priv/sys/kern/kern_jail.c#18 integrate
.. //depot/projects/trustedbsd/priv/sys/kern/kern_mib.c#2 integrate
.. //depot/projects/trustedbsd/priv/sys/kern/uipc_mqueue.c#9 integrate
.. //depot/projects/trustedbsd/priv/sys/kern/vfs_mount.c#11 integrate
.. //depot/projects/trustedbsd/priv/sys/kern/vfs_subr.c#10 integrate
.. //depot/projects/trustedbsd/priv/sys/libkern/index.c#2 integrate
.. //depot/projects/trustedbsd/priv/sys/libkern/rindex.c#2 integrate
.. //depot/projects/trustedbsd/priv/sys/modules/Makefile#9 integrate
.. //depot/projects/trustedbsd/priv/sys/modules/cxgb/Makefile#2 integrate
.. //depot/projects/trustedbsd/priv/sys/modules/dpt/Makefile#2 integrate
.. //depot/projects/trustedbsd/priv/sys/modules/if_trunk/Makefile#1 branch
.. //depot/projects/trustedbsd/priv/sys/modules/libalias/libalias/Makefile#2 integrate
.. //depot/projects/trustedbsd/priv/sys/modules/zfs/Makefile#2 integrate
.. //depot/projects/trustedbsd/priv/sys/net/ieee8023ad_lacp.c#1 branch
.. //depot/projects/trustedbsd/priv/sys/net/ieee8023ad_lacp.h#1 branch
.. //depot/projects/trustedbsd/priv/sys/net/if.c#8 integrate
.. //depot/projects/trustedbsd/priv/sys/net/if_ethersubr.c#5 integrate
.. //depot/projects/trustedbsd/priv/sys/net/if_trunk.c#1 branch
.. //depot/projects/trustedbsd/priv/sys/net/if_trunk.h#1 branch
.. //depot/projects/trustedbsd/priv/sys/net/if_var.h#4 integrate
.. //depot/projects/trustedbsd/priv/sys/netinet/in_pcb.c#8 integrate
.. //depot/projects/trustedbsd/priv/sys/netinet/tcp_input.c#9 integrate
.. //depot/projects/trustedbsd/priv/sys/netinet/tcp_output.c#8 integrate
.. //depot/projects/trustedbsd/priv/sys/netinet/tcp_sack.c#3 integrate
.. //depot/projects/trustedbsd/priv/sys/netinet/tcp_subr.c#10 integrate
.. //depot/projects/trustedbsd/priv/sys/netinet/tcp_syncache.c#7 integrate
.. //depot/projects/trustedbsd/priv/sys/netinet/tcp_timer.c#4 integrate
.. //depot/projects/trustedbsd/priv/sys/netinet/tcp_timer.h#5 integrate
.. //depot/projects/trustedbsd/priv/sys/netinet/tcp_usrreq.c#7 integrate
.. //depot/projects/trustedbsd/priv/sys/netinet/tcp_var.h#6 integrate
.. //depot/projects/trustedbsd/priv/sys/netipsec/ipsec_osdep.h#5 integrate
.. //depot/projects/trustedbsd/priv/sys/pc98/conf/GENERIC#6 integrate
.. //depot/projects/trustedbsd/priv/sys/powerpc/conf/GENERIC#7 integrate
.. //depot/projects/trustedbsd/priv/sys/rpc/types.h#1 branch
.. //depot/projects/trustedbsd/priv/sys/sparc64/conf/GENERIC#6 integrate
.. //depot/projects/trustedbsd/priv/sys/sparc64/include/nexusvar.h#2 delete
.. //depot/projects/trustedbsd/priv/sys/sun4v/conf/GENERIC#5 integrate
.. //depot/projects/trustedbsd/priv/sys/sys/hash.h#2 integrate
.. //depot/projects/trustedbsd/priv/sys/sys/kernel.h#4 integrate
.. //depot/projects/trustedbsd/priv/sys/sys/libkern.h#3 integrate
.. //depot/projects/trustedbsd/priv/sys/sys/mutex.h#4 integrate
.. //depot/projects/trustedbsd/priv/sys/sys/param.h#9 integrate
.. //depot/projects/trustedbsd/priv/sys/sys/priv.h#13 integrate
.. //depot/projects/trustedbsd/priv/sys/sys/sysctl.h#4 integrate
.. //depot/projects/trustedbsd/priv/sys/sys/systm.h#11 integrate
.. //depot/projects/trustedbsd/priv/sys/ufs/ffs/ffs_snapshot.c#5 integrate
.. //depot/projects/trustedbsd/priv/sys/ufs/ffs/ffs_softdep.c#6 integrate
.. //depot/projects/trustedbsd/priv/sys/vm/phys_pager.c#4 integrate
Differences ...
==== //depot/projects/trustedbsd/priv/sys/amd64/conf/GENERIC#7 (text+ko) ====
@@ -16,7 +16,7 @@
# If you are in doubt as to the purpose or necessity of a line, check first
# in NOTES.
#
-# $FreeBSD: src/sys/amd64/conf/GENERIC,v 1.473 2007/02/09 19:03:17 brooks Exp $
+# $FreeBSD: src/sys/amd64/conf/GENERIC,v 1.475 2007/04/10 21:40:12 pjd Exp $
cpu HAMMER
ident GENERIC
@@ -34,6 +34,7 @@
options SOFTUPDATES # Enable FFS soft updates support
options UFS_ACL # Support for access control lists
options UFS_DIRHASH # Improve performance on big directories
+options UFS_GJOURNAL # Enable gjournal-based UFS journaling
options MD_ROOT # MD is a potential root device
options NFSCLIENT # Network Filesystem Client
options NFSSERVER # Network Filesystem Server
==== //depot/projects/trustedbsd/priv/sys/boot/forth/loader.conf#5 (text+ko) ====
@@ -6,7 +6,7 @@
#
# All arguments must be in double quotes.
#
-# $FreeBSD: src/sys/boot/forth/loader.conf,v 1.118 2007/02/04 06:35:10 imp Exp $
+# $FreeBSD: src/sys/boot/forth/loader.conf,v 1.120 2007/04/09 22:09:09 pjd Exp $
##############################################################
### Basic configuration options ############################
@@ -138,6 +138,7 @@
#umapfs_load="NO" # User-id map filesystem
unionfs_load="NO" # Union filesystem
xfs_load="NO" # XFS
+zfs_load="NO" # ZFS
# Related stuff
@@ -418,3 +419,10 @@
#module_after="cmd" # executes "cmd" after loading the module
#module_error="cmd" # executes "cmd" if load fails
+##############################################################
+### Always try to load ZFS pool cache file #################
+##############################################################
+
+zpool_cache_load="YES"
+zpool_cache_type="/boot/zfs/zpool.cache"
+zpool_cache_name="/boot/zfs/zpool.cache"
==== //depot/projects/trustedbsd/priv/sys/cam/scsi/scsi_sg.c#2 (text+ko) ====
@@ -30,7 +30,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/cam/scsi/scsi_sg.c,v 1.1 2007/04/07 19:40:57 scottl Exp $");
+__FBSDID("$FreeBSD: src/sys/cam/scsi/scsi_sg.c,v 1.4 2007/04/10 20:03:42 scottl Exp $");
#include <sys/param.h>
#include <sys/systm.h>
@@ -71,8 +71,8 @@
} sg_state;
typedef enum {
+ SG_RDWR_FREE,
SG_RDWR_INPROG,
- SG_RDWR_WAITING,
SG_RDWR_DONE
} sg_rdwr_state;
@@ -100,11 +100,13 @@
struct sg_softc {
sg_state state;
sg_flags flags;
- uint8_t pd_type;
struct devstat *device_stats;
TAILQ_HEAD(, sg_rdwr) rdwr_done;
struct cdev *dev;
struct cdev *devalias;
+ int sg_timeout;
+ int sg_user_timeout;
+ uint8_t pd_type;
union ccb saved_ccb;
};
@@ -289,15 +291,16 @@
return (CAM_REQ_CMP_ERR);
}
- softc = (struct sg_softc *)malloc(sizeof(*softc), M_DEVBUF, M_NOWAIT);
+ softc = malloc(sizeof(*softc), M_DEVBUF, M_ZERO | M_NOWAIT);
if (softc == NULL) {
printf("sgregister: Unable to allocate softc\n");
return (CAM_REQ_CMP_ERR);
}
- bzero(softc, sizeof(*softc));
softc->state = SG_STATE_NORMAL;
softc->pd_type = SID_TYPE(&cgd->inq_data);
+ softc->sg_timeout = SG_DEFAULT_TIMEOUT / SG_DEFAULT_HZ * hz;
+ softc->sg_user_timeout = SG_DEFAULT_TIMEOUT;
TAILQ_INIT(&softc->rdwr_done);
periph->softc = softc;
@@ -388,8 +391,7 @@
rdwr = done_ccb->ccb_h.ccb_rdwr;
state = rdwr->state;
rdwr->state = SG_RDWR_DONE;
- if (state == SG_RDWR_WAITING)
- wakeup(rdwr);
+ wakeup(rdwr);
break;
}
default:
@@ -497,16 +499,22 @@
error = copyout(&sg_version, arg, sizeof(sg_version));
break;
case SG_SET_TIMEOUT:
- case LINUX_SG_SET_TIMEOUT:
+ case LINUX_SG_SET_TIMEOUT: {
+ u_int user_timeout;
+
+ error = copyin(arg, &user_timeout, sizeof(u_int));
+ if (error == 0) {
+ softc->sg_user_timeout = user_timeout;
+ softc->sg_timeout = user_timeout / SG_DEFAULT_HZ * hz;
+ }
break;
+ }
case SG_GET_TIMEOUT:
case LINUX_SG_GET_TIMEOUT:
/*
- * XXX This ioctl is highly brain damaged because it requires
- * that the value be returned in the syscall return value.
- * The linuxolator seems to have a hard time with this,
- * so just return 0 and hope that apps can cope.
+ * The value is returned directly to the syscall.
*/
+ td->td_retval[0] = softc->sg_user_timeout;
error = 0;
break;
case SG_IO:
@@ -679,7 +687,7 @@
periph = dev->si_drv1;
sc = periph->softc;
- rdwr = malloc(sizeof(*rdwr), M_DEVBUF, M_WAITOK);
+ rdwr = malloc(sizeof(*rdwr), M_DEVBUF, M_WAITOK | M_ZERO);
hdr = &rdwr->hdr.hdr;
/* Copy in the header block and sanity check it */
@@ -728,13 +736,13 @@
*/
buf_len = uio->uio_resid;
if (buf_len != 0) {
- buf = malloc(buf_len, M_DEVBUF, M_WAITOK);
+ buf = malloc(buf_len, M_DEVBUF, M_WAITOK | M_ZERO);
error = uiomove(buf, buf_len, uio);
if (error)
goto out_buf;
dir = CAM_DIR_OUT;
} else if (hdr->reply_len != 0) {
- buf = malloc(hdr->reply_len, M_DEVBUF, M_WAITOK);
+ buf = malloc(hdr->reply_len, M_DEVBUF, M_WAITOK | M_ZERO);
buf_len = hdr->reply_len;
dir = CAM_DIR_IN;
} else {
@@ -752,7 +760,7 @@
buf_len,
SG_MAX_SENSE,
cdb_len,
- 60*hz);
+ sc->sg_timeout);
/*
* Send off the command and hope that it works. This path does not
@@ -809,7 +817,6 @@
break;
}
if ((rdwr == NULL) || (rdwr->state != SG_RDWR_DONE)) {
- rdwr->state = SG_RDWR_WAITING;
if (tsleep(rdwr, PCATCH, "sgread", 0) == ERESTART)
return (EAGAIN);
goto search;
==== //depot/projects/trustedbsd/priv/sys/cam/scsi/scsi_sg.h#2 (text+ko) ====
@@ -1,7 +1,7 @@
/*
* Structures and definitions for SCSI commands to the SG passthrough device.
*
- * $FreeBSD: src/sys/cam/scsi/scsi_sg.h,v 1.1 2007/04/07 19:40:57 scottl Exp $
+ * $FreeBSD: src/sys/cam/scsi/scsi_sg.h,v 1.2 2007/04/10 20:03:42 scottl Exp $
*/
#ifndef _SCSI_SG_H
@@ -136,4 +136,9 @@
#define DRIVER_MASK 0x0f
#define SUGGEST_MASK 0xf0
+/* Other definitions */
+/* HZ isn't always available, so simulate it */
+#define SG_DEFAULT_HZ 1000
+#define SG_DEFAULT_TIMEOUT (60*SG_DEFAULT_HZ)
+
#endif /* !_SCSI_SG_H */
==== //depot/projects/trustedbsd/priv/sys/compat/linux/linux_ioctl.h#3 (text+ko) ====
@@ -25,7 +25,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/compat/linux/linux_ioctl.h,v 1.25 2007/04/07 19:40:58 scottl Exp $
+ * $FreeBSD: src/sys/compat/linux/linux_ioctl.h,v 1.26 2007/04/10 21:37:37 scottl Exp $
*/
#ifndef _LINUX_IOCTL_H_
@@ -134,34 +134,34 @@
/*
* SG
*/
-#define LINUX_SG_SET_TIMEOUT 0x2201
-#define LINUX_SG_GET_TIMEOUT 0x2202
-#define LINUX_SG_EMULATED_HOST 0x2203
-#define LINUX_SG_SET_TRANSFORM 0x2204
-#define LINUX_SG_GET_TRANSFORM 0x2205
-#define LINUX_SG_GET_COMMAND_Q 0x2270
-#define LINUX_SG_SET_COMMAND_Q 0x2271
-#define LINUX_SG_SET_RESERVED_SIZE 0x2275
-#define LINUX_SG_GET_RESERVED_SIZE 0x2272
-#define LINUX_SG_GET_SCSI_ID 0x2276
-#define LINUX_SG_SET_FORCE_LOW_DMA 0x2279
-#define LINUX_SG_GET_LOW_DMA 0x227a
-#define LINUX_SG_SET_FORCE_PACK_ID 0x227b
-#define LINUX_SG_GET_PACK_ID 0x227c
-#define LINUX_SG_GET_NUM_WAITING 0x227d
-#define LINUX_SG_SET_DEBUG 0x227e
-#define LINUX_SG_GET_SG_TABLESIZE 0x227f
-#define LINUX_SG_GET_VERSION_NUM 0x2282
-#define LINUX_SG_NEXT_CMD_LEN 0x2283
-#define LINUX_SG_SCSI_RESET 0x2284
-#define LINUX_SG_IO 0x2285
-#define LINUX_SG_GET_REQUEST_TABLE 0x2286
-#define LINUX_SG_SET_KEEP_ORPHAN 0x2287
-#define LINUX_SG_GET_KEEP_ORPHAN 0x2288
-#define LINUX_SG_GET_ACCESS_COUNT 0x2289
+#define LINUX_SG_SET_TIMEOUT 0x2201
+#define LINUX_SG_GET_TIMEOUT 0x2202
+#define LINUX_SG_EMULATED_HOST 0x2203
+#define LINUX_SG_SET_TRANSFORM 0x2204
+#define LINUX_SG_GET_TRANSFORM 0x2205
+#define LINUX_SG_GET_COMMAND_Q 0x2270
+#define LINUX_SG_SET_COMMAND_Q 0x2271
+#define LINUX_SG_SET_RESERVED_SIZE 0x2275
+#define LINUX_SG_GET_RESERVED_SIZE 0x2272
+#define LINUX_SG_GET_SCSI_ID 0x2276
+#define LINUX_SG_SET_FORCE_LOW_DMA 0x2279
+#define LINUX_SG_GET_LOW_DMA 0x227a
+#define LINUX_SG_SET_FORCE_PACK_ID 0x227b
+#define LINUX_SG_GET_PACK_ID 0x227c
+#define LINUX_SG_GET_NUM_WAITING 0x227d
+#define LINUX_SG_SET_DEBUG 0x227e
+#define LINUX_SG_GET_SG_TABLESIZE 0x227f
+#define LINUX_SG_GET_VERSION_NUM 0x2282
+#define LINUX_SG_NEXT_CMD_LEN 0x2283
+#define LINUX_SG_SCSI_RESET 0x2284
+#define LINUX_SG_IO 0x2285
+#define LINUX_SG_GET_REQUEST_TABLE 0x2286
+#define LINUX_SG_SET_KEEP_ORPHAN 0x2287
+#define LINUX_SG_GET_KEEP_ORPHAN 0x2288
+#define LINUX_SG_GET_ACCESS_COUNT 0x2289
-#define LINUX_IOCTL_SG_MIN 0x2200
-#define LINUX_IOCTL_SG_MAX 0x22ff
+#define LINUX_IOCTL_SG_MIN 0x2200
+#define LINUX_IOCTL_SG_MAX 0x22ff
/*
* VFAT
==== //depot/projects/trustedbsd/priv/sys/compat/opensolaris/kern/opensolaris_kmem.c#2 (text+ko) ====
@@ -25,18 +25,25 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/compat/opensolaris/kern/opensolaris_kmem.c,v 1.1 2007/04/06 01:09:06 pjd Exp $");
+__FBSDID("$FreeBSD: src/sys/compat/opensolaris/kern/opensolaris_kmem.c,v 1.2 2007/04/10 02:35:56 pjd Exp $");
#include <sys/param.h>
#include <sys/kernel.h>
#include <sys/systm.h>
#include <sys/malloc.h>
-#include <vm/uma.h>
#include <sys/kmem.h>
#include <sys/debug.h>
#include <sys/mutex.h>
+
+#include <vm/vm_page.h>
+#include <vm/vm_object.h>
+#include <vm/vm_kern.h>
+#include <vm/vm_map.h>
+
+#ifdef KMEM_DEBUG
#include <sys/queue.h>
#include <sys/stack.h>
+#endif
#ifdef _KERNEL
static MALLOC_DEFINE(M_SOLARIS, "solaris", "Solaris");
@@ -82,12 +89,6 @@
return (p);
}
-void *
-kmem_zalloc(size_t size, int kmflags)
-{
- return (kmem_alloc(size, kmflags | M_ZERO));
-}
-
void
zfs_kmem_free(void *buf, size_t size __unused)
{
@@ -107,6 +108,20 @@
free(buf, M_SOLARIS);
}
+u_long
+kmem_size(void)
+{
+
+ return ((u_long)vm_kmem_size);
+}
+
+u_long
+kmem_used(void)
+{
+
+ return ((u_long)kmem_map->size);
+}
+
static int
kmem_std_constructor(void *mem, int size __unused, void *private, int flags)
{
==== //depot/projects/trustedbsd/priv/sys/compat/opensolaris/kern/opensolaris_kobj.c#2 (text+ko) ====
@@ -25,17 +25,18 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/compat/opensolaris/kern/opensolaris_kobj.c,v 1.1 2007/04/06 01:09:06 pjd Exp $");
+__FBSDID("$FreeBSD: src/sys/compat/opensolaris/kern/opensolaris_kobj.c,v 1.2 2007/04/08 23:57:08 pjd Exp $");
#include <sys/types.h>
#include <sys/systm.h>
#include <sys/kernel.h>
+#include <sys/systm.h>
#include <sys/kthread.h>
#include <sys/namei.h>
#include <sys/proc.h>
#include <sys/filedesc.h>
-#include <sys/vnode.h>
#include <sys/fcntl.h>
+#include <sys/linker.h>
#include <sys/kobj.h>
void
@@ -62,8 +63,8 @@
return (p);
}
-struct _buf *
-kobj_open_file(const char *file)
+static void *
+kobj_open_file_vnode(const char *file)
{
struct thread *td = curthread;
struct nameidata nd;
@@ -79,16 +80,45 @@
error = vn_open_cred(&nd, &flags, 0, td->td_ucred, -1);
NDFREE(&nd, NDF_ONLY_PNBUF);
if (error != 0)
- return ((struct _buf *)-1);
+ return (NULL);
/* We just unlock so we hold a reference. */
VOP_UNLOCK(nd.ni_vp, 0, td);
- return ((struct _buf *)nd.ni_vp);
+ return (nd.ni_vp);
+}
+
+static void *
+kobj_open_file_loader(const char *file)
+{
+
+ return (preload_search_by_name(file));
+}
+
+struct _buf *
+kobj_open_file(const char *file)
+{
+ struct _buf *out;
+
+ out = kmem_alloc(sizeof(*out), KM_SLEEP);
+ out->mounted = root_mounted();
+ /*
+ * If root is already mounted we read file using file system,
+ * if not, we use loader.
+ */
+ if (out->mounted)
+ out->ptr = kobj_open_file_vnode(file);
+ else
+ out->ptr = kobj_open_file_loader(file);
+ if (out->ptr == NULL) {
+ kmem_free(out, sizeof(*out));
+ return ((struct _buf *)-1);
+ }
+ return (out);
}
-int
-kobj_get_filesize(struct _buf *file, uint64_t *size)
+static int
+kobj_get_filesize_vnode(struct _buf *file, uint64_t *size)
{
- struct vnode *vp = (struct vnode *)file;
+ struct vnode *vp = file->ptr;
struct thread *td = curthread;
struct vattr va;
int error;
@@ -101,10 +131,32 @@
return (error);
}
+static int
+kobj_get_filesize_loader(struct _buf *file, uint64_t *size)
+{
+ void *ptr;
+
+ ptr = preload_search_info(file->ptr, MODINFO_SIZE);
+ if (ptr == NULL)
+ return (ENOENT);
+ *size = (uint64_t)*(size_t *)ptr;
+ return (0);
+}
+
+int
+kobj_get_filesize(struct _buf *file, uint64_t *size)
+{
+
+ if (file->mounted)
+ return (kobj_get_filesize_vnode(file, size));
+ else
+ return (kobj_get_filesize_loader(file, size));
+}
+
int
-kobj_read_file(struct _buf *file, char *buf, unsigned size, unsigned off)
+kobj_read_file_vnode(struct _buf *file, char *buf, unsigned size, unsigned off)
{
- struct vnode *vp = (struct vnode *)file;
+ struct vnode *vp = file->ptr;
struct thread *td = curthread;
struct uio auio;
struct iovec aiov;
@@ -130,13 +182,39 @@
return (error != 0 ? -1 : size - auio.uio_resid);
}
+int
+kobj_read_file_loader(struct _buf *file, char *buf, unsigned size, unsigned off)
+{
+ char *ptr;
+
+ ptr = preload_search_info(file->ptr, MODINFO_ADDR);
+ if (ptr == NULL)
+ return (ENOENT);
+ ptr = *(void **)ptr;
+ bcopy(ptr + off, buf, size);
+ return (0);
+}
+
+int
+kobj_read_file(struct _buf *file, char *buf, unsigned size, unsigned off)
+{
+
+ if (file->mounted)
+ return (kobj_read_file_vnode(file, buf, size, off));
+ else
+ return (kobj_read_file_loader(file, buf, size, off));
+}
+
void
kobj_close_file(struct _buf *file)
{
- struct vnode *vp = (struct vnode *)file;
- struct thread *td = curthread;
- int flags;
+
+ if (file->mounted) {
+ struct vnode *vp = file->ptr;
+ struct thread *td = curthread;
+ int flags = FREAD;
- flags = FREAD;
- vn_close(vp, flags, td->td_ucred, td);
+ vn_close(vp, flags, td->td_ucred, td);
+ }
+ kmem_free(file, sizeof(*file));
}
==== //depot/projects/trustedbsd/priv/sys/compat/opensolaris/kern/opensolaris_string.c#2 (text+ko) ====
@@ -32,37 +32,6 @@
(((c) >= 'a' && (c) <= 'z') || ((c) >= 'A' && (c) <= 'Z'))
char *
-strchr(const char *s, int c)
-{
- char ch;
-
- ch = c;
- for (;; ++s) {
- if (*s == ch)
- return ((char *)s);
- if (*s == '\0')
- return (NULL);
- }
- /* NOTREACHED */
-}
-
-char *
-strrchr(const char *s, int c)
-{
- char *save;
- char ch;
-
- ch = c;
- for (save = NULL;; ++s) {
- if (*s == ch)
- save = (char *)s;
- if (*s == '\0')
- return (save);
- }
- /* NOTREACHED */
-}
-
-char *
strpbrk(const char *s, const char *b)
{
const char *p;
==== //depot/projects/trustedbsd/priv/sys/compat/opensolaris/sys/kmem.h#2 (text+ko) ====
@@ -23,7 +23,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $FreeBSD: src/sys/compat/opensolaris/sys/kmem.h,v 1.1 2007/04/06 01:09:06 pjd Exp $
+ * $FreeBSD: src/sys/compat/opensolaris/sys/kmem.h,v 1.2 2007/04/10 02:35:56 pjd Exp $
*/
#ifndef _OPENSOLARIS_SYS_KMEM_H_
@@ -32,6 +32,7 @@
#include <sys/param.h>
#include <sys/proc.h>
#include <sys/malloc.h>
+
#include <vm/uma.h>
#include <vm/vm.h>
#include <vm/vm_extern.h>
@@ -55,8 +56,9 @@
} kmem_cache_t;
void *zfs_kmem_alloc(size_t size, int kmflags);
-void *kmem_zalloc(size_t size, int kmflags);
void zfs_kmem_free(void *buf, size_t size);
+u_long kmem_size(void);
+u_long kmem_used(void);
kmem_cache_t *kmem_cache_create(char *name, size_t bufsize, size_t align,
int (*constructor)(void *, void *, int), void (*destructor)(void *, void *),
void (*reclaim)(void *) __unused, void *private, vmem_t *vmp, int cflags);
@@ -69,6 +71,7 @@
void *calloc(size_t n, size_t s);
#define kmem_alloc(size, kmflags) zfs_kmem_alloc((size), (kmflags))
+#define kmem_zalloc(size, kmflags) zfs_kmem_alloc((size), (kmflags) | M_ZERO)
#define kmem_free(buf, size) zfs_kmem_free((buf), (size))
#endif /* _OPENSOLARIS_SYS_KMEM_H_ */
==== //depot/projects/trustedbsd/priv/sys/compat/opensolaris/sys/kobj.h#2 (text+ko) ====
@@ -23,7 +23,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $FreeBSD: src/sys/compat/opensolaris/sys/kobj.h,v 1.1 2007/04/06 01:09:06 pjd Exp $
+ * $FreeBSD: src/sys/compat/opensolaris/sys/kobj.h,v 1.2 2007/04/08 23:57:08 pjd Exp $
*/
#ifndef _OPENSOLARIS_SYS_KOBJ_H_
@@ -31,6 +31,13 @@
#include <sys/types.h>
#include <sys/kmem.h>
+#include_next <sys/kobj.h>
+#ifdef AT_UID
+#undef AT_UID
+#endif
+#ifdef AT_GID
+#undef AT_GID
+#endif
#include <sys/vnode.h>
#define KM_NOWAIT 0x01
@@ -41,7 +48,8 @@
void *kobj_zalloc(size_t size, int flag);
struct _buf {
- void *dummy;
+ void *ptr;
+ int mounted;
};
struct _buf *kobj_open_file(const char *path);
==== //depot/projects/trustedbsd/priv/sys/compat/opensolaris/sys/mutex.h#2 (text+ko) ====
@@ -23,7 +23,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $FreeBSD: src/sys/compat/opensolaris/sys/mutex.h,v 1.1 2007/04/06 01:09:06 pjd Exp $
+ * $FreeBSD: src/sys/compat/opensolaris/sys/mutex.h,v 1.2 2007/04/09 01:05:31 pjd Exp $
*/
#ifndef _OPENSOLARIS_SYS_MUTEX_H_
@@ -48,6 +48,9 @@
#define mutex_init(lock, desc, type, arg) do { \
ASSERT((type) == MUTEX_DEFAULT); \
+ KASSERT(((lock)->lock_object.lo_flags & LO_ALLMASK) != \
+ LO_EXPECTED, ("lock %s already initialized", #lock)); \
+ bzero((lock), sizeof(struct sx)); \
sx_init_flags((lock), "zfs:" #lock, SX_DUPOK); \
} while (0)
#define mutex_destroy(lock) sx_destroy(lock)
==== //depot/projects/trustedbsd/priv/sys/compat/opensolaris/sys/rwlock.h#2 (text+ko) ====
@@ -23,7 +23,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $FreeBSD: src/sys/compat/opensolaris/sys/rwlock.h,v 1.1 2007/04/06 01:09:06 pjd Exp $
+ * $FreeBSD: src/sys/compat/opensolaris/sys/rwlock.h,v 1.2 2007/04/09 01:05:31 pjd Exp $
*/
#ifndef _OPENSOLARIS_SYS_RWLOCK_H_
@@ -53,8 +53,12 @@
#define RW_LOCK_HELD(x) (rw_lock_held((x)))
#define RW_ISWRITER(x) (rw_iswriter(x))
-#define rw_init(lock, desc, type, arg) \
- sx_init_flags((lock), "zfs:" #lock, SX_DUPOK)
+#define rw_init(lock, desc, type, arg) do { \
+ KASSERT(((lock)->lock_object.lo_flags & LO_ALLMASK) != \
+ LO_EXPECTED, ("lock %s already initialized", #lock)); \
+ bzero((lock), sizeof(struct sx)); \
+ sx_init_flags((lock), "zfs:" #lock, SX_DUPOK); \
+} while (0)
#define rw_destroy(lock) sx_destroy(lock)
#define rw_enter(lock, how) do { \
if ((how) == RW_READER) \
==== //depot/projects/trustedbsd/priv/sys/compat/opensolaris/sys/string.h#2 (text+ko) ====
@@ -23,14 +23,14 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $FreeBSD: src/sys/compat/opensolaris/sys/string.h,v 1.1 2007/04/06 01:09:06 pjd Exp $
+ * $FreeBSD: src/sys/compat/opensolaris/sys/string.h,v 1.2 2007/04/10 21:42:12 wkoszek Exp $
*/
#ifndef _OPENSOLARIS_SYS_STRING_H_
#define _OPENSOLARIS_SYS_STRING_H_
-char *strchr(const char *, int);
-char *strrchr(const char *p, int c);
+#include <sys/libkern.h>
+
char *strpbrk(const char *, const char *);
void strident_canon(char *s, size_t n);
==== //depot/projects/trustedbsd/priv/sys/conf/NOTES#11 (text+ko) ====
@@ -1,4 +1,4 @@
-# $FreeBSD: src/sys/conf/NOTES,v 1.1419 2007/04/07 19:40:57 scottl Exp $
+# $FreeBSD: src/sys/conf/NOTES,v 1.1421 2007/04/10 03:09:38 thompsa Exp $
#
# NOTES -- Lines that can be cut/pasted into kernel and hints configs.
#
@@ -813,6 +813,7 @@
options PPP_BSDCOMP #PPP BSD-compress support
options PPP_DEFLATE #PPP zlib/deflate/gzip support
options PPP_FILTER #enable bpf filtering (needs bpf)
+device trunk #Trunk aggregation interface
device ef # Multiple ethernet frames support
options ETHER_II # enable Ethernet_II frame
==== //depot/projects/trustedbsd/priv/sys/conf/files#13 (text+ko) ====
@@ -1,4 +1,4 @@
-# $FreeBSD: src/sys/conf/files,v 1.1191 2007/04/07 19:40:57 scottl Exp $
+# $FreeBSD: src/sys/conf/files,v 1.1195 2007/04/10 00:35:31 thompsa Exp $
#
# The long compile-with and dependency lines are required because of
# limitations in config: backslash-newline doesn't work in strings, and
@@ -520,6 +520,7 @@
dev/cxgb/common/cxgb_mv88e1xxx.c optional cxgb pci
dev/cxgb/common/cxgb_xgmac.c optional cxgb pci
dev/cxgb/common/cxgb_t3_hw.c optional cxgb pci
+dev/cxgb/sys/uipc_mvec.c optional cxgb pci
dev/cy/cy.c optional cy
dev/cy/cy_isa.c optional cy isa
dev/cy/cy_pci.c optional cy pci
@@ -1526,6 +1527,7 @@
net/bpf_filter.c optional bpf | netgraph_bpf
net/bridgestp.c optional if_bridge
net/bsd_comp.c optional ppp_bsdcomp
+net/ieee8023ad_lacp.c optional trunk
net/if.c standard
net/if_arcsubr.c optional arcnet
net/if_atmsubr.c optional atm
@@ -1552,6 +1554,7 @@
net/if_stf.c optional stf
net/if_tun.c optional tun
net/if_tap.c optional tap
+net/if_trunk.c optional trunk
net/if_vlan.c optional vlan
net/netisr.c standard
net/ppp_deflate.c optional ppp_deflate
@@ -1774,19 +1777,19 @@
netinet/ip_options.c optional inet
netinet/ip_output.c optional inet
netinet/raw_ip.c optional inet
-netinet/sctp_usrreq.c optional inet inet6 sctp
-netinet/sctp_pcb.c optional inet inet6 sctp
-netinet/sctputil.c optional inet inet6 sctp
+netinet/sctp_asconf.c optional inet inet6 sctp
+netinet/sctp_auth.c optional inet inet6 sctp
netinet/sctp_bsd_addr.c optional inet inet6 sctp
-netinet/sctp_timer.c optional inet inet6 sctp
+netinet/sctp_crc32.c optional inet inet6 sctp
+netinet/sctp_indata.c optional inet inet6 sctp
netinet/sctp_input.c optional inet inet6 sctp
netinet/sctp_output.c optional inet inet6 sctp
-netinet/sctp_indata.c optional inet inet6 sctp
-netinet/sctp_asconf.c optional inet inet6 sctp
+netinet/sctp_pcb.c optional inet inet6 sctp
netinet/sctp_peeloff.c optional inet inet6 sctp
-netinet/sctp_crc32.c optional inet inet6 sctp
-netinet/sctp_auth.c optional inet inet6 sctp
netinet/sctp_sysctl.c optional inet inet6 sctp
+netinet/sctp_timer.c optional inet inet6 sctp
+netinet/sctp_usrreq.c optional inet inet6 sctp
+netinet/sctputil.c optional inet inet6 sctp
netinet/tcp_debug.c optional tcpdebug
netinet/tcp_hostcache.c optional inet
netinet/tcp_input.c optional inet
@@ -1800,7 +1803,6 @@
netinet/libalias/alias.c optional libalias
netinet/libalias/alias_db.c optional libalias
netinet/libalias/alias_mod.c optional libalias
-netinet/libalias/alias_old.c optional libalias
netinet/libalias/alias_proxy.c optional libalias
netinet/libalias/alias_util.c optional libalias
netinet6/ah_aesxcbcmac.c optional ipsec
==== //depot/projects/trustedbsd/priv/sys/conf/files.ia64#3 (text+ko) ====
@@ -1,7 +1,7 @@
# This file tells config what files go into building a kernel,
# files marked standard are always included.
#
-# $FreeBSD: src/sys/conf/files.ia64,v 1.90 2006/10/23 13:23:12 ru Exp $
+# $FreeBSD: src/sys/conf/files.ia64,v 1.91 2007/04/09 14:02:18 kan Exp $
#
# The long compile-with and dependency lines are required because of
# limitations in config: backslash-newline doesn't work in strings, and
@@ -128,3 +128,4 @@
libkern/ia64/__umodsi3.S standard
libkern/ia64/bswap16.S standard
libkern/ia64/bswap32.S standard
+libkern/memset.c standard
==== //depot/projects/trustedbsd/priv/sys/contrib/dev/acpica/utmisc.c#3 (text+ko) ====
@@ -1295,6 +1295,11 @@
{
va_list args;
+#ifdef _KERNEL
+ /* Temporarily hide too verbose printfs. */
+ if (!bootverbose)
+ return;
+#endif
/*
* Removed ModuleName, LineNumber, and acpica version, not needed
==== //depot/projects/trustedbsd/priv/sys/contrib/opensolaris/uts/common/fs/zfs/arc.c#2 (text+ko) ====
@@ -124,8 +124,6 @@
#include <sys/kstat.h>
#include <sys/sdt.h>
-#define ARC_FREE_AT_ONCE 4194304
-
static kmutex_t arc_reclaim_thr_lock;
static kcondvar_t arc_reclaim_thr_cv; /* used to signal reclaim thr */
static uint8_t arc_thread_exit;
@@ -154,7 +152,6 @@
*/
u_long zfs_arc_max;
u_long zfs_arc_min;
-#ifdef _KERNEL
TUNABLE_ULONG("vfs.zfs.arc_max", &zfs_arc_max);
TUNABLE_ULONG("vfs.zfs.arc_min", &zfs_arc_min);
SYSCTL_DECL(_vfs_zfs);
@@ -162,7 +159,6 @@
"Maximum ARC size");
SYSCTL_ULONG(_vfs_zfs, OID_AUTO, arc_min, CTLFLAG_RD, &zfs_arc_min, 0,
"Minimum ARC size");
-#endif
/*
* Note that buffers can be on one of 5 states:
@@ -1443,7 +1439,7 @@
return (1);
#endif
#else
- if (kmem_map->size > (vm_kmem_size * 3) / 4)
+ if (kmem_used() > kmem_size() / 2)
return (1);
#endif
@@ -2686,17 +2682,21 @@
return (0);
}
+static kmutex_t arc_lowmem_lock;
#ifdef _KERNEL
-static eventhandler_tag zfs_event_lowmem = NULL;
+static eventhandler_tag arc_event_lowmem = NULL;
static void
-zfs_lowmem(void *arg __unused, int howto __unused)
+arc_lowmem(void *arg __unused, int howto __unused)
{
+ /* Serialize access via arc_lowmem_lock. */
+ mutex_enter(&arc_lowmem_lock);
zfs_needfree = 1;
cv_signal(&arc_reclaim_thr_cv);
while (zfs_needfree)
tsleep(&zfs_needfree, 0, "zfs:lowmem", hz / 5);
+ mutex_exit(&arc_lowmem_lock);
}
#endif
@@ -2705,12 +2705,13 @@
{
mutex_init(&arc_reclaim_thr_lock, NULL, MUTEX_DEFAULT, NULL);
cv_init(&arc_reclaim_thr_cv, NULL, CV_DEFAULT, NULL);
+ mutex_init(&arc_lowmem_lock, NULL, MUTEX_DEFAULT, NULL);
/* Convert seconds to clock ticks */
arc_min_prefetch_lifespan = 1 * hz;
/* Start out with 1/8 of all memory */
- arc_c = physmem * PAGESIZE / 8;
+ arc_c = kmem_size() / 8;
#if 0
#ifdef _KERNEL
/*
>>> TRUNCATED FOR MAIL (1000 lines) <<<
More information about the p4-projects
mailing list