Date: Wed, 11 Apr 2007 15:02:46 GMT From: Robert Watson <rwatson@FreeBSD.org> To: Perforce Change Reviews <perforce@freebsd.org> Subject: PERFORCE change 117902 for review Message-ID: <200704111502.l3BF2kg8087773@repoman.freebsd.org>
next in thread | raw e-mail | index | archive | help
http://perforce.freebsd.org/chv.cgi?CH=117902 Change 117902 by rwatson@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) <<<
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200704111502.l3BF2kg8087773>
