PERFORCE change 178589 for review
Alexander Motin
mav at FreeBSD.org
Fri May 21 15:32:21 UTC 2010
http://p4web.freebsd.org/@@178589?ac=10
Change 178589 by mav at 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 <config.h>
@@ -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 <dlfcn.h> header file. */
@@ -51,9 +51,6 @@
/* Define to 1 if you have the <locale.h> 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 <stdint.h> 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 <sys/wait.h> 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 <wchar.h> 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 at 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 <wchar.h> does not define. */
+/* #undef mbstate_t */
+
+/* Define to `long int' if <sys/types.h> does not define. */
+/* #undef off_t */
+
+/* Define to `unsigned int' if <sys/types.h> 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 <wosch at FreeBSD.ORG>
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 at FreeBSD.org\n2009/10/02"]
jilles [label="Jilles Tjoelker\njilles at FreeBSD.org\n2009/05/22"]
jinmei [label="JINMEI Tatuya\njinmei at FreeBSD.org\n2007/03/17"]
+jchandra [label="Jayachandran C.\njchandra at FreeBSD.org\n2010/05/19"]
jdp [label="John Polstra\njdp at FreeBSD.org\n????/??/??"]
jhb [label="John Baldwin\njhb at FreeBSD.org\n1999/08/23"]
jkh [label="Jordan K. Hubbard\njkh at 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 <sys/cdefs.h>
-__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 <sys/param.h>
@@ -58,6 +58,8 @@
#include <cam/ata/ata_all.h>
+#include <machine/md_var.h> /* 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 <sys/cdefs.h>
-__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 <sys/param.h>
#include <sys/bus.h>
@@ -44,10 +44,6 @@
#include <sys/mutex.h>
#include <sys/sysctl.h>
-#ifdef PC98
-#include <pc98/pc98/pc98_machdep.h> /* geometry translation */
-#endif
-
#include <cam/cam.h>
#include <cam/cam_ccb.h>
#include <cam/cam_queue.h>
==== //depot/projects/scottl-camlock/src/sys/cam/scsi/scsi_xpt.c#31 (text+ko) ====
@@ -28,7 +28,7 @@
*/
#include <sys/cdefs.h>
-__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 <sys/param.h>
#include <sys/bus.h>
@@ -47,10 +47,6 @@
#include <sys/mutex.h>
#include <sys/sysctl.h>
-#ifdef PC98
-#include <pc98/pc98/pc98_machdep.h> /* geometry translation */
-#endif
-
#include <cam/cam.h>
#include <cam/cam_ccb.h>
#include <cam/cam_queue.h>
==== //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) <<<
More information about the p4-projects
mailing list