From owner-p4-projects@FreeBSD.ORG Fri May 21 15:32:20 2010 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id B6D571065675; Fri, 21 May 2010 15:32:20 +0000 (UTC) Delivered-To: perforce@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 6F5AB106566B for ; Fri, 21 May 2010 15:32:20 +0000 (UTC) (envelope-from mav@freebsd.org) Received: from repoman.freebsd.org (unknown [IPv6:2001:4f8:fff6::29]) by mx1.freebsd.org (Postfix) with ESMTP id 5BDA98FC0C for ; Fri, 21 May 2010 15:32:20 +0000 (UTC) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.14.3/8.14.3) with ESMTP id o4LFWK8U043828 for ; Fri, 21 May 2010 15:32:20 GMT (envelope-from mav@freebsd.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.14.3/8.14.3/Submit) id o4LFWK9m043826 for perforce@freebsd.org; Fri, 21 May 2010 15:32:20 GMT (envelope-from mav@freebsd.org) Date: Fri, 21 May 2010 15:32:20 GMT Message-Id: <201005211532.o4LFWK9m043826@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to mav@freebsd.org using -f From: Alexander Motin To: Perforce Change Reviews Precedence: bulk Cc: Subject: PERFORCE change 178589 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 21 May 2010 15:32:21 -0000 http://p4web.freebsd.org/@@178589?ac=10 Change 178589 by mav@mav_mavtest on 2010/05/21 15:31:59 IFC Affected files ... .. //depot/projects/scottl-camlock/src/Makefile.inc1#21 integrate .. //depot/projects/scottl-camlock/src/contrib/bind9/CHANGES#9 integrate .. //depot/projects/scottl-camlock/src/contrib/bind9/lib/dns/api#7 integrate .. //depot/projects/scottl-camlock/src/contrib/bind9/lib/dns/validator.c#7 integrate .. //depot/projects/scottl-camlock/src/contrib/bind9/version#9 integrate .. //depot/projects/scottl-camlock/src/lib/libmagic/Makefile#5 integrate .. //depot/projects/scottl-camlock/src/lib/libmagic/config.h#3 integrate .. //depot/projects/scottl-camlock/src/share/man/man4/mvs.4#3 integrate .. //depot/projects/scottl-camlock/src/share/man/man8/nanobsd.8#3 integrate .. //depot/projects/scottl-camlock/src/share/misc/bsd-family-tree#10 integrate .. //depot/projects/scottl-camlock/src/share/misc/committers-src.dot#14 integrate .. //depot/projects/scottl-camlock/src/sys/cam/ata/ata_da.c#53 integrate .. //depot/projects/scottl-camlock/src/sys/cam/ata/ata_xpt.c#90 integrate .. //depot/projects/scottl-camlock/src/sys/cam/scsi/scsi_xpt.c#31 integrate .. //depot/projects/scottl-camlock/src/sys/cddl/compat/opensolaris/sys/taskq.h#4 branch .. //depot/projects/scottl-camlock/src/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/arc.c#11 integrate .. //depot/projects/scottl-camlock/src/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dbuf.c#5 integrate .. //depot/projects/scottl-camlock/src/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu_traverse.c#4 integrate .. //depot/projects/scottl-camlock/src/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dnode.c#5 integrate .. //depot/projects/scottl-camlock/src/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/metaslab.c#3 integrate .. //depot/projects/scottl-camlock/src/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/space_map.c#3 integrate .. //depot/projects/scottl-camlock/src/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/arc.h#5 integrate .. //depot/projects/scottl-camlock/src/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/vdev.h#3 integrate .. //depot/projects/scottl-camlock/src/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/txg.c#5 integrate .. //depot/projects/scottl-camlock/src/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev.c#4 integrate .. //depot/projects/scottl-camlock/src/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_ioctl.c#11 integrate .. //depot/projects/scottl-camlock/src/sys/conf/files.sparc64#22 integrate .. //depot/projects/scottl-camlock/src/sys/dev/ahci/ahci.c#113 integrate .. //depot/projects/scottl-camlock/src/sys/dev/ata/ata-all.c#55 integrate .. //depot/projects/scottl-camlock/src/sys/dev/ata/ata-disk.c#26 integrate .. //depot/projects/scottl-camlock/src/sys/dev/cxgb/cxgb_main.c#20 integrate .. //depot/projects/scottl-camlock/src/sys/dev/e1000/if_igb.c#21 integrate .. //depot/projects/scottl-camlock/src/sys/dev/mvs/mvs.c#23 integrate .. //depot/projects/scottl-camlock/src/sys/dev/mvs/mvs.h#13 integrate .. //depot/projects/scottl-camlock/src/sys/dev/mvs/mvs_if.m#3 integrate .. //depot/projects/scottl-camlock/src/sys/dev/mvs/mvs_pci.c#6 integrate .. //depot/projects/scottl-camlock/src/sys/dev/mvs/mvs_soc.c#6 integrate .. //depot/projects/scottl-camlock/src/sys/dev/puc/pucdata.c#16 integrate .. //depot/projects/scottl-camlock/src/sys/isa/atrtc.c#5 delete .. //depot/projects/scottl-camlock/src/sys/kern/sys_generic.c#22 integrate .. //depot/projects/scottl-camlock/src/sys/mips/rmi/dev/xlr/rge.c#5 integrate .. //depot/projects/scottl-camlock/src/sys/mips/rmi/on_chip.c#4 integrate .. //depot/projects/scottl-camlock/src/sys/mips/rmi/xlr_machdep.c#6 integrate .. //depot/projects/scottl-camlock/src/sys/mips/rmi/xlrconfig.h#3 integrate .. //depot/projects/scottl-camlock/src/sys/modules/mvs/Makefile#3 integrate .. //depot/projects/scottl-camlock/src/sys/pc98/include/md_var.h#3 integrate .. //depot/projects/scottl-camlock/src/sys/pc98/pc98/pc98_machdep.c#8 integrate .. //depot/projects/scottl-camlock/src/sys/powerpc/aim/ofw_machdep.c#8 integrate .. //depot/projects/scottl-camlock/src/sys/sparc64/include/md_var.h#6 integrate .. //depot/projects/scottl-camlock/src/sys/sparc64/include/nexusvar.h#4 branch .. //depot/projects/scottl-camlock/src/sys/sparc64/sparc64/ata_machdep.c#2 integrate .. //depot/projects/scottl-camlock/src/sys/vm/vm_fault.c#36 integrate .. //depot/projects/scottl-camlock/src/usr.bin/calendar/calendars/ru_RU.KOI8-R/calendar.common#3 integrate Differences ... ==== //depot/projects/scottl-camlock/src/Makefile.inc1#21 (text+ko) ==== @@ -1,5 +1,5 @@ # -# $FreeBSD: src/Makefile.inc1,v 1.647 2010/05/20 00:13:01 jkim Exp $ +# $FreeBSD: src/Makefile.inc1,v 1.650 2010/05/20 20:15:56 jkim Exp $ # # Make command line options: # -DNO_CLEANDIR run ${MAKE} clean, instead of ${MAKE} cleandir @@ -969,6 +969,7 @@ ${_groff} \ ${_ar} \ usr.bin/lorder \ + usr.bin/makewhatis \ ${_mklocale} \ usr.bin/rpcgen \ ${_sed} \ ==== //depot/projects/scottl-camlock/src/contrib/bind9/CHANGES#9 (text+ko) ==== @@ -1,3 +1,8 @@ + --- 9.6.2-P2 released --- + +2876. [bug] Named could return SERVFAIL for negative responses + from unsigned zones. [RT #21131] + --- 9.6.2-P1 released --- 2852. [bug] Handle broken DNSSEC trust chains better. [RT #15619] ==== //depot/projects/scottl-camlock/src/contrib/bind9/lib/dns/api#7 (text+ko) ==== @@ -1,3 +1,3 @@ LIBINTERFACE = 56 -LIBREVISION = 0 +LIBREVISION = 1 LIBAGE = 1 ==== //depot/projects/scottl-camlock/src/contrib/bind9/lib/dns/validator.c#7 (text+ko) ==== @@ -15,7 +15,7 @@ * PERFORMANCE OF THIS SOFTWARE. */ -/* $Id: validator.c,v 1.164.12.11.8.2 2010/02/25 10:57:12 tbox Exp $ */ +/* $Id: validator.c,v 1.164.12.11.8.3 2010/04/21 04:29:01 marka Exp $ */ #include @@ -2961,7 +2961,7 @@ } findnsec3proofs(val); - if (val->authcount == val->authfail) + if (val->authfail != 0 && val->authcount == val->authfail) return (DNS_R_BROKENCHAIN); validator_log(val, ISC_LOG_DEBUG(3), "nonexistence proof(s) not found"); ==== //depot/projects/scottl-camlock/src/contrib/bind9/version#9 (text+ko) ==== @@ -1,4 +1,4 @@ -# $Id: version,v 1.43.12.8.2.3 2010/03/04 00:08:28 marka Exp $ +# $Id: version,v 1.43.12.8.2.4 2010/05/10 02:07:03 marka Exp $ # # This file must follow /bin/sh rules. It is imported directly via # configure. @@ -7,4 +7,4 @@ MINORVER=6 PATCHVER=2 RELEASETYPE=-P -RELEASEVER=1 +RELEASEVER=2 ==== //depot/projects/scottl-camlock/src/lib/libmagic/Makefile#5 (text+ko) ==== @@ -1,4 +1,4 @@ -# $FreeBSD: src/lib/libmagic/Makefile,v 1.14 2010/01/02 09:58:07 ed Exp $ +# $FreeBSD: src/lib/libmagic/Makefile,v 1.15 2010/05/20 09:00:11 marius Exp $ # Copyright (c) David E. O'Brien, 2000-2004 CONTRDIR= ${.CURDIR}/../../contrib/file @@ -20,7 +20,7 @@ CFLAGS+= -DMAGIC='"${MAGICPATH}/magic"' -DHAVE_CONFIG_H CFLAGS+= -I${.CURDIR} -I${CONTRDIR} -WARNS?= 1 +WARNS?= 3 CLEANFILES+= magic magic.mgc ==== //depot/projects/scottl-camlock/src/lib/libmagic/config.h#3 (text+ko) ==== @@ -1,18 +1,18 @@ -/* $FreeBSD: src/lib/libmagic/config.h,v 1.9 2009/05/04 00:37:44 obrien Exp $ */ +/* $FreeBSD: src/lib/libmagic/config.h,v 1.10 2010/05/20 08:56:50 marius Exp $ */ /* config.h. Generated from config.h.in by configure. */ -/* config.h.in. Generated from configure.in by autoheader. */ +/* config.h.in. Generated from configure.ac by autoheader. */ -/* Use the builtin ELF recognition code */ +/* Define in built-in ELF support is used */ #define BUILTIN_ELF 1 -/* Recognize ELF core files */ +/* Define for ELF core file support */ #define ELFCORE 1 /* Define to 1 if you have the `asprintf' function. */ #define HAVE_ASPRINTF 1 -/* */ +/* HAVE_DAYLIGHT */ /* #undef HAVE_DAYLIGHT */ /* Define to 1 if you have the header file. */ @@ -51,9 +51,6 @@ /* Define to 1 if you have the header file. */ #define HAVE_LOCALE_H 1 -/* */ -#define HAVE_LONG_LONG 1 - /* Define to 1 if you have the `mbrtowc' function. */ #define HAVE_MBRTOWC 1 @@ -69,9 +66,6 @@ /* Define to 1 if you have the `mmap' function. */ #define HAVE_MMAP 1 -/* Define to 1 if you have the `snprintf' function. */ -#define HAVE_SNPRINTF 1 - /* Define to 1 if you have the header file. */ #define HAVE_STDINT_H 1 @@ -102,13 +96,12 @@ /* Define to 1 if you have the `strtoul' function. */ #define HAVE_STRTOUL 1 +/* HAVE_STRUCT_OPTION */ +#define HAVE_STRUCT_OPTION 1 + /* Define to 1 if `st_rdev' is member of `struct stat'. */ #define HAVE_STRUCT_STAT_ST_RDEV 1 -/* Define to 1 if your `struct stat' has `st_rdev'. Deprecated, use - `HAVE_STRUCT_STAT_ST_RDEV' instead. */ -#define HAVE_ST_RDEV 1 - /* Define to 1 if `tm_gmtoff' is member of `struct tm'. */ #define HAVE_STRUCT_TM_TM_GMTOFF 1 @@ -133,7 +126,7 @@ /* Define to 1 if you have that is POSIX.1 compatible. */ #define HAVE_SYS_WAIT_H 1 -/* */ +/* HAVE_TM_ISDST */ #define HAVE_TM_ISDST 1 /* HAVE_TM_ZONE */ @@ -169,9 +162,6 @@ /* Define to 1 if you have the `vasprintf' function. */ #define HAVE_VASPRINTF 1 -/* Define to 1 if you have the `vsnprintf' function. */ -#define HAVE_VSNPRINTF 1 - /* Define to 1 if you have the header file. */ #define HAVE_WCHAR_H 1 @@ -199,35 +189,23 @@ #define PACKAGE "file" /* Define to the address where bug reports for this package should be sent. */ -#define PACKAGE_BUGREPORT "" +#define PACKAGE_BUGREPORT "christos@astron.com" /* Define to the full name of this package. */ -#define PACKAGE_NAME "" +#define PACKAGE_NAME "file" /* Define to the full name and version of this package. */ -#define PACKAGE_STRING "" +#define PACKAGE_STRING "file 5.03" /* Define to the one symbol short name of this package. */ -#define PACKAGE_TARNAME "" +#define PACKAGE_TARNAME "file" /* Define to the version of this package. */ -#define PACKAGE_VERSION VERSION +#define PACKAGE_VERSION "5.03" -/* */ -#define SIZEOF_INT64_T 8 - -/* */ -#define SIZEOF_UINT16_T 2 - -/* */ -#define SIZEOF_UINT32_T 4 +/* The size of `long long', as computed by sizeof. */ +#define SIZEOF_LONG_LONG 8 -/* */ -#define SIZEOF_UINT64_T 8 - -/* */ -#define SIZEOF_UINT8_T 1 - /* Define to 1 if you have the ANSI C header files. */ #define STDC_HEADERS 1 @@ -235,7 +213,7 @@ /* #undef TM_IN_SYS_TIME */ /* Version number of package */ -#define VERSION "5.00" +#define VERSION "5.03" /* Number of bits in a file offset, on hosts where this is settable. */ /* #undef _FILE_OFFSET_BITS */ @@ -247,8 +225,49 @@ #endif #endif +/* Define to 1 to make fseeko visible on some hosts (e.g. glibc 2.2). */ +/* #undef _LARGEFILE_SOURCE */ + /* Define for large files, on AIX-style hosts. */ /* #undef _LARGE_FILES */ /* Define to empty if `const' does not conform to ANSI C. */ /* #undef const */ + +/* Define to a type if does not define. */ +/* #undef mbstate_t */ + +/* Define to `long int' if does not define. */ +/* #undef off_t */ + +/* Define to `unsigned int' if does not define. */ +/* #undef size_t */ + + +#ifndef HAVE_UINT8_T +typedef unsigned char uint8_t; +#endif +#ifndef HAVE_UINT16_T +typedef unsigned short uint16_t; +#endif +#ifndef HAVE_UINT32_T +typedef unsigned int uint32_t; +#endif +#ifndef HAVE_INT32_T +typedef int int32_t; +#endif +#ifndef HAVE_UINT64_T +#if SIZEOF_LONG_LONG == 8 +typedef unsigned long long uint64_t; +#else +typedef unsigned long uint64_t; +#endif +#endif +#ifndef HAVE_INT64_T +#if SIZEOF_LONG_LONG == 8 +typedef long long int64_t; +#else +typedef long int64_t; +#endif +#endif + ==== //depot/projects/scottl-camlock/src/share/man/man4/mvs.4#3 (text+ko) ==== ==== //depot/projects/scottl-camlock/src/share/man/man8/nanobsd.8#3 (text+ko) ==== @@ -22,9 +22,9 @@ .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" -.\" $FreeBSD: src/share/man/man8/nanobsd.8,v 1.5 2009/03/16 15:54:21 sam Exp $ +.\" $FreeBSD: src/share/man/man8/nanobsd.8,v 1.6 2010/05/20 18:39:33 wxs Exp $ .\" -.Dd March 16, 2009 +.Dd May 20, 2010 .Dt NANOBSD 8 .Os .Sh NAME @@ -203,6 +203,9 @@ Path to the source tree used to build the image. .It Va NANO_KERNEL Name of the kernel configuration file used to build the kernel. +.It Va NANO_ARCH +Machine processor architecture to build. Defaults to output of +.Cm uname -p . .It Va NANO_BOOT0CFG Controls the options passed to .Xr boot0cfg 8 ; ==== //depot/projects/scottl-camlock/src/share/misc/bsd-family-tree#10 (text+ko) ==== @@ -235,7 +235,7 @@ *--FreeBSD | | | | | | 8.0 | | | | | | | FreeBSD | | | | - | V 7.3 | | | | + | V 7.3 | | | DragonFly 2.6.0 | | | OpenBSD 4.7 | | | | | | FreeBSD 9 -current | NetBSD -current OpenBSD -current | @@ -513,6 +513,7 @@ OpenBSD 4.6 2009-10-18 [OBD] FreeBSD 8.0 2009-11-26 [FBD] FreeBSD 7.3 2010-03-23 [FBD] +DragonFly 2.6.0 2010-03-28 [DFB] OpenBSD 4.7 2010-05-19 [OBD] Bibliography @@ -574,4 +575,4 @@ Copyright (c) 1997-2007 Wolfram Schneider URL: http://cvsweb.freebsd.org/src/share/misc/bsd-family-tree -$FreeBSD: src/share/misc/bsd-family-tree,v 1.137 2010/05/20 05:03:02 maxim Exp $ +$FreeBSD: src/share/misc/bsd-family-tree,v 1.138 2010/05/20 08:07:25 maxim Exp $ ==== //depot/projects/scottl-camlock/src/share/misc/committers-src.dot#14 (text+ko) ==== @@ -1,4 +1,4 @@ -# $FreeBSD: src/share/misc/committers-src.dot,v 1.113 2010/04/21 20:05:49 anchie Exp $ +# $FreeBSD: src/share/misc/committers-src.dot,v 1.114 2010/05/20 17:30:55 jchandra Exp $ # This file is meant to list all FreeBSD src committers and describe the # mentor-mentee relationships between them. @@ -114,6 +114,7 @@ jh [label="Jaakko Heinonen\njh@FreeBSD.org\n2009/10/02"] jilles [label="Jilles Tjoelker\njilles@FreeBSD.org\n2009/05/22"] jinmei [label="JINMEI Tatuya\njinmei@FreeBSD.org\n2007/03/17"] +jchandra [label="Jayachandran C.\njchandra@FreeBSD.org\n2010/05/19"] jdp [label="John Polstra\njdp@FreeBSD.org\n????/??/??"] jhb [label="John Baldwin\njhb@FreeBSD.org\n1999/08/23"] jkh [label="Jordan K. Hubbard\njkh@FreeBSD.org\n1993/06/12"] @@ -423,6 +424,7 @@ rpaulo -> bschmidt rrs -> brucec +rrs -> jchandra rrs -> tuexen ru -> ceri ==== //depot/projects/scottl-camlock/src/sys/cam/ata/ata_da.c#53 (text+ko) ==== @@ -25,7 +25,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/cam/ata/ata_da.c,v 1.17 2010/04/26 12:03:55 mav Exp $"); +__FBSDID("$FreeBSD: src/sys/cam/ata/ata_da.c,v 1.18 2010/05/20 12:46:19 marius Exp $"); #include @@ -58,6 +58,8 @@ #include +#include /* geometry translation */ + #ifdef _KERNEL #define ATA_MAX_28BIT_LBA 268435455UL @@ -178,6 +180,13 @@ #define ADA_DEFAULT_SEND_ORDERED 1 #endif +/* + * Most platforms map firmware geometry to actual, but some don't. If + * not overridden, default to nothing. + */ +#ifndef ata_disk_firmware_geom_adjust +#define ata_disk_firmware_geom_adjust(disk) +#endif static int ada_retry_count = ADA_DEFAULT_RETRY; static int ada_default_timeout = ADA_DEFAULT_TIMEOUT; @@ -737,9 +746,9 @@ ata_logical_sector_offset(&cgd->ident_data)) % softc->disk->d_stripesize; } - /* XXX: these are not actually "firmware" values, so they may be wrong */ softc->disk->d_fwsectors = softc->params.secs_per_track; softc->disk->d_fwheads = softc->params.heads; + ata_disk_firmware_geom_adjust(softc->disk); disk_create(softc->disk, DISK_VERSION); mtx_lock(periph->sim->mtx); ==== //depot/projects/scottl-camlock/src/sys/cam/ata/ata_xpt.c#90 (text+ko) ==== @@ -25,7 +25,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/cam/ata/ata_xpt.c,v 1.30 2010/05/02 12:07:47 mav Exp $"); +__FBSDID("$FreeBSD: src/sys/cam/ata/ata_xpt.c,v 1.31 2010/05/20 12:44:06 marius Exp $"); #include #include @@ -44,10 +44,6 @@ #include #include -#ifdef PC98 -#include /* geometry translation */ -#endif - #include #include #include ==== //depot/projects/scottl-camlock/src/sys/cam/scsi/scsi_xpt.c#31 (text+ko) ==== @@ -28,7 +28,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/cam/scsi/scsi_xpt.c,v 1.9 2010/02/22 19:17:17 mav Exp $"); +__FBSDID("$FreeBSD: src/sys/cam/scsi/scsi_xpt.c,v 1.10 2010/05/20 12:44:06 marius Exp $"); #include #include @@ -47,10 +47,6 @@ #include #include -#ifdef PC98 -#include /* geometry translation */ -#endif - #include #include #include ==== //depot/projects/scottl-camlock/src/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/arc.c#11 (text+ko) ==== @@ -19,7 +19,7 @@ * CDDL HEADER END */ /* - * Copyright 2008 Sun Microsystems, Inc. All rights reserved. + * Copyright 2009 Sun Microsystems, Inc. All rights reserved. * Use is subject to license terms. */ @@ -152,14 +152,20 @@ /* number of seconds before growing cache again */ static int arc_grow_retry = 60; +/* shift of arc_c for calculating both min and max arc_p */ +static int arc_p_min_shift = 4; + +/* log2(fraction of arc to reclaim) */ +static int arc_shrink_shift = 5; + /* * minimum lifespan of a prefetch block in clock ticks * (initialized in arc_init()) */ static int arc_min_prefetch_lifespan; +static int arc_dead; extern int zfs_prefetch_disable; -static int arc_dead; /* * The arc has filled available memory and has now warmed up. @@ -173,6 +179,9 @@ uint64_t zfs_arc_min; uint64_t zfs_arc_meta_limit = 0; int zfs_mdcomp_disable = 0; +int zfs_arc_grow_retry = 0; +int zfs_arc_shrink_shift = 0; +int zfs_arc_p_min_shift = 0; TUNABLE_QUAD("vfs.zfs.arc_max", &zfs_arc_max); TUNABLE_QUAD("vfs.zfs.arc_min", &zfs_arc_min); @@ -277,6 +286,9 @@ kstat_named_t arcstat_recycle_miss; kstat_named_t arcstat_mutex_miss; kstat_named_t arcstat_evict_skip; + kstat_named_t arcstat_evict_l2_cached; + kstat_named_t arcstat_evict_l2_eligible; + kstat_named_t arcstat_evict_l2_ineligible; kstat_named_t arcstat_hash_elements; kstat_named_t arcstat_hash_elements_max; kstat_named_t arcstat_hash_collisions; @@ -288,10 +300,14 @@ kstat_named_t arcstat_c_max; kstat_named_t arcstat_size; kstat_named_t arcstat_hdr_size; + kstat_named_t arcstat_data_size; + kstat_named_t arcstat_other_size; kstat_named_t arcstat_l2_hits; kstat_named_t arcstat_l2_misses; kstat_named_t arcstat_l2_feeds; kstat_named_t arcstat_l2_rw_clash; + kstat_named_t arcstat_l2_read_bytes; + kstat_named_t arcstat_l2_write_bytes; kstat_named_t arcstat_l2_writes_sent; kstat_named_t arcstat_l2_writes_done; kstat_named_t arcstat_l2_writes_error; @@ -341,6 +357,9 @@ { "recycle_miss", KSTAT_DATA_UINT64 }, { "mutex_miss", KSTAT_DATA_UINT64 }, { "evict_skip", KSTAT_DATA_UINT64 }, + { "evict_l2_cached", KSTAT_DATA_UINT64 }, + { "evict_l2_eligible", KSTAT_DATA_UINT64 }, + { "evict_l2_ineligible", KSTAT_DATA_UINT64 }, { "hash_elements", KSTAT_DATA_UINT64 }, { "hash_elements_max", KSTAT_DATA_UINT64 }, { "hash_collisions", KSTAT_DATA_UINT64 }, @@ -352,10 +371,14 @@ { "c_max", KSTAT_DATA_UINT64 }, { "size", KSTAT_DATA_UINT64 }, { "hdr_size", KSTAT_DATA_UINT64 }, + { "data_size", KSTAT_DATA_UINT64 }, + { "other_size", KSTAT_DATA_UINT64 }, { "l2_hits", KSTAT_DATA_UINT64 }, { "l2_misses", KSTAT_DATA_UINT64 }, { "l2_feeds", KSTAT_DATA_UINT64 }, { "l2_rw_clash", KSTAT_DATA_UINT64 }, + { "l2_read_bytes", KSTAT_DATA_UINT64 }, + { "l2_write_bytes", KSTAT_DATA_UINT64 }, { "l2_writes_sent", KSTAT_DATA_UINT64 }, { "l2_writes_done", KSTAT_DATA_UINT64 }, { "l2_writes_error", KSTAT_DATA_UINT64 }, @@ -519,6 +542,8 @@ static int arc_evict_needed(arc_buf_contents_t type); static void arc_evict_ghost(arc_state_t *state, spa_t *spa, int64_t bytes); +static boolean_t l2arc_write_eligible(spa_t *spa, arc_buf_hdr_t *ab); + #define GHOST_STATE(state) \ ((state) == arc_mru_ghost || (state) == arc_mfu_ghost || \ (state) == arc_l2c_only) @@ -546,6 +571,7 @@ #define HDR_IN_HASH_TABLE(hdr) ((hdr)->b_flags & ARC_IN_HASH_TABLE) #define HDR_IO_IN_PROGRESS(hdr) ((hdr)->b_flags & ARC_IO_IN_PROGRESS) #define HDR_IO_ERROR(hdr) ((hdr)->b_flags & ARC_IO_ERROR) +#define HDR_PREFETCH(hdr) ((hdr)->b_flags & ARC_PREFETCH) #define HDR_FREED_IN_READ(hdr) ((hdr)->b_flags & ARC_FREED_IN_READ) #define HDR_BUF_AVAILABLE(hdr) ((hdr)->b_flags & ARC_BUF_AVAILABLE) #define HDR_FREE_IN_PROGRESS(hdr) ((hdr)->b_flags & ARC_FREE_IN_PROGRESS) @@ -603,10 +629,10 @@ * Level 2 ARC */ -#define L2ARC_WRITE_SIZE (64 * 1024 * 1024) /* initial write max */ -#define L2ARC_HEADROOM 128 /* num of writes */ -#define L2ARC_FEED_SECS 1 /* caching interval */ -#define L2ARC_FEED_SECS_SHIFT 1 /* caching interval shift */ +#define L2ARC_WRITE_SIZE (8 * 1024 * 1024) /* initial write max */ +#define L2ARC_HEADROOM 2 /* num of writes */ +#define L2ARC_FEED_SECS 1 /* caching interval secs */ +#define L2ARC_FEED_MIN_MS 200 /* min caching interval ms */ #define l2arc_writes_sent ARCSTAT(arcstat_l2_writes_sent) #define l2arc_writes_done ARCSTAT(arcstat_l2_writes_done) @@ -618,9 +644,10 @@ uint64_t l2arc_write_boost = L2ARC_WRITE_SIZE; /* extra write during warmup */ uint64_t l2arc_headroom = L2ARC_HEADROOM; /* number of dev writes */ uint64_t l2arc_feed_secs = L2ARC_FEED_SECS; /* interval seconds */ -uint64_t l2arc_feed_secs_shift = L2ARC_FEED_SECS_SHIFT; /* interval seconds shift */ +uint64_t l2arc_feed_min_ms = L2ARC_FEED_MIN_MS; /* min interval milliseconds */ boolean_t l2arc_noprefetch = B_FALSE; /* don't cache prefetch bufs */ - +boolean_t l2arc_feed_again = B_TRUE; /* turbo warmup */ +boolean_t l2arc_norw = B_TRUE; /* no reads during writes */ SYSCTL_QUAD(_vfs_zfs, OID_AUTO, l2arc_write_max, CTLFLAG_RW, &l2arc_write_max, 0, "max write size"); @@ -630,12 +657,15 @@ &l2arc_headroom, 0, "number of dev writes"); SYSCTL_QUAD(_vfs_zfs, OID_AUTO, l2arc_feed_secs, CTLFLAG_RW, &l2arc_feed_secs, 0, "interval seconds"); -SYSCTL_QUAD(_vfs_zfs, OID_AUTO, l2arc_feed_secs_shift, CTLFLAG_RW, - &l2arc_feed_secs_shift, 0, "power of 2 division of feed seconds"); +SYSCTL_QUAD(_vfs_zfs, OID_AUTO, l2arc_feed_min_ms, CTLFLAG_RW, + &l2arc_feed_min_ms, 0, "min interval milliseconds"); SYSCTL_INT(_vfs_zfs, OID_AUTO, l2arc_noprefetch, CTLFLAG_RW, &l2arc_noprefetch, 0, "don't cache prefetch bufs"); - +SYSCTL_INT(_vfs_zfs, OID_AUTO, l2arc_feed_again, CTLFLAG_RW, + &l2arc_feed_again, 0, "turbo warmup"); +SYSCTL_INT(_vfs_zfs, OID_AUTO, l2arc_norw, CTLFLAG_RW, + &l2arc_norw, 0, "no reads during writes"); SYSCTL_QUAD(_vfs_zfs, OID_AUTO, anon_size, CTLFLAG_RD, &ARC_anon.arcs_size, 0, "size of anonymous state"); @@ -692,6 +722,7 @@ uint64_t l2ad_end; /* last addr on device */ uint64_t l2ad_evict; /* last addr eviction reached */ boolean_t l2ad_first; /* first sweep through */ + boolean_t l2ad_writing; /* currently writing */ list_t *l2ad_buflist; /* buffer list */ list_node_t l2ad_node; /* device list node */ } l2arc_dev_t; @@ -722,7 +753,7 @@ struct l2arc_buf_hdr { /* protected by arc_buf_hdr mutex */ l2arc_dev_t *b_dev; /* L2ARC device */ - daddr_t b_daddr; /* disk address, offset byte */ + uint64_t b_daddr; /* disk address, offset byte */ }; typedef struct l2arc_data_free { @@ -890,8 +921,8 @@ refcount_create(&buf->b_refcnt); cv_init(&buf->b_cv, NULL, CV_DEFAULT, NULL); mutex_init(&buf->b_freeze_lock, NULL, MUTEX_DEFAULT, NULL); + arc_space_consume(sizeof (arc_buf_hdr_t), ARC_SPACE_HDRS); - ARCSTAT_INCR(arcstat_hdr_size, HDR_SIZE); return (0); } @@ -903,6 +934,8 @@ bzero(buf, sizeof (arc_buf_t)); rw_init(&buf->b_lock, NULL, RW_DEFAULT, NULL); + arc_space_consume(sizeof (arc_buf_t), ARC_SPACE_HDRS); + return (0); } @@ -919,8 +952,7 @@ refcount_destroy(&buf->b_refcnt); cv_destroy(&buf->b_cv); mutex_destroy(&buf->b_freeze_lock); - - ARCSTAT_INCR(arcstat_hdr_size, -HDR_SIZE); + arc_space_return(sizeof (arc_buf_hdr_t), ARC_SPACE_HDRS); } /* ARGSUSED */ @@ -930,6 +962,7 @@ arc_buf_t *buf = vbuf; rw_destroy(&buf->b_lock); + arc_space_return(sizeof (arc_buf_t), ARC_SPACE_HDRS); } /* @@ -1245,15 +1278,49 @@ } void -arc_space_consume(uint64_t space) +arc_space_consume(uint64_t space, arc_space_type_t type) { + ASSERT(type >= 0 && type < ARC_SPACE_NUMTYPES); + + switch (type) { + case ARC_SPACE_DATA: + ARCSTAT_INCR(arcstat_data_size, space); + break; + case ARC_SPACE_OTHER: + ARCSTAT_INCR(arcstat_other_size, space); + break; + case ARC_SPACE_HDRS: + ARCSTAT_INCR(arcstat_hdr_size, space); + break; + case ARC_SPACE_L2HDRS: + ARCSTAT_INCR(arcstat_l2_hdr_size, space); + break; + } + atomic_add_64(&arc_meta_used, space); atomic_add_64(&arc_size, space); } void -arc_space_return(uint64_t space) +arc_space_return(uint64_t space, arc_space_type_t type) { + ASSERT(type >= 0 && type < ARC_SPACE_NUMTYPES); + + switch (type) { + case ARC_SPACE_DATA: + ARCSTAT_INCR(arcstat_data_size, -space); + break; + case ARC_SPACE_OTHER: + ARCSTAT_INCR(arcstat_other_size, -space); + break; + case ARC_SPACE_HDRS: + ARCSTAT_INCR(arcstat_hdr_size, -space); + break; + case ARC_SPACE_L2HDRS: + ARCSTAT_INCR(arcstat_l2_hdr_size, -space); + break; + } + ASSERT(arc_meta_used >= space); if (arc_meta_max < arc_meta_used) arc_meta_max = arc_meta_used; @@ -1353,6 +1420,7 @@ ASSERT(hdr->b_state == arc_mru || hdr->b_state == arc_mfu); add_reference(hdr, hash_lock, tag); + DTRACE_PROBE1(arc__hit, arc_buf_hdr_t *, hdr); arc_access(hdr, hash_lock); mutex_exit(hash_lock); ARCSTAT_BUMP(arcstat_hits); @@ -1400,11 +1468,12 @@ if (type == ARC_BUFC_METADATA) { arc_buf_data_free(buf->b_hdr, zio_buf_free, buf->b_data, size); - arc_space_return(size); + arc_space_return(size, ARC_SPACE_DATA); } else { ASSERT(type == ARC_BUFC_DATA); arc_buf_data_free(buf->b_hdr, zio_data_buf_free, buf->b_data, size); + ARCSTAT_INCR(arcstat_data_size, -size); atomic_add_64(&arc_size, -size); } } @@ -1699,6 +1768,21 @@ buf->b_data == stolen, TRUE); } } + + if (ab->b_l2hdr) { + ARCSTAT_INCR(arcstat_evict_l2_cached, + ab->b_size); + } else { + if (l2arc_write_eligible(ab->b_spa, ab)) { + ARCSTAT_INCR(arcstat_evict_l2_eligible, + ab->b_size); + } else { + ARCSTAT_INCR( + arcstat_evict_l2_ineligible, + ab->b_size); + } + } + if (ab->b_datacnt == 0) { arc_change_state(evicted_state, ab, hash_lock); ASSERT(HDR_IN_HASH_TABLE(ab)); @@ -1871,61 +1955,63 @@ static void arc_adjust(void) { - int64_t top_sz, mru_over, arc_over, todelete; + int64_t adjustment, delta; + + /* + * Adjust MRU size + */ - top_sz = arc_anon->arcs_size + arc_mru->arcs_size + arc_meta_used; + adjustment = MIN(arc_size - arc_c, + arc_anon->arcs_size + arc_mru->arcs_size + arc_meta_used - arc_p); - if (top_sz > arc_p && arc_mru->arcs_lsize[ARC_BUFC_DATA] > 0) { - int64_t toevict = - MIN(arc_mru->arcs_lsize[ARC_BUFC_DATA], top_sz - arc_p); - (void) arc_evict(arc_mru, NULL, toevict, FALSE, ARC_BUFC_DATA); - top_sz = arc_anon->arcs_size + arc_mru->arcs_size; + if (adjustment > 0 && arc_mru->arcs_lsize[ARC_BUFC_DATA] > 0) { + delta = MIN(arc_mru->arcs_lsize[ARC_BUFC_DATA], adjustment); + (void) arc_evict(arc_mru, NULL, delta, FALSE, ARC_BUFC_DATA); + adjustment -= delta; } - if (top_sz > arc_p && arc_mru->arcs_lsize[ARC_BUFC_METADATA] > 0) { - int64_t toevict = - MIN(arc_mru->arcs_lsize[ARC_BUFC_METADATA], top_sz - arc_p); - (void) arc_evict(arc_mru, NULL, toevict, FALSE, + if (adjustment > 0 && arc_mru->arcs_lsize[ARC_BUFC_METADATA] > 0) { + delta = MIN(arc_mru->arcs_lsize[ARC_BUFC_METADATA], adjustment); + (void) arc_evict(arc_mru, NULL, delta, FALSE, ARC_BUFC_METADATA); - top_sz = arc_anon->arcs_size + arc_mru->arcs_size; } - mru_over = top_sz + arc_mru_ghost->arcs_size - arc_c; + /* + * Adjust MFU size + */ + + adjustment = arc_size - arc_c; + + if (adjustment > 0 && arc_mfu->arcs_lsize[ARC_BUFC_DATA] > 0) { + delta = MIN(adjustment, arc_mfu->arcs_lsize[ARC_BUFC_DATA]); + (void) arc_evict(arc_mfu, NULL, delta, FALSE, ARC_BUFC_DATA); + adjustment -= delta; + } - if (mru_over > 0) { - if (arc_mru_ghost->arcs_size > 0) { - todelete = MIN(arc_mru_ghost->arcs_size, mru_over); - arc_evict_ghost(arc_mru_ghost, NULL, todelete); - } + if (adjustment > 0 && arc_mfu->arcs_lsize[ARC_BUFC_METADATA] > 0) { + int64_t delta = MIN(adjustment, + arc_mfu->arcs_lsize[ARC_BUFC_METADATA]); + (void) arc_evict(arc_mfu, NULL, delta, FALSE, + ARC_BUFC_METADATA); } - if ((arc_over = arc_size - arc_c) > 0) { - int64_t tbl_over; + /* + * Adjust ghost lists + */ - if (arc_mfu->arcs_lsize[ARC_BUFC_DATA] > 0) { - int64_t toevict = - MIN(arc_mfu->arcs_lsize[ARC_BUFC_DATA], arc_over); - (void) arc_evict(arc_mfu, NULL, toevict, FALSE, - ARC_BUFC_DATA); - arc_over = arc_size - arc_c; - } + adjustment = arc_mru->arcs_size + arc_mru_ghost->arcs_size - arc_c; - if (arc_over > 0 && - arc_mfu->arcs_lsize[ARC_BUFC_METADATA] > 0) { - int64_t toevict = - MIN(arc_mfu->arcs_lsize[ARC_BUFC_METADATA], - arc_over); - (void) arc_evict(arc_mfu, NULL, toevict, FALSE, - ARC_BUFC_METADATA); - } + if (adjustment > 0 && arc_mru_ghost->arcs_size > 0) { + delta = MIN(arc_mru_ghost->arcs_size, adjustment); + arc_evict_ghost(arc_mru_ghost, NULL, delta); + } - tbl_over = arc_size + arc_mru_ghost->arcs_size + - arc_mfu_ghost->arcs_size - arc_c * 2; + adjustment = + arc_mru_ghost->arcs_size + arc_mfu_ghost->arcs_size - arc_c; - if (tbl_over > 0 && arc_mfu_ghost->arcs_size > 0) { - todelete = MIN(arc_mfu_ghost->arcs_size, tbl_over); - arc_evict_ghost(arc_mfu_ghost, NULL, todelete); - } + if (adjustment > 0 && arc_mfu_ghost->arcs_size > 0) { + delta = MIN(arc_mfu_ghost->arcs_size, adjustment); + arc_evict_ghost(arc_mfu_ghost, NULL, delta); } } @@ -1999,8 +2085,6 @@ ASSERT(spa || arc_eviction_list == NULL); } -int arc_shrink_shift = 5; /* log2(fraction of arc to reclaim) */ - void arc_shrink(void) { @@ -2237,6 +2321,7 @@ arc_adapt(int bytes, arc_state_t *state) { int mult; + uint64_t arc_p_min = (arc_c >> arc_p_min_shift); if (state == arc_l2c_only) return; @@ -2254,12 +2339,15 @@ mult = ((arc_mru_ghost->arcs_size >= arc_mfu_ghost->arcs_size) ? 1 : (arc_mfu_ghost->arcs_size/arc_mru_ghost->arcs_size)); - arc_p = MIN(arc_c, arc_p + bytes * mult); + arc_p = MIN(arc_c - arc_p_min, arc_p + bytes * mult); } else if (state == arc_mfu_ghost) { + uint64_t delta; + mult = ((arc_mfu_ghost->arcs_size >= arc_mru_ghost->arcs_size) ? 1 : (arc_mru_ghost->arcs_size/arc_mfu_ghost->arcs_size)); - arc_p = MAX(0, (int64_t)arc_p - bytes * mult); + delta = MIN(bytes * mult, arc_p); + arc_p = MAX(arc_p_min, arc_p - delta); } ASSERT((int64_t)arc_p >= 0); @@ -2359,10 +2447,11 @@ if (!arc_evict_needed(type)) { if (type == ARC_BUFC_METADATA) { buf->b_data = zio_buf_alloc(size); - arc_space_consume(size); + arc_space_consume(size, ARC_SPACE_DATA); } else { ASSERT(type == ARC_BUFC_DATA); buf->b_data = zio_data_buf_alloc(size); + ARCSTAT_INCR(arcstat_data_size, size); atomic_add_64(&arc_size, size); } goto out; @@ -2379,21 +2468,22 @@ if (state == arc_mru || state == arc_anon) { uint64_t mru_used = arc_anon->arcs_size + arc_mru->arcs_size; - state = (arc_mfu->arcs_lsize[type] > 0 && + state = (arc_mfu->arcs_lsize[type] >= size && arc_p > mru_used) ? arc_mfu : arc_mru; } else { /* MFU cases */ uint64_t mfu_space = arc_c - arc_p; - state = (arc_mru->arcs_lsize[type] > 0 && + state = (arc_mru->arcs_lsize[type] >= size && mfu_space > arc_mfu->arcs_size) ? arc_mru : arc_mfu; } if ((buf->b_data = arc_evict(state, NULL, size, TRUE, type)) == NULL) { if (type == ARC_BUFC_METADATA) { buf->b_data = zio_buf_alloc(size); - arc_space_consume(size); + arc_space_consume(size, ARC_SPACE_DATA); } else { ASSERT(type == ARC_BUFC_DATA); buf->b_data = zio_data_buf_alloc(size); + ARCSTAT_INCR(arcstat_data_size, size); atomic_add_64(&arc_size, size); } ARCSTAT_BUMP(arcstat_recycle_miss); @@ -2816,7 +2906,8 @@ uint64_t size = BP_GET_LSIZE(bp); arc_callback_t *acb; vdev_t *vd = NULL; >>> TRUNCATED FOR MAIL (1000 lines) <<<